Documentation
Docs/en/reference/model-format/assets.md
Model Assets And Limits
Generated reference. Do not edit directly. Update
BuildTools/ModelFormatInterface.json, then runpython BuildTools/docs_model_format.py --write.
| Index | Syntax | Tokens | Composition | Assets | Animation | Validation | Canonical JSON | Guide |
ModelMeshBaker bakes mesh sources before ModelInfoBaker validates and serializes concrete .fo3d descriptions.
Asset inputs
| Stable ID | Asset | Extensions | Purpose | Requirements | Source |
|---|---|---|---|---|---|
model-format.asset.fbx |
FBX mesh | .fbx |
Imports the drawable hierarchy, material texture names, and skin data for the mesh payload, while ModelSourceLoader extracts the source skeleton and animation clips that ModelInfoBaker converts into the required runtime rig. | faces must be triangulatable and the imported face count must agree with the generated triangle count skin clusters must fit FO_MODEL_MAX_BONES mesh skin references must resolve against the physical mesh hierarchy source skeletons and clips must pass finite-value, hierarchy, count, key, and compatibility validation before conversion |
Source/Tools/ModelMeshBaker.cpp, Source/Tools/ModelSourceLoader.cpp |
model-format.asset.obj |
OBJ mesh | .obj |
Imports a static hierarchy and drawable mesh through the same ufbx path; missing vertex attributes receive deterministic defaults. | the file must contain at least one drawable mesh for use as a concrete model OBJ is suitable for static attachments and cut volumes, not authored skeletal animation stacks |
Source/Tools/ModelMeshBaker.cpp, Source/Tests/Test_ModelBaker.cpp |
model-format.asset.description |
Model description | .fo3d |
Composes a primary baked mesh with layer-selected root modifiers, child models, particles, materials, effects, cuts, and animation mappings. | every concrete description must resolve a Model directive files whose basename starts with TEMPLATE_ are include-only and are not emitted as models |
Source/Tools/ModelInfoBaker.cpp |
model-format.asset.texture |
Model texture | .png, .tga, .dds |
Default diffuse textures and explicit non-Parent Texture values resolve relative to the owning baked mesh file. | every imported default diffuse texture must exist in baked resources an explicit texture target mesh must be drawable |
Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelHierarchy.cpp |
model-format.asset.effect |
Model effect | .fofx |
An explicit non-Parent Effect value is a baked-resource path loaded for EffectUsage::Model. | the effect resource must exist an explicit effect target mesh must be drawable |
Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelHierarchy.cpp |
model-format.asset.particle |
Particle attachment | .spk, .efk |
A layer-selected AttachParticles entry instantiates a baked SPARK or Effekseer particle resource on a model bone while that layer value remains active. | the particle resource must exist in baked resources reference the baked .spk or .efk path, not its .spark or .efkproj authoring source author a non-empty Link bone; runtime particle creation requires it |
Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
Compile-time limits
The defaults above come from the generated project-interface contract. A project may override them, but client binaries, baked resources, model layer properties, shaders, and packaged content must agree.