Most content (avatars, entities, etc) in High Fidelity references external resources such as textures, models, scripts, and materials. When a user encounters any content in the domain, they need to download the content’s resources. Many of these resources are not optimized and can take a while to download. Baking is the process of optimizing these resources to make them easier to transmit, store, and render, reducing load time significantly.
The Oven is a standalone application that is packaged as part of High Fidelity Client + Sandbox installer. Once installed, locate
oven.exe (Windows) or
With the oven, you can bake the following types of content:
|Textures||When you bake a texture, the resulting folder will contain a .texmeta.json file, various .ktx images, and the original texture. Baking might introduce some compression artifacts, but these are usually minor. Baking a texture produces mipmaps, which allow you to progressively load textures, and compresses the results. Baking large textures like skyboxes can take a while, but the benefits at runtime for everyone loading the skybox image will be significant. For the best experience, we recommend using PNG or JPEG (JPG) textures. However, we also support textures in following formats: TGA, TIF, and TIFF.|
|Materials||Baking a material will produce a .baked.json file and will also bake all of the textures in the material. Currently, we only support baking a material entity JSON file.|
|3D Models||Baking a model will produce a Draco compressed geometric mesh and will also bake all of the materials in the model. The mesh compression can slightly alter the geometry of the original model, but it is usually minor. Your output folder will contain a .baked.fst file, a .baked.fbx file (the original format of your model can be different), and a .baked.json file (materials). Because the baked materials JSON file references the baked texture files, all textures are removed from the .baked.fbx file. This JSON file is referenced in the materialMap field in the .baked.fst file. We support the following formats: FBX, OBJ, and FST (that points to a supported type).|
|Avatars||As avatars are 3D models, you can bake avatars with the same results as above. Use the resulting .baked.fst file to host and wear your baked avatar.|
The Oven has two different interfaces: an application and a command line interface. Use the one that best fits your needs.
Using the Oven Application¶
The Oven application has three baking options:
- Bake all assets in your domain
- Bake individual 3D models and avatars
- Bake skybox files
After you choose what you would like to bake, you’ll need to fill in some information:
|Domain Name||Domain||Enter your domain’s name.|
|Entities File||Domain||Upload a .json or .json.gz of the assets in your domain. This can be done by exporting your content to JSON.|
|Model File(s)||Model||Enter the file or URL path for your model file(s).|
|Skybox File(s)||Skybox||Enter the file or URL path for your skybox file(s).|
|Output Directory||Domain, Model, Skybox||This is where the baked content will be saved.|
|Destination URL Path||Domain||Enter the absolute paths of where your resources will be uploaded after baking. For example, if you store custom 3D models on a cloud hosting service, enter that URL here.|
|Re-bake Originals||Domain||Check if you want to re-bake any baked content that the oven finds in your content archive.|
After baking a domain, don’t forget to upload all baked content (3D models, skyboxes, etc.) to the URL specified for ‘Destination URL Path’. This ensures that all content will load correctly when you upload the baked content set to your domain.
Using the Commmand Line Interface¶
You can also use a command line interface instead of the GUI to bake single assets (not domains). We support the following attributes:
- i: Path to file that you would like to bake.
- o: Path to folder that will be used as the output directory.
- t: Type of asset. The value can be “model” (for any model type) and “material” (for a material JSON description). For textures, the values differ based on the type of texture you want to bake, such as default, strict, albedo, normal, bump, specular, metallic, roughness, gloss, emissive, cube (same as skybox), skybox, ambient, occlusion, scattering, and lightmap.
- disable-texture-compression: Disables texture compression for any type. Use this only if the texture compression is introducing too many artifacts.
To bake a 3D model through the Oven’s command line interface:
>> oven.exe -i %path to model% -o %output directory% -t model
To bake a material through the Oven’s command line interface:
>> oven.exe -i %path to material json% -o %output directory% -t material