Repository navigation
Eigene Modelle
Puro-cs edited this page Oct 10, 2026
·
3 revisions
Diese Seite zeigt, wie ein eigenes Modell mit seinen Texturen in die Engine kommt: Dateiformat, Texturformat, Ablageort und die Regeln, nach denen die Engine die Datei liest.
Das Modell liegt in einem eigenen Ordner neben dem Viking Room und wird wie dieser geladen:
assets/
viking_room/ viking_room.gltf, viking_room.bin, viking_room.ktx2
haus/ haus.gltf, haus.bin, haus_basecolor.ktx2
SceneObject *haus = sandbox.LoadModel("Haus", "../assets/haus/haus.gltf");
haus->SetPosition({0.0f, 0.0f, -3.0f});Der Pfad ist relativ zum Arbeitsverzeichnis src/ (Setup); Texturpfade in der glTF-Datei (uri) werden relativ zum Ordner der Modelldatei aufgelöst.
-
LoadModel()liest.gltf(JSON, mit der.bindaneben) und.glb(binär; gewählt, wenn der Dateiname.glbenthält). -
Geometrie: die Vertex-Attribute
POSITION,NORMAL,TEXCOORD_0,TANGENT; fehlende Tangenten erzeugt die Engine. Die Transformation jedes Knotens (matrixoder Translation·Rotation·Skalierung) bleibt erhalten, also auch die Platzierung aus dem Modellierwerkzeug;SetPosition/SetRotation/SetScaledes Objekts wirken obendrauf. Der Viking Room trägt in der Datei eine Drehung um +90° um X, die das Beispiel mit −90° ausgleicht – ob ein eigener Export eine solche Korrektur braucht, zeigt der erste Ladeversuch. -
Materialien: jedes Material der Datei wird ein Teil des Objekts (
Part()auf 2 Eigene Pipeline und eigene Szene spricht es mit dem Materialnamen an). Gelesen werdenpbrMetallicRoughness(Basisfarbtextur und -faktor, Metallic-Roughness-Textur und -faktoren),normalTexture,occlusionTexture,emissiveTexturemit Faktor,alphaMode(MASKmit Cutoff → Alpha-Test;BLEND→ die gemischte Pipeline der Engine) sowieKHR_materials_pbrSpecularGlossiness,KHR_materials_emissive_strengthundKHR_materials_transmission(→ die Glas-Pipeline). -
Lichter und Kameras in der Datei:
KHR_lights_punctual-Lichter werden importiert (ihre Intensität × 1/638) und an die Lichter der Szene angehängt. Die erste Kamera der Datei wird in die Entity namensCamerageschrieben (Position, Rotation, Blickwinkel, Clip-Ebenen; angelegt, falls es sie nicht gibt) – eine mitCreateCamera("Camera")erzeugte Kamera wird von einem Modell mit Kamera überschrieben. Abhilfe: der eigenen Kamera einen anderen Namen geben oder die Kamera aus dem Export entfernen.
Die Engine dekodiert ausschließlich KTX2. Ein glTF, das PNG oder JPEG referenziert, lädt seine Geometrie mit der Standard-Albedo und druckt Non-KTX2 images are not supported by the custom image loader (use KTX2). sowie Warning: No decoded bytes for baseColor texture index 0.
-
Verweis in der Datei: ein
images[]-Eintrag mit externer.ktx2("mimeType": "image/ktx2", "uri": "<Datei>.ktx2"– die Form des Viking Room) oder eineKHR_texture_basisu-Quelle; eine in eine.glbeingebettete KTX2 wird ebenfalls gelesen (nur ihre Stufe 0). - Inhalt: unkomprimiertes RGBA8 oder Basis-superkomprimiert. Die Mip-Stufen der Datei werden genommen, wie sie sind; eine Datei mit einer Stufe wird ohne Mipmaps abgetastet.
-
Umwandlung eines PNG mit
toktxaus KTX-Software (nicht Teil des Vulkan SDK):(vier Kanäle; Zeilen von unten nach oben gespeichert). Mittoktx --t2 --target_type RGBA --lower_left_maps_to_s0t0 haus_basecolor.ktx2 haus_basecolor.png--genmipmaperzeugttoktxdie Mip-Stufen in der Datei. Die Engine-Dokumentation vermerkt, dass dieser Befehl auf der Entwicklungsmaschine noch nicht ausprobiert wurde. -
Farbraum nach Dateiname: ob eine Textur als sRGB oder linear abgetastet wird, entscheidet die Engine am Pfad der Textur, nicht am glTF-Slot oder am KTX2-Header: enthält der Pfad
basecolor,base_color,albedo,diffuse,specgloss,specularglossinessoderemissive(Groß-/Kleinschreibung egal), wird sRGB gewählt, sonst linearUNORM; das Format der Datei wird auf diese Wahl umgesetzt. Eine eigene Basisfarbtextur sollte deshalb eines dieser Wörter im Namen tragen (haus_basecolor.ktx2).viking_room.ktx2enthält keines – die Farbtextur des Raums wird linear abgetastet.
- Modell als
.gltf+.bin(oder.glb) exportieren, Texturen als PNG daneben. - Jede Textur nach KTX2 wandeln, Basisfarbtexturen mit
basecolorim Namen. - In der
.gltfdieimages[].uriauf die.ktx2-Dateien setzen,mimeTypeimage/ktx2. - Ordner nach
assets/<name>/, laden mit"../assets/<name>/<Datei>.gltf". - Beim ersten Start die Warnungen im Terminal lesen (Fehler und Debugging) und die Ausrichtung des Modells prüfen.
Engine-Dokumentation: docs/ARCHITECTURE.md, The sandbox layer.