refactor
This commit is contained in:
+6
-13
@@ -1,26 +1,19 @@
|
||||
//! glTF-Binary-Loader (.glb, Blender-Export) → neutrales [`Model`].
|
||||
//!
|
||||
//! Der Aufrüst-Pfad gegenüber engine::obj: glTF trägt, was OBJ nicht kann —
|
||||
//! **Custom Properties** (Blender: Objekt-Eigenschaften, beim Export
|
||||
//! Die tragenden Kanäle: **Custom Properties** (in Blender beim Export
|
||||
//! „Include → Custom Properties" anhaken → landen in `node.extras`) und
|
||||
//! **Empties** (Nodes ohne Mesh) als Entity-Marker für Spawn/Trigger/…
|
||||
//! Beide kommen als `props`/`empties` im Modell an; Bedeutung geben die
|
||||
//! Konsumenten.
|
||||
//! **Empties** (Nodes ohne Mesh) als Entity-Marker. Beide kommen als
|
||||
//! `props`/`empties` im Modell an; Bedeutung geben die Konsumenten.
|
||||
//!
|
||||
//! Subset: GLB-Container (JSON- + BIN-Chunk; reine `.gltf` mit externen
|
||||
//! Buffern sind außerhalb — in Blender „glTF Binary (.glb)" exportieren),
|
||||
//! Dreiecks-Primitives (Mode 4, Default) mit `POSITION`/`TEXCOORD_0`
|
||||
//! (float) und optionalen Indizes (u8/u16/u32). Node-Transforms (Matrix
|
||||
//! oder T·R·S, samt Hierarchie) werden in die Vertices eingebacken —
|
||||
//! Welt-Raum wie beim OBJ-Pfad. Material-*Name* = Texturname (derselbe
|
||||
//! Kontrakt wie `usemtl`); glTF-eigene Texturen/PBR werden ignoriert.
|
||||
//! oder T·R·S, samt Hierarchie) werden in die Vertices eingebacken.
|
||||
//! Material-*Name* = Texturname; glTF-eigene Texturen/PBR bleiben ungenutzt.
|
||||
//!
|
||||
//! Achsen: glTF ist per Spezifikation Y-up/−Z-forward — unser System,
|
||||
//! Blenders Exporter konvertiert selbst. Maßstab 1:1.
|
||||
//!
|
||||
//! JSON via `serde_json`: steckt über bladeink ohnehin im Dependency-Baum,
|
||||
//! ein handgerollter Parser wäre Redundanz ohne Dependency-Gewinn (anders
|
||||
//! als beim trivialen signals-TOML-Subset).
|
||||
|
||||
use serde_json::Value;
|
||||
|
||||
@@ -125,7 +118,7 @@ fn append_mesh(
|
||||
None => vec![[0.0, 0.0]; positions.len()],
|
||||
};
|
||||
|
||||
// Material-Name → geteilte Namensliste (wie usemtl); ohne Material "".
|
||||
// Material-Name → geteilte Namensliste; ohne Material "".
|
||||
let mat_name = prim["material"].as_u64()
|
||||
.and_then(|m| doc["materials"][m as usize]["name"].as_str())
|
||||
.unwrap_or("");
|
||||
|
||||
Reference in New Issue
Block a user