Phase 2 updates

Phase 2 · Slice 5 ·

FBX import, Resources and Instantiate

  • FBX (tassix_import, through ufbx): binary and ASCII FBX (and OBJ) converted as Unity's ModelImporter does with default settings: X mirrored and winding swapped, the axis system converted by a rotation on the top-level nodes only, file units to meters, vertices welded on (position, normal, UV), one mesh per node named after it with a submesh per material, children sorted by name, a single top node becoming the prefab root, Standard materials (diffuse color, opacity as Transparent mode, diffuse texture found next to the file or in Textures/). The fbx_import scenario (290 checks against Unity 6000.2's importer, on a generated Z-up scene in meters and a Kenney model in centimeters) passes, including Unity's welded vertex counts.
  • Resources: Resources.Load/Load<T>/LoadAll<T> from Resources folders (next to the scene, the conformance suite, TASSIX_RESOURCE_ROOTS): models as prefab GameObjects (asset roots outside the scene that never run scripts), PNG/JPEG as Texture2D, text files as TextAsset. Scene fields can reference them as {"resource": "cars/sedan"}.
  • Object.Instantiate: GameObjects with their hierarchy, components, Materials and Meshes, with all overloads. Built-in components copy their state; MonoBehaviours copy Unity's serialized fields (public or [SerializeField]; Lists, arrays and [Serializable] classes deep-copied; no other generics or .NET types), references inside the clone remap to the clones; the clone activates last so Awake/OnEnable see the fields. The instantiate scenario (38 checks) passes.
  • glTF now shares the model builder with FBX (ImportedModel in CoreModule); glTFast's GltfImport is a thin layer over it.
  • Sample: dotnet/samples/scenes/showroom.json loads Kenney Car Kit FBX models (CC0) with Resources.Load and Instantiate.
  • Not yet: FBX animation and skinning (skinned meshes draw in bind pose), embedded FBX textures, import settings from .meta files (Phase 4).
  • Next: sprite batching across textures (atlases), texture sharing across imported files, reducing wgpu's per-frame allocations, then Phase 3 (physics, input, prefabs in scenes).