Outil d'importation d'actifs Balsam
L'outil Balsam est une application qui fait partie du pipeline de conditionnement des actifs de Qt Quick 3D. L'objectif est de prendre les actifs créés dans des outils de création de contenu numérique tels que Maya, 3ds Max ou Blender et de les convertir dans un format d'exécution efficace pour une utilisation avec Qt Quick 3D. Il n'est pas possible, et cela n'a pas de sens, de référencer les formats d'échange directement dans les applications car une grande quantité de ressources est nécessaire pour analyser et conditionner le contenu de l'actif avant qu'il ne soit utilisable pour le rendu en temps réel. Au lieu de cela, les formats d'échange peuvent être convertis via l'outil Balsam en composants QML et en ressources telles que la géométrie et les textures.
Outil de ligne de commande Balsam
Pour exécuter Balsam via la ligne de commande, appelez l'exécutable balsam comme suit :
balsam [options] sourceFilename
Pour convertir une ressource 3D contenue dans le fichier testModel.fbx en balsam, il faut utiliser la commande suivante :
balsam testModel.fbxCela génère les fichiers suivants :
meshes/testModel.meshTestModel.qml
qui peuvent ensuite être utilisés dans un projet 3D Qt Quick en utilisant ce composant QML :
import QtQuick3D
TestModel {
id: modelInstance
}Remarque : le nom du fichier de maillage généré dépend du ou des noms de maillage définis dans le fichier source (dans cet exemple, le fichier FBX) et peut différer de testModel.mesh.
Interface utilisateur de Balsam
Il existe également une interface graphique pour Balsam, appelée balsamui, qui est livrée avec l'exécutable balsam. Dans balsamui, vous pouvez sélectionner vos fichiers d'entrée et votre répertoire de sortie, et les options de ligne de commande de l'exécutable balsam sont associées à des éléments interactifs :

Types d'actifs 3D pris en charge
- Wavefront (.obj)
- COLLADA (.dae)
- FBX (.fbx)
- STL (.stl)
- PLY (.ply)
- GLTF2 (.gltf, .glb)
Certains des formats pris en charge permettent également d'incorporer ou de référencer des éléments de texture. Ces actifs sont également pris en charge, à condition que Qt les prenne également en charge.
Création d'un éclairage basé sur l'image
Balsam prend également en charge la génération d'une image cubemap pré-filtrée à partir de fichiers .hdr. La spécification d'un fichier avec l'extension .hdr en tant qu'entrée entraîne la génération d'un fichier portant le même nom mais avec une extension .ktx. L'application peut alors expédier le fichier .ktx résultant et y faire référence à partir de Texture associé à SceneEnvironment::lightProbe. Cela permet d'éviter le traitement coûteux au moment de l'exécution qui est nécessaire pour l'éclairage basé sur l'image. Voir Pré-génération de cubemap IBL pour plus de détails.
Options prises en charge
Le tableau suivant répertorie les options de ligne de commande reconnues par balsam lors de la conversion des fichiers de ressources :
Remarque : pour chaque option booléenne, il est possible d'utiliser --disable-<option-name>.
| Option | Description de l'option |
|---|---|
--outputPath, -o <outputPath> | Définit l'emplacement où placer le(s) fichier(s) généré(s). La valeur par défaut est le répertoire actuel. |
--calculateTangentSpace | Calcule les tangentes et les bitangentes pour les maillages importés. |
--joinIdenticalVertices | Identifie et joint les ensembles de données de sommets identiques dans tous les maillages importés. |
--generateNormals | Génère des normales pour toutes les faces de tous les maillages. |
--generateSmoothNormals | Génère des normales lisses pour tous les sommets du maillage. |
--splitLargeMeshes | Divise les grands maillages en sous-maillages plus petits. |
--preTransformVertices | Supprime le graphe des nœuds et prétransforme tous les sommets avec les matrices de transformation locales de leurs nœuds. |
--improveCacheLocality | Réorganise les triangles pour une meilleure localisation du cache des sommets. |
--removeRedundantMaterials | Recherche les matériaux redondants/non référencés et les supprime. |
--fixInfacingNormals | Tente de déterminer les maillages dont les vecteurs normaux sont orientés vers l'intérieur et les inverse. |
--findDegenerates | Cette étape recherche dans tous les maillages les primitives dégénérées et les convertit en lignes ou points appropriés. |
--findInvalidData | Cette étape recherche dans tous les maillages des données non valides, telles que des vecteurs normaux mis à zéro ou des coordonnées UV non valides, et les supprime/corrige. Cette étape est destinée à éliminer certaines erreurs courantes de l'exportateur. |
--transformUVCoordinates | Cette étape applique des transformations UV par texture et les intègre dans des canaux de coordonnées de texture autonomes. |
--findInstances | Cette étape recherche les maillages en double et les remplace par des références au premier maillage. |
--optimizeMeshes | Une étape de post-traitement pour réduire le nombre de mailles. |
--optimizeGraph | Une étape de post-traitement pour optimiser la hiérarchie de la scène. |
--useFloatJointIndices | Stocke les indices de jointure sous forme de nombres à virgule flottante pour GLES 2.0. |
--globalScale | Cette étape effectue une mise à l'échelle globale du modèle. |
--globalScaleValue <value> | Facteur d'échelle globale utilisé par --globalScale. |
--dropNormals | Supprime les normales pour toutes les faces de tous les maillages. |
--removeComponentNormals | Supprime la composante normale des maillages. |
--removeComponentTangentsAndBitangents | Supprime les composants Tangentes et Bitangentes des maillages. |
--removeComponentColors | Supprime tous les composants de couleur des maillages. |
--removeComponentUVs | Supprime tous les composants UV des maillages. |
--removeComponentBoneWeights | Supprime tous les poids d'os des mailles. |
--removeComponentAnimations | Supprime tous les composants d'animation des maillages. |
--removeComponentTextures | Supprime tous les composants de texture intégrés dans les maillages. |
--fbxPreservePivots | Préserve les nœuds pivots supplémentaires créés par les éléments FBX (peut créer des hiérarchies de nœuds profondes). |
--generateMipMaps | Oblige tous les composants de texture importés à générer des cartes mip pour le filtrage de texture par carte mip. |
--useBinaryKeyframes | Enregistrement des données d'images clés sous forme de fichiers binaires |
--generateLightmapUV | Effectuer le déballage UV de la carte lumineuse et générer un canal UV supplémentaire pour les mailles. Ces données UV sont ensuite utilisées par le lightmap baker et pendant l'exécution du lightmapping. |
--generateMeshLevelsOfDetail | Dans la mesure du possible, créer des niveaux de détail de maillage en simplifiant automatiquement le maillage source. |
--recalculateLodNormals | Calculer de nouvelles normales si nécessaire pour les niveaux de détail du maillage généré. |
--recalculateLodNormalsMergeAngle <value> | Angle maximal en degrés à prendre en compte pour le lissage normal/la fusion lors du recalcul des normales pour les niveaux de détail du maillage généré. |
--recalculateLodNormalsSplitAngle <value> | Angle maximal en degrés à prendre en compte pour le fractionnement des normales lors du recalcul des normales pour les niveaux de détail du maillage généré. |
© 2026 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.