Sur cette page

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] sourceFilename

Pour convertir une ressource 3D contenue dans le fichier testModel.fbx avec balsam, la commande suivante serait utilisée :

balsam testModel.fbx

Cela générerait les fichiers suivants :

  • meshes/testModel.mesh
  • TestModel.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 :

Une capture d'écran de l'application Balsam UI.

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>`.

OptionDescription
--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.
--calculateTangentSpaceCalcule les tangentes et les bitangentes pour les maillages importés.
--joinIdenticalVerticesIdentifie et fusionne les ensembles de données de sommets identiques au sein de tous les maillages importés.
--generateNormalsGénère des normales pour toutes les faces de tous les maillages.
--generateSmoothNormalsGénère des normales lissées pour tous les sommets du maillage.
--splitLargeMeshesDivise les maillages volumineux en sous-maillages plus petits.
--preTransformVerticesSupprime le graphe de nœuds et pré-transforme tous les sommets à l'aide des matrices de transformation locales de leurs nœuds.
--improveCacheLocalityRéorganise les triangles pour améliorer la localité du cache de sommets.
--removeRedundantMaterialsRecherche les matériaux redondants ou non référencés et les supprime.
--fixInfacingNormalsTente de déterminer quels maillages possèdent des vecteurs normaux orientés vers l'intérieur et les inverse.
--findDegeneratesCette étape recherche dans tous les maillages les primitives dégénérées et les convertit en lignes ou en points corrects.
--findInvalidDataCette é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.
--transformUVCoordinatesCette étape applique des transformations UV par texture et les intègre dans des canaux de coordonnées de texture autonomes.
--findInstancesCette étape recherche les maillages en double et les remplace par des références au premier maillage.
--optimizeMeshesUne étape de post-traitement visant à réduire le nombre de maillages.
--optimizeGraphUne étape de post-traitement visant à optimiser la hiérarchie de la scène.
--useFloatJointIndicesEnregistre les indices d’articulation sous forme de nombres à virgule flottante pour GLES 2.0.
--globalScaleCette étape effectue une mise à l'échelle globale du modèle.
--globalScaleValue <value>Facteur d'échelle global utilisé par --globalScale.
--dropNormalsSupprime les normales de toutes les faces de tous les maillages.
--removeComponentNormalsSupprime la composante normale des maillages.
--removeComponentTangentsAndBitangentsSupprime les composantes tangentes et bitangentes des maillages.
--removeComponentColorsSupprime toutes les composantes de couleur des maillages.
--removeComponentUVsSupprime toutes les composantes UV des maillages.
--removeComponentBoneWeightsSupprime toutes les pondérations d'os des maillages.
--removeComponentAnimationsSupprime toutes les composantes d'animation des maillages.
--removeComponentTexturesSupprime toutes les composantes de texture intégrées des maillages.
--fbxPreservePivotsConserve les nœuds pivots supplémentaires créés par les ressources FBX (peut générer des hiérarchies de nœuds profondes)
--generateMipMapsForce tous les composants de texture importés à générer des mipmaps pour le filtrage de texture par mipmaps
--useBinaryKeyframesEnregistre les données d’images clés sous forme de fichiers binaires.
--generateLightmapUVEffectue 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.
--generateMeshLevelsOfDetailDans la mesure du possible, crée des niveaux de détail (LOD) pour les maillages en simplifiant automatiquement le maillage source.
--recalculateLodNormalsCalcule 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.