Balsam 자산 가져오기 도구
Balsam 도구는 Qt Quick 3D 의 자산 처리 파이프라인에 포함된 애플리케이션입니다. 이 도구의 목적은 Maya, 3ds Max, Blender와 같은 디지털 콘텐츠 제작 도구에서 생성된 자산을 Qt Quick 3D 에서 사용할 수 있도록 효율적인 런타임 형식으로 변환하는 것입니다. 애플리케이션에서 교환 형식을 직접 참조하는 것은 불가능할 뿐만 아니라, 자산의 콘텐츠를 실시간 렌더링에 사용할 수 있도록 파싱하고 처리하는 데 막대한 리소스가 필요하기 때문에 합리적이지도 않습니다. 대신, 교환 형식을 Balsam 도구를 통해 QML 컴포넌트와 지오메트리, 텍스처와 같은 리소스로 변환할 수 있습니다.
Balsam 명령줄 도구
명령줄에서 Balsam을 실행하려면 다음과 같이 balsam 실행 파일을 호출하십시오.
balsam [options] sourceFilenamebalsam 로 testModel.fbx 파일에 포함된 3D 에셋을 변환하려면 다음 명령을 사용합니다:
balsam testModel.fbx그러면 다음과 같은 파일이 생성됩니다:
meshes/testModel.meshTestModel.qml
생성된 파일은 해당 QML 컴포넌트를 사용하여 Qt Quick 3D 프로젝트에서 활용할 수 있습니다:
import QtQuick3D
TestModel {
id: modelInstance
}참고: 생성된 메시파일 이름은 소스 파일(이 예시에서는 FBX 파일)에 정의된 메시 이름에 따라 결정되며, testModel.mesh 과 다를 수 있습니다.
Balsam UI
balsam 실행 파일과 함께 제공되는 ‘ balsamui ’라는 Balsam용 GUI 프론트엔드도 있습니다. balsamui 에서 입력 파일과 출력 디렉터리를 선택할 수 있으며, balsam 실행 파일의 명령줄 옵션이 대화형 요소로 매핑되어 있습니다:

지원되는 3D 자산 유형
- Wavefront (.obj)
- COLLADA (.dae)
- FBX (.fbx)
- STL (.stl)
- PLY (.ply)
- GLTF2 (.gltf, .glb)
지원되는 일부 형식에서는 텍스처 에셋을 삽입하거나 참조할 수도 있습니다. Qt에서도 해당 형식을 지원하는 경우, 이러한 에셋도 지원됩니다.
이미지 기반 조명을 위한 베이킹
Balsam은 또한 .hdr 파일을 사용하여 사전 필터링된 큐브맵 이미지를 생성하는 기능을 지원합니다. 입력으로 .hdr 확장자를 가진 파일을 지정하면, 동일한 이름이지만 확장자가 .ktx인 파일이 생성됩니다. 그런 다음 애플리케이션은 생성된 .ktx 파일을 포함시켜 배포하고, ` SceneEnvironment::lightProbe`와 연관된 ` Texture `에서 이를 참조할 수 있습니다. 이를 통해 이미지 기반 라이팅에 필요한 비용이 많이 드는 런타임 처리를 피할 수 있습니다. 자세한 내용은 IBL 큐브맵 사전 생성을 참조하십시오.
지원되는 옵션
다음 표는 자산 파일을 변환할 때 balsam 에서 인식하는 명령줄 옵션을 나열합니다:
참고: 각 부울 옵션에 대해 --disable-<option-name> 을 사용할 수 있습니다.
| 옵션 | 설명 |
|---|---|
--outputPath, -o <outputPath> | 생성된 파일을 저장할 위치를 설정합니다. 기본값은 현재 디렉터리입니다. |
--calculateTangentSpace | 가져온 메시에 대한 탄젠트 및 비탄젠트를 계산합니다. |
--joinIdenticalVertices | 가져온 모든 메쉬 내에서 동일한 버텍스 데이터 세트를 식별하고 병합합니다. |
--generateNormals | 모든 메시의 모든 면에 대해 법선 벡터를 생성합니다. |
--generateSmoothNormals | 메쉬 내 모든 정점에 대해 부드러운 법선을 생성합니다. |
--splitLargeMeshes | 큰 메쉬를 더 작은 하위 메쉬로 분할합니다. |
--preTransformVertices | 노드 그래프를 제거하고, 각 노드의 국소 변환 행렬을 사용하여 모든 정점을 사전 변환합니다. |
--improveCacheLocality | 버텍스 캐시 국소성을 높이기 위해 삼각형을 재정렬합니다. |
--removeRedundantMaterials | 중복되거나 참조되지 않은 머티리얼을 검색하여 제거합니다. |
--fixInfacingNormals | 내부를 향하는 법선 벡터를 가진 메쉬를 파악하여 이를 반전시킵니다. |
--findDegenerates | 이 단계에서는 모든 메시를 검색하여 퇴화된 프리미티브를 찾아 적절한 선분이나 점으로 변환합니다. |
--findInvalidData | 이 단계에서는 모든 메시를 검색하여 0으로 설정된 법선 벡터나 잘못된 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 | 가져온 모든 텍스처 컴포넌트가 밉맵 텍스처 필터링을 위해 밉맵을 생성하도록 강제합니다. |
--useBinaryKeyframes | 키프레임 데이터를 바이너리 파일로 기록합니다. |
--generateLightmapUV | 라이트맵 UV 언랩을 수행하고 메시용 추가 UV 채널을 생성합니다. 이 UV 데이터는 라이트맵 베이커와 런타임 라이트매핑 과정에서 사용됩니다. |
--generateMeshLevelsOfDetail | 가능한 경우 소스 메시를 자동으로 단순화하여 메시의 세부 수준(LOD)을 생성합니다. |
--recalculateLodNormals | 생성된 메시 LOD에 필요한 경우 새로운 노멀을 계산합니다. |
--recalculateLodNormalsMergeAngle <value> | 생성된 메시 LOD에 대한 노멀을 재계산할 때 노멀 스무딩/병합을 고려할 최대 각도(도). |
--recalculateLodNormalsSplitAngle <value> | 생성된 메쉬 레벨 오브 디테일에 대한 노멀을 재계산할 때 노멀 분할을 고려할 최대 각도(도). |
© 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.