Outil d’importation de ressources Balsam
L’outil Balsam est une application qui fait partie du pipeline de préparation des ressources d’ Qt Quick 3D. Son objectif est de prendre les ressources créées dans des outils de création de contenu numérique tels que Maya, 3ds Max ou Blender, et de les convertir en un format d’exécution efficace pour une utilisation avec Qt Quick 3D. Il n’est ni possible ni judicieux de référencer directement les formats d’échange dans les applications, car l’analyse et le traitement du contenu de la ressource nécessitent d’importantes ressources avant que celle-ci ne soit utilisable pour le rendu en temps réel. Les formats d’échange peuvent en revanche être convertis via l’outil Balsam en composants QML et en ressources telles que la géométrie et les textures.
Outil en ligne de commande Balsam
Pour exécuter Balsam depuis la ligne de commande, appelez l’exécutable balsam comme suit :
balsam [options] sourceFilenamePour convertir une ressource 3D contenue dans le fichier testModel.fbx avec balsam, la commande suivante serait utilisée :
balsam testModel.fbxCela générerait les fichiers suivants :
meshes/testModel.meshTestModel.qml
Ces fichiers peuvent ensuite être utilisés dans un projet 3D Qt Quick à l’aide de 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 celui d’ testModel.mesh.
Interface utilisateur de Balsam
Il existe également une interface graphique pour Balsam, appelée « balsamui », fournie avec l’exécutable « balsam ». Dans « balsamui », vous pouvez sélectionner vos fichiers d’entrée et votre répertoire de sortie ; les options de ligne de commande de l’exécutable « balsam » sont associées à des éléments interactifs :

Types de ressources 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'intégrer ou de référencer des ressources de texture. Ces ressources sont également prises en charge, à condition que Qt les prenne également en charge.
Cuisson pour l'éclairage basé sur des images
Balsam prend également en charge la génération d’une image de cubemap pré-filtrée à partir de fichiers .hdr. La spécification d’un fichier avec l’extension .hdr en entrée entraîne la génération d’un fichier portant le même nom mais avec l’extension .ktx. L’application peut ensuite inclure le fichier .ktx obtenu et y faire référence depuis l’ Texture e associé à SceneEnvironment::lightProbe. Cela évite le traitement coûteux en temps d’exécution nécessaire à l’éclairage basé sur l’image. Voir Prégénération d’une carte cubique 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 de fichiers d’actifs :
Remarque : pour chaque option booléenne, il est possible d’utiliser ` --disable-<option-name>`.
| Option | Description |
|---|---|
--outputPath, -o <outputPath> | Définit l'emplacement où placer le ou les fichiers générés. Par défaut, il s'agit du répertoire courant. |
--calculateTangentSpace | Calcule les tangentes et les bitangentes pour les maillages importés. |
--joinIdenticalVertices | Identifie et fusionne les ensembles de données de sommets identiques au sein de 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 lissées pour tous les sommets du maillage. |
--splitLargeMeshes | Divise les maillages volumineux en sous-maillages plus petits. |
--preTransformVertices | Supprime le graphe de nœuds et pré-transforme tous les sommets à l'aide des matrices de transformation locales de leurs nœuds. |
--improveCacheLocality | Réorganise les triangles pour améliorer la localité du cache de sommets. |
--removeRedundantMaterials | Recherche les matériaux redondants ou non référencés et les supprime. |
--fixInfacingNormals | Tente de déterminer quels maillages possèdent des vecteurs normaux 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 en points corrects. |
--findInvalidData | Cette étape recherche dans tous les maillages les données invalides, telles que les vecteurs normaux mis à zéro ou les coordonnées UV invalides, et les supprime ou les corrige. Cela vise à éliminer certaines erreurs courantes d’exportation. |
--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 visant à réduire le nombre de maillages. |
--optimizeGraph | Une étape de post-traitement visant à optimiser la hiérarchie de la scène. |
--useFloatJointIndices | Enregistre les indices d’articulation 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 global utilisé par --globalScale. |
--dropNormals | Supprime les normales de toutes les faces de tous les maillages. |
--removeComponentNormals | Supprime la composante normale des maillages. |
--removeComponentTangentsAndBitangents | Supprime les composantes tangentes et bitangentes des maillages. |
--removeComponentColors | Supprime toutes les composantes de couleur des maillages. |
--removeComponentUVs | Supprime toutes les composantes UV des maillages. |
--removeComponentBoneWeights | Supprime toutes les pondérations d'os des maillages. |
--removeComponentAnimations | Supprime toutes les composantes d'animation des maillages. |
--removeComponentTextures | Supprime toutes les composantes de texture intégrées des maillages. |
--fbxPreservePivots | Conserve les nœuds pivots supplémentaires créés par les ressources FBX (peut générer des hiérarchies de nœuds profondes) |
--generateMipMaps | Force tous les composants de texture importés à générer des mipmaps pour le filtrage de texture par mipmaps |
--useBinaryKeyframes | Enregistre les données d’images clés sous forme de fichiers binaires. |
--generateLightmapUV | Effectue le dépliage UV des lightmaps et génère un canal UV supplémentaire pour les maillages. Ces données UV sont ensuite utilisées par l’ outil de création de lightmaps et lors du lightmapping à l’exécution. |
--generateMeshLevelsOfDetail | Dans la mesure du possible, crée des niveaux de détail (LOD) pour les maillages en simplifiant automatiquement le maillage source. |
--recalculateLodNormals | Calcule de nouvelles normales lorsque cela est nécessaire pour les niveaux de détail des maillages générés. |
--recalculateLodNormalsMergeAngle <value> | Angle maximal en degrés à prendre en compte pour le lissage/la fusion des normales lors du recalcul des normales pour les niveaux de détail des maillages générés. |
--recalculateLodNormalsSplitAngle <value> | Angle maximal en degrés à prendre en compte pour la division des normales lors du recalcul des normales pour les niveaux de détail des maillages générés. |
© 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.