champions-of-luneraria/Assets/Luneraria/Art/Units/s03.export.json
Martin Stickelbroeck 3ca38a8443 U2 Batch Asset Import
Alle 86 Modelle der Godot-Referenz laufen durch die Blender→FBX-Pipeline
(nach bestandenem Vertical Function Test); jede Einheit zeigt ihr eigenes
Modell.

- Exportmanifest aus den Godot-Manifesten (tools/blender/make_manifest.py):
  Units, Enemies, Props, Characters, Peoples, Buildings, Environment; die
  drei Vergleichs-GLBs als Aliase. Neu in der Pipeline: Tangenten berechnet
  Unity mit MikkTSpace, Generatoren laufen in einer temporären Kopie, die
  Grüne Kluft wird wie das GLB zusammengefasst, Texturen kommen mit.
  1.616 Blender- und 1.247 Unity-Prüfungen grün, zwei Exportläufe
  byteidentisch; Kontaktbögen je Gruppe.
- Einheitenbibliothek nach Godots AssetLibrary: 70 Einträge der
  Einheitengruppen, Figuren mit Skelett ersetzen das starre Modell ihrer ID.
  Starre Modelle werden zur Laufzeit je Material zusammengefasst; Controller
  werden an Ort und Stelle aktualisiert.
- Tests mit allen Modellen: EditMode 11/11, PlayMode 2/2. Vertical Function
  Test Seed 2 DCE95C96556F3A1A und Seed 9 ab Runde 21 7B8E43AEFC0D60C5,
  beide gleich dem Kern (Nachweise mit LUNE_EVIDENCE=u2a-batch; die Belege
  von U2C und U2D bleiben unverändert).
- macOS-Player mit allen Modellen: 158-160 fps in der Übersicht
  (116 Einheiten), 205-207 fps auf der Mid-Lane; Haupt- und Render-Thread
  etwa doppelt so lang wie mit dem Platzhalter, Present-Ausreißer kürzer.
- Befund iCloud Drive: Konfliktkopien ("Name 2.ext") im Build-Cache ließen
  den Build die Einheitenbibliothek mit altem Feldlayout schreiben; der
  Player meldete sharedassets0.assets als beschädigt. LunePlayerBuild
  entfernt solche Kopien vor dem Build und bricht ab, wenn während des
  Builds neue entstehen. Bereits committete Kopien: Controller-Duplikate und
  World/Generated 2.meta entfernt, drei U2D-Benchmarkläufe als -run1 bis
  -run3 benannt.
- Dokumentation: U2-WORLD (Batch-Import), PORT-STATUS (Entscheidungen:
  Modelle direkt in Git, Projektort außerhalb von iCloud Drive), PORT-QA.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 19:10:35 +02:00

893 lines
15 KiB
JSON

