Balsam-Asset-Import-Tool
Das Balsam-Tool ist eine Befehlszeilenanwendung, die Teil der Asset-Aufbereitungspipeline von Qt Quick 3D ist. Es dient dazu, Assets, die in Tools zur Erstellung digitaler Inhalte wie Maya, 3ds Max oder Blender erstellt wurden, in ein effizientes Laufzeitformat für die Verwendung mit Qt Quick 3D zu konvertieren. Es ist nicht möglich und auch nicht sinnvoll, die Austauschformate direkt in Anwendungen zu referenzieren, da eine große Menge an Ressourcen benötigt wird, um den Inhalt des Assets zu analysieren und aufzubereiten, bevor es für das Echtzeit-Rendering verwendet werden kann. Stattdessen können die Austauschformate mit dem Balsam-Tool in QML-Komponenten und Ressourcen wie Geometrie und Texturen konvertiert werden.
Verwendung:
balsam [options] sourceFilename
Beispiel für die Verwendung
Um ein 3D-Asset, das in der Datei testModel.fbx
enthalten ist, mit balsam
zu konvertieren, würde der folgende Befehl verwendet werden:
balsam testModel.fbx
Dies würde die folgenden Dateien erzeugen:
meshes/testModel.mesh
TestModel.qml
Diese können dann in einem Qt Quick 3D -Projekt unter Verwendung dieser QML-Komponente verwendet werden:
import QtQuick3D TestModel { id: modelInstance }
Unterstützte 3D-Asset-Typen
- Wellenfront (.obj)
- COLLADA (.dae)
- FBX (.fbx)
- STL (.stl)
- PLY (.ply)
- GLTF2 (.gltf, .glb)
Einige der unterstützten Formate erlauben auch das Einbetten oder Referenzieren von Textur-Assets. Diese Assets werden ebenfalls unterstützt, sofern Qt sie ebenfalls unterstützt.
Baking für bildbasierte Beleuchtung
Balsam unterstützt auch die Erzeugung eines vorgefilterten Cubemap-Bildes aus .hdr-Dateien. Wenn eine Datei mit der Erweiterung .hdr als Eingabe angegeben wird, wird eine Datei mit dem gleichen Namen, aber mit der Erweiterung .ktx erzeugt. Die Anwendung kann dann die resultierende .ktx-Datei ausliefern und auf diese in der mit SceneEnvironment::lightProbe verbundenen Texture verweisen. Dadurch wird die kostspielige Laufzeitverarbeitung vermieden, die für bildbasierte Beleuchtung erforderlich ist. Weitere Informationen finden Sie unter Vorgenerierung von IBL-Cubemaps.
Unterstützte Optionen
In der folgenden Tabelle sind die Befehlszeilenoptionen aufgeführt, die von balsam
bei der Konvertierung von Asset-Dateien erkannt werden:
Hinweis: Für jede boolesche Option ist es möglich, --disable-<option-name>
zu verwenden.
Option | Beschreibung |
---|---|
--outputPath, -o <outputPath> | Legt den Speicherort für die erzeugte(n) Datei(en) fest. Standard ist das aktuelle Verzeichnis. |
--calculateTangentSpace | Berechnet die Tangenten und Bittangenten für die importierten Netze. |
--joinIdenticalVertices | Identifiziert und verbindet identische Scheitelpunkt-Datensätze in allen importierten Netzen. |
--generateNormals | Erzeugt Normalen für alle Flächen aller Netze. |
--generateSmoothNormals | Erzeugt glatte Normalen für alle Scheitelpunkte des Netzes. |
--splitLargeMeshes | Teilt große Maschen in kleinere Teilmaschen auf. |
--preTransformVertices | Entfernt den Knotengraphen und transformiert alle Scheitelpunkte mit den lokalen Transformationsmatrizen ihrer Knotenpunkte vor. |
--improveCacheLocality | Ordnet Dreiecke neu an, um die Lokalisierung im Vertex-Cache zu verbessern. |
--removeRedundantMaterials | Sucht nach redundanten/nicht referenzierten Materialien und entfernt sie. |
--fixInfacingNormals | Versucht festzustellen, welche Meshes Normalenvektoren haben, die nach innen gerichtet sind, und invertiert diese. |
--findDegenerates | In diesem Schritt werden alle Meshes nach degenerierten Primitiven durchsucht und in richtige Linien oder Punkte umgewandelt. |
--findInvalidData | Dieser Schritt durchsucht alle Meshes nach ungültigen Daten, wie z. B. Null-Normalen-Vektoren oder ungültigen UV-Koordinaten, und entfernt/korrigiert sie. Dies dient dazu, einige häufige Fehler des Exporters zu beseitigen. |
--transformUVCoordinates | Dieser Schritt wendet UV-Transformationen pro Textur an und bäckt sie in eigenständige Texturkoordinatenkanäle. |
--findInstances | In diesem Schritt wird nach doppelten Meshes gesucht und diese durch Verweise auf das erste Mesh ersetzt. |
--optimizeMeshes | Ein Nachbearbeitungsschritt, um die Anzahl der Meshes zu reduzieren. |
--optimizeGraph | Ein Postprocessing-Schritt zur Optimierung der Szenenhierarchie. |
--useFloatJointIndices | Speichert gemeinsame Indizes als Fließkommazahlen für GLES 2.0. |
--globalScale | Dieser Schritt führt eine globale Skalierung des Modells durch. |
--globalScaleValue <value> | Globaler Skalierungsfaktor, der von --globalScale verwendet wird. |
--dropNormals | Entfernt die Normalen für alle Flächen aller Meshes. |
--removeComponentNormals | Entfernt die Normalenkomponente von Meshes. |
--removeComponentTangentsAndBitangents | Entfernt die Komponenten Tangenten und Bitangenten aus den Maschen. |
--removeComponentColors | Entfernt alle Farbkomponenten aus Meshes. |
--removeComponentUVs | Entfernt alle UV-Komponenten aus Meshes. |
--removeComponentBoneWeights | Entfernt alle Bone-Gewichte aus Meshes. |
--removeComponentAnimations | Entfernt alle Animationskomponenten aus Meshes. |
--removeComponentTextures | Entfernt alle eingebetteten Texturkomponenten aus Meshes. |
--fbxPreservePivots | Behält zusätzliche Pivot-Knoten bei, die von FBX-Assets erstellt wurden (kann tiefe Knotenhierarchien erzeugen) |
--generateMipMaps | Zwingt alle importierten Texturkomponenten, Mip-Maps für die Mip-Map-Texturfilterung zu erzeugen |
--useBinaryKeyframes | Keyframe-Daten als Binärdateien aufzeichnen |
--generateLightmapUV | Lightmap-UV-Unwrapping durchführen und einen zusätzlichen UV-Kanal für die Meshes erzeugen. Diese UV-Daten werden dann vom Lightmap-Baker und beim Lightmapping während der Laufzeit verwendet. |
--generateMeshLevelsOfDetail | Wenn möglich, erstellen Sie Mesh Levels of Detail durch automatische Vereinfachung des Quellmeshes. |
--recalculateLodNormals | Berechnen Sie neue Normalen, wenn dies für die generierten Mesh-Detailstufen erforderlich ist. |
--recalculateLodNormalsMergeAngle <value> | Maximaler Winkel in Grad, der bei der Neuberechnung von Normalen für generierte Polygonnetz-Detailstufen für die Normalenglättung berücksichtigt wird. |
--recalculateLodNormalsSplitAngle <value> | Maximaler Winkel in Grad, der bei der Neuberechnung von Normalen für Detailstufen des generierten Netzes für die Aufteilung von Normalen berücksichtigt wird. |
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.