En esta página

Herramienta de importación de activos Balsam

La herramienta Balsam es una aplicación que forma parte de la tubería de acondicionamiento de activos de Qt Quick 3D. El propósito es tomar activos creados en herramientas de creación de contenido digital como Maya, 3ds Max o Blender y convertirlos en un formato de ejecución eficiente para su uso con Qt Quick 3D. No es posible, ni tiene sentido, hacer referencia a los formatos de intercambio directamente en las aplicaciones porque se necesita una gran cantidad de recursos para analizar y acondicionar el contenido del activo antes de que sea utilizable para el renderizado en tiempo real. En su lugar, los formatos de intercambio pueden convertirse mediante la herramienta Balsam en componentes QML y recursos como geometría y texturas.

Herramienta de línea de comandos Balsam

Para ejecutar Balsam a través de la línea de comandos, llame al ejecutable balsam de la siguiente manera:

balsam [options] sourceFilename

Para convertir un activo 3D contenido en el archivo testModel.fbx con balsam se utilizaría el siguiente comando:

balsam testModel.fbx

Esto generaría los siguientes archivos:

  • meshes/testModel.mesh
  • TestModel.qml

Que luego pueden ser utilizados en un proyecto 3D Qt Quick utilizando ese Componente QML:

import QtQuick3D

TestModel {
   id: modelInstance
}

Nota: El nombre del archivo de malla generado depende del nombre o nombres de malla definidos en el archivo fuente (en este ejemplo, el archivo FBX) y puede diferir de testModel.mesh.

Interfaz de usuario de Balsam

También existe una interfaz gráfica de usuario para Balsam llamada balsamui que se suministra junto con el ejecutable balsam. En balsamui puede seleccionar los archivos de entrada y el directorio de salida, y las opciones de línea de comandos del ejecutable balsam se asignan a elementos interactivos:

Captura de pantalla de la aplicación Balsam UI.

Tipos de activos 3D compatibles

  • Wavefront (.obj)
  • COLLADA (.dae)
  • FBX (.fbx)
  • STL (.stl)
  • PLY (.ply)
  • GLTF2 (.gltf, .glb)

Algunos de los formatos admitidos también permiten incrustar o referenciar activos de textura. Estos activos también se admiten, siempre que Qt también tenga soporte para ellos.

Generación de iluminación basada en imágenes

Balsam también permite generar una imagen cubemap prefiltrada a partir de archivos .hdr. Especificando un archivo con extensión .hdr como entrada se genera un archivo con el mismo nombre pero con extensión .ktx. La aplicación puede entonces enviar el archivo .ktx resultante y referenciarlo desde la página Texture asociada a SceneEnvironment::lightProbe. Esto evita el costoso procesamiento en tiempo de ejecución que es necesario para la iluminación basada en imágenes. Ver Pre-generating IBL cubemap para más detalles.

Opciones admitidas

La siguiente tabla enumera las opciones de línea de comandos reconocidas por balsam al convertir archivos de activos:

Nota: Para cada opción booleana es posible utilizar --disable-<option-name>.

OpciónDescripción
--outputPath, -o <outputPath>Establece la ubicación en la que se colocarán los archivos generados. Por defecto es el directorio actual.
--calculateTangentSpaceCalcula las tangentes y bitangentes de las mallas importadas.
--joinIdenticalVerticesIdentifica y une conjuntos de datos de vértices idénticos en todas las mallas importadas.
--generateNormalsGenera normales para todas las caras de todas las mallas.
--generateSmoothNormalsGenera normales suaves para todos los vértices de la malla.
--splitLargeMeshesDivide las mallas grandes en submallas más pequeñas.
--preTransformVerticesElimina el gráfico de nodos y pretransforma todos los vértices con las matrices de transformación locales de sus nodos.
--improveCacheLocalityReordena los triángulos para mejorar la localización de los vértices en la caché.
--removeRedundantMaterialsBusca materiales redundantes/no referenciados y los elimina.
--fixInfacingNormalsIntenta determinar qué mallas tienen vectores normales orientados hacia dentro y los invierte.
--findDegeneratesEste paso busca primitivas degeneradas en todas las mallas y las convierte en líneas o puntos adecuados.
--findInvalidDataEste paso busca en todas las mallas datos no válidos, como vectores normales a cero o coordenadas UV no válidas, y los elimina o corrige. El objetivo es eliminar algunos errores comunes del exportador.
--transformUVCoordinatesEste paso aplica transformaciones UV por textura y las convierte en canales de coordenadas de textura independientes.
--findInstancesEste paso busca mallas duplicadas y las sustituye por referencias a la primera malla.
--optimizeMeshesUn paso de postprocesado para reducir el número de mallas.
--optimizeGraphUn paso de postprocesado para optimizar la jerarquía de la escena.
--useFloatJointIndicesAlmacena los índices de juntas como números de coma flotante para GLES 2.0.
--globalScaleEste paso realizará una escala global del modelo.
--globalScaleValue <value>Factor de escala global utilizado por --globalScale.
--dropNormalsElimina las normales de todas las caras de todas las mallas.
--removeComponentNormalsElimina la componente Normal de las mallas.
--removeComponentTangentsAndBitangentsElimina los componentes Tangentes y Bitangentes de las mallas.
--removeComponentColorsElimina los componentes de Color de las mallas.
--removeComponentUVsElimina los componentes UV de las mallas.
--removeComponentBoneWeightsElimina los pesos óseos de las mallas.
--removeComponentAnimationsElimina los componentes de animación de las mallas.
--removeComponentTexturesElimina los componentes de textura incrustados de las mallas.
--fbxPreservePivotsConserva los nodos pivotantes adicionales creados por los activos FBX (puede crear jerarquías de nodos profundas).
--generateMipMapsFuerza a todos los componentes de textura importados a generar mapas mip para el filtrado de texturas de mapas mip.
--useBinaryKeyframesGraba datos de fotogramas clave como archivos binarios
--generateLightmapUVRealiza el desenvolvimiento UV del lightmap y genera un canal UV adicional para las mallas. Estos datos UV son utilizados por el lightmap baker y durante la ejecución del lightmapping.
--generateMeshLevelsOfDetailCuando sea posible, crear niveles de detalle de malla simplificando automáticamente la malla de origen.
--recalculateLodNormalsCalcular nuevas normales cuando sea necesario para los niveles de detalle de la malla generada.
--recalculateLodNormalsMergeAngle <value>Ángulo máximo en grados a considerar para el suavizado/fusión de normales al recalcular las normales para los niveles de detalle de la malla generada.
--recalculateLodNormalsSplitAngle <value>Ángulo máximo en grados a considerar para la división de normales al recalcular las normales para los niveles de detalle de la malla generada.

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