{
"id": "s03",
"group": "Units",
"source": "assets-source/phase4/blend/s03.blend",
"exporter_version": 10,
"blender": "5.2.2 LTS",
"fbx_settings": {
"use_selection": true,
"use_visible": false,
"use_active_collection": false,
"global_scale": 1.0,
"apply_unit_scale": true,
"apply_scale_options": "FBX_SCALE_UNITS",
"axis_forward": "Y",
"axis_up": "Z",
"bake_space_transform": false,
"object_types": [
"ARMATURE",
"EMPTY",
"MESH"
],
"use_mesh_modifiers": true,
"use_mesh_modifiers_render": true,
"mesh_smooth_type": "OFF",
"use_subsurf": false,
"use_mesh_edges": false,
"use_tspace": false,
"use_triangles": false,
"colors_type": "LINEAR",
"prioritize_active_color": true,
"use_custom_props": false,
"add_leaf_bones": false,
"primary_bone_axis": "Y",
"secondary_bone_axis": "X",
"use_armature_deform_only": true,
"armature_nodetype": "NULL",
"bake_anim": true,
"bake_anim_use_all_bones": true,
"bake_anim_use_nla_strips": false,
"bake_anim_use_all_actions": true,
"bake_anim_force_startend_keying": true,
"bake_anim_step": 1.0,
"bake_anim_simplify_factor": 0.0,
"path_mode": "STRIP",
"embed_textures": false,
"batch_mode": "OFF"
},
"checks": [
{
"check": "logical_names_unique",
"ok": true,
"detail": "[]"
},
{
"check": "turn_applied",
"ok": true,
"detail": "[]"
},
{
"check": "units_metric",
"ok": true,
"detail": "METRIC"
},
{
"check": "unit_scale_1",
"ok": true,
"detail": "1.0"
},
{
"check": "no_negative_scale",
"ok": true,
"detail": "{}"
},
{
"check": "object_scale_1",
"ok": true,
"detail": "{}"
},
{
"check": "mesh_names_unique",
"ok": true,
"detail": "['ArmL_Glove', 'ArmL_Lower', 'ArmL_Upper', 'ArmR_Glove', 'ArmR_Lower', 'ArmR_Upper', 'Body_CreamStole1', 'Body_CreamStole_1', 'Body_LongRobe', 'Body_RaggedCloak1', 'Body_RaggedCloak_1', 'Body_Scarf', 'Head_Eye1', 'Head_Eye_1', 'Head_HoodBack', 'Head_HoodRim', 'Head_Visor', 'Head_VisorSlit', 'Weapon_Trumpet']"
},
{
"check": "material_slots_filled",
"ok": true,
"detail": "{}"
},
{
"check": "normals_unit_length",
"ok": true,
"detail": "{}"
},
{
"check": "no_blend_shapes",
"ok": true,
"detail": "{}"
},
{
"check": "triangles_match_godot",
"ok": true,
"detail": "7832 fbx / 7832 godot"
},
{
"check": "part_names_match_godot",
"ok": true,
"detail": "[]"
},
{
"check": "bounds_match_godot",
"ok": true,
"detail": "largest difference 0.00005 m"
},
{
"check": "no_armature",
"ok": true,
"detail": "[]"
},
{
"check": "forward_marker_unity_plus_z",
"ok": true,
"detail": "[0.0, 0.0, 0.75]"
},
{
"check": "roundtrip_mesh_names",
"ok": true,
"detail": "[]"
},
{
"check": "roundtrip_triangles",
"ok": true,
"detail": "7832 / 7832"
},
{
"check": "roundtrip_materials",
"ok": true,
"detail": "[]"
}
],
"source_sha256": "126b76a8528c0b42daf2855a1accf6c8caab3fc8aa54992d3156f45e7ef4ce67",
"removed_modifiers": 0,
"logical_names": {
"objects": 21,
"materials": 5,
"merged_materials": 0
},
"kind": "rigid",
"fps": 24.0,
"objects": 21,
"meshes": {
"Body_LongRobe": {
"mesh": "Body_LongRobe_Mesh",
"triangles": 560,
"vertices": 282,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.2865,
0.0,
-0.4181
],
"max": [
0.4625,
0.9531,
0.2976
]
}
},
"Head_HoodBack": {
"mesh": "Head_HoodBack_Mesh",
"triangles": 476,
"vertices": 240,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.0577,
0.9339,
-0.1897
],
"max": [
0.2338,
1.3266,
0.0524
]
}
},
"Head_Visor": {
"mesh": "Head_Visor_Mesh",
"triangles": 286,
"vertices": 145,
"ngons": 0,
"materials": [
"SW_neutral_light_D8D2BF"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.012,
0.991,
-0.0054
],
"max": [
0.1881,
1.2861,
0.1279
]
}
},
"Head_Eye_1": {
"mesh": "Head_Eye_1_Mesh",
"triangles": 142,
"vertices": 73,
"ngons": 0,
"materials": [
"SW_neutral_shadow_202832"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
0.1006,
1.1416,
0.1254
],
"max": [
0.1602,
1.1665,
0.1397
]
}
},
"Head_Eye1": {
"mesh": "Head_Eye1_Mesh",
"triangles": 142,
"vertices": 73,
"ngons": 0,
"materials": [
"SW_neutral_shadow_202832"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
0.0158,
1.1416,
0.1254
],
"max": [
0.0754,
1.1665,
0.1397
]
}
},
"Head_VisorSlit": {
"mesh": "Head_VisorSlit_Mesh",
"triangles": 188,
"vertices": 96,
"ngons": 0,
"materials": [
"SW_neutral_shadow_202832"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
0.0779,
1.0164,
0.1237
],
"max": [
0.0981,
1.1429,
0.1439
]
}
},
"Head_HoodRim": {
"mesh": "Head_HoodRim_Mesh",
"triangles": 812,
"vertices": 408,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.065,
1.0006,
0.0053
],
"max": [
0.2666,
1.4,
0.1521
]
}
},
"Body_Scarf": {
"mesh": "Body_Scarf_Mesh",
"triangles": 380,
"vertices": 192,
"ngons": 0,
"materials": [
"SW_neutral_accent_9578CF"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.0756,
0.8863,
-0.0359
],
"max": [
0.2565,
0.9979,
0.1237
]
}
},
"Body_CreamStole_1": {
"mesh": "Body_CreamStole_1_Mesh",
"triangles": 268,
"vertices": 136,
"ngons": 0,
"materials": [
"SW_neutral_light_D8D2BF"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
0.1052,
0.0951,
0.1359
],
"max": [
0.223,
0.9025,
0.1929
]
}
},
"Body_RaggedCloak_1": {
"mesh": "Body_RaggedCloak_1_Mesh",
"triangles": 336,
"vertices": 170,
"ngons": 0,
"materials": [
"SW_neutral_accent_9578CF"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
0.1872,
0.0819,
-0.2147
],
"max": [
0.5925,
1.0009,
-0.0981
]
}
},
"Body_CreamStole1": {
"mesh": "Body_CreamStole1_Mesh",
"triangles": 268,
"vertices": 136,
"ngons": 0,
"materials": [
"SW_neutral_light_D8D2BF"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.0804,
0.0951,
0.1359
],
"max": [
0.0374,
0.9025,
0.1929
]
}
},
"Body_RaggedCloak1": {
"mesh": "Body_RaggedCloak1_Mesh",
"triangles": 368,
"vertices": 186,
"ngons": 0,
"materials": [
"SW_neutral_accent_9578CF"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.4265,
0.0759,
-0.2167
],
"max": [
-0.0176,
1.0027,
-0.0985
]
}
},
"ArmL_Upper": {
"mesh": "ArmL_Upper_Mesh",
"triangles": 284,
"vertices": 144,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
0.2037,
0.718,
-0.0744
],
"max": [
0.3434,
0.9268,
0.0552
]
}
},
"ArmL_Lower": {
"mesh": "ArmL_Lower_Mesh",
"triangles": 284,
"vertices": 144,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
0.158,
0.627,
-0.0126
],
"max": [
0.3386,
0.7731,
0.179
]
}
},
"ArmL_Glove": {
"mesh": "ArmL_Glove_Mesh",
"triangles": 476,
"vertices": 240,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
0.1433,
0.6253,
0.1115
],
"max": [
0.2351,
0.7073,
0.1898
]
}
},
"ArmR_Upper": {
"mesh": "ArmR_Upper_Mesh",
"triangles": 284,
"vertices": 144,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.1955,
0.8772,
-0.067
],
"max": [
-0.0333,
1.029,
0.09
]
}
},
"ArmR_Lower": {
"mesh": "ArmR_Lower_Mesh",
"triangles": 284,
"vertices": 144,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.2797,
0.9605,
0.0232
],
"max": [
-0.1347,
1.0976,
0.1601
]
}
},
"ArmR_Glove": {
"mesh": "ArmR_Glove_Mesh",
"triangles": 476,
"vertices": 240,
"ngons": 0,
"materials": [
"SW_neutral_primary_536375"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.2953,
1.0218,
0.0862
],
"max": [
-0.2035,
1.1037,
0.1645
]
}
},
"Weapon_Trumpet": {
"mesh": "Weapon_Trumpet_Mesh",
"triangles": 1518,
"vertices": 761,
"ngons": 0,
"materials": [
"SW_neutral_secondary_A8654D"
],
"uv_layers": [],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": false,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-0.5925,
0.9563,
0.0405
],
"max": [
0.0317,
1.3202,
0.4181
]
}
}
},
"armatures": {},
"empties": {
"Model_s03": [
0.0,
0.0,
0.0
],
"Forward": [
0.0,
0.0,
0.75
]
},
"bounds_unity": {
"min": [
-0.5925,
0.0,
-0.4181
],
"max": [
0.5925,
1.4,
0.4181
]
},
"clips": [],
"expected_from_godot": {
"triangles": 7832,
"bounds_godot": {
"min": [
-0.592510461807251,
0.0,
-0.41805312037467957
],
"max": [
0.592510461807251,
1.399999976158142,
0.41805312037467957
]
},
"resource_path": "res://assets/models/unit_s03.glb"
},
"meshes_with_ngons": {},
"meshes_without_uv": [
"Body_CreamStole1",
"Body_CreamStole_1",
"Body_LongRobe",
"Body_RaggedCloak1",
"Body_RaggedCloak_1",
"Body_Scarf",
"Head_Eye1",
"Head_Eye_1",
"Head_HoodRim",
"Head_Visor",
"Weapon_Trumpet"
],
"triangles": 7832,
"fbx": "Assets/Luneraria/Art/Units/s03.fbx",
"fbx_bytes": 281884,
"ok": true
}