Инструмент импорта активов Balsam
Инструмент Balsam — это приложение командной строки, которое является частью конвейера подготовки активов Qt Quick 3D. Его цель — принимать активы, созданные в инструментах создания цифрового контента, таких как Maya, 3ds Max или Blender, и преобразовывать их в эффективный формат для выполнения с Qt Quick 3D. Невозможно и нецелесообразно напрямую ссылаться на форматы обмена в приложениях, потому что для обработки и подготовки содержимого актива перед его использованием для рендеринга в реальном времени требуется значительное количество ресурсов. Вместо этого форматы обмена могут быть преобразованы с помощью инструмента Balsam в компоненты QML и ресурсы, такие как геометрия и текстуры.
Использование:
balsam [options] sourceFilename
Пример использования
Для преобразования 3D актива, содержащегося в файле testModel.fbx с помощью balsam будет использоваться следующая команда:
balsam testModel.fbx
Это сгенерирует следующие файлы:
meshes/testModel.meshTestModel.qml
которые затем можно использовать в проекте Qt Quick 3D, используя этот компонент QML:
import QtQuick3D
TestModel {
id: modelInstance
} Поддерживаемые типы 3D активов
- Wavefront (.obj)
- COLLADA (.dae)
- FBX (.fbx)
- STL (.stl)
- GLTF2 (.gltf, .glb)
Некоторые из поддерживаемых форматов также позволяют встраивать или ссылаться на текстурные активы. Эти активы также поддерживаются, при условии, что Qt также поддерживает их.
Выпечка для освещения на основе изображения
Balsam также поддерживает генерацию предварительно отфильтрованной кубовой карты из файлов .hdr. Указание файла с расширением .hdr в качестве входных данных приводит к генерации файла с тем же именем, но с расширением .ktx. Затем приложение может отправить получившийся файл .ktx и сослаться на него из текстуры, связанной с SceneEnvironment::lightProbe. Это позволяет избежать дорогостоящей обработки в реальном времени, необходимой для освещения на основе изображения. Более подробную информацию см. в разделе Предварительная генерация кубовой карты IBL.
Поддержка проектов Qt 3D Studio
Инструмент Balsam также поддерживает преобразование проектов, созданных с помощью Qt 3D Studio, в проекты Qt Quick 3D QML.
- Приложение Qt 3D Studio (.uia)
- Презентация Qt 3D Studio (.uip)
Преобразование проектов Qt 3D Studio имеет некоторые ограничения из-за различий в доступных функциях. Функции, такие как эффекты и пользовательские материалы, недоступны и не будут генерироваться. Также есть некоторые различия в том, как реализованы анимации, поэтому при преобразовании могут возникнуть различия в поведении. Процесс преобразования не будет на 100% точным, и ожидается, что некоторые корректировки потребуются, но должен облегчить процесс переноса существующих проектов.
Поддерживаемые опции
В следующей таблице перечислены опции командной строки, распознаваемые balsam при преобразовании файлов активов:
Примечание: Для каждой логической опции можно использовать --disable-<имя_опции>
| Опция | Описание |
|---|---|
--outputPath, -o <outputPath> |
Устанавливает расположение для размещения сгенерированного файла(ов). По умолчанию используется текущий каталог. |
--calculateTangentSpace |
Вычисляет касательные и бикасательные для импортированных мешей. |
--joinIdenticalVertices |
Определяет и объединяет идентичные наборы данных вершин во всех импортированных мешах. |
--generateNormals |
Генерирует нормали для всех граней всех мешей. |
--generateSmoothNormals |
Генерирует плавные нормали для всех вершин в меше. |
--splitLargeMeshes |
Разделяет большие меши на более мелкие подмеши. |
--preTransformVertices |
Удаляет граф узлов и предварительно преобразует все вершины с помощью локальных матриц преобразования их узлов. |
--improveCacheLocality |
Переупорядочивает треугольники для лучшего расположения кэша вершин. |
--removeRedundantMaterials |
Ищет избыточные/неиспользуемые материалы и удаляет их. |
--fixInfacingNormals |
Пытается определить, у каких мешей векторы нормалей направлены внутрь, и инвертирует их. |
--findDegenerates |
Этот шаг ищет в всех мешах вырожденные примитивы и преобразует их в правильные линии или точки. |
--findInvalidData |
Этот шаг ищет во всех мешах недопустимые данные, такие как нулевые векторы нормалей или недопустимые координаты UV, и удаляет/исправляет их. Это призвано избавиться от некоторых распространенных ошибок экспортеров. |
--transformUVCoordinates |
Этот шаг применяет преобразования UV каждой текстуры и записывает их в отдельные каналы координат текстур. |
--findInstances |
Этот шаг ищет дублирующиеся меши и заменяет их ссылками на первый меш. |
--optimizeMeshes |
Постобработочный этап для уменьшения количества мешей. |
--optimizeGraph |
Постобработочный этап для оптимизации иерархии сцены. |
--useFloatJointIndices |
Хранит индексы суставов в виде чисел с плавающей точкой для GLES 2.0. |
--globalScale |
Этот шаг выполнит глобальное масштабирование модели. |
--globalScaleValue <value> |
Глобальный коэффициент масштабирования, используемый --globalScale. |
--dropNormals |
Удаляет нормали для всех граней всех мешей. |
--removeComponentNormals |
Удаляет компонент нормали из мешей. |
--removeComponentTangentsAndBitangents |
Удаляет компоненты касательных и бикасательных из мешей. |
--removeComponentColors |
Удаляет любые компоненты цвета из мешей. |
--removeComponentUVs |
Удаляет любые компоненты UV из мешей. |
--removeComponentBoneWeights |
Удаляет любые весовые компоненты костей из мешей. |
--removeComponentAnimations |
Удаляет любые компоненты анимации из мешей. |
--removeComponentTextures |
Удаляет любые встроенные текстурные компоненты из мешей. |
--fbxPreservePivots |
Сохраняет дополнительные узлы центрирования, созданные активами FBX (могут создать глубокие иерархии узлов) |
--generateMipMaps |
Принудительно генерирует mip-мапы для всех импортированных текстурных компонентов для фильтрации mip-мап текстур. |
--useBinaryKeyframes |
Записывает данные ключевых кадров в виде файлов в бинарном формате. |
В следующей таблице перечислены опции командной строки, распознаваемые balsam при преобразовании проектов Qt 3D Studio:
| Опция | Описание |
|---|---|
--createProjectWrapper |
Создает оберточный компонент окна для импортированного проекта UIA. Действительно только для импорта UIA. |
--createIndividualLayers |
Создаёт отдельный компонент для каждого слоя вместо включения содержимого слоя в компоненты презентации. |
--framesPerSecond <value> |
Указывает, сколько кадров анимации создаётся в секунду в анимациях. |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtquick3d-tool-balsam.html