Balsam アセットインポートツール
Balsamツールは、Qt Quick 3Dのアセット調整パイプラインを構成するアプリケーションです。その目的は、Maya、3ds Max、Blenderなどのデジタルコンテンツ制作ツールで作成されたアセットを取り込み、Qt Quick 3Dで使用可能な効率的なランタイム形式に変換することです。 リアルタイムレンダリングで使用可能にするには、アセットのコンテンツを解析・調整するために大量のリソースが必要となるため、アプリケーション内で交換フォーマットを直接参照することは不可能であり、また理にかなってもいません。その代わりに、交換フォーマットをBalsamツールを介してQMLコンポーネントや、ジオメトリやテクスチャなどのリソースに変換することができます。
Balsam コマンドラインツール
コマンドラインからBalsamを実行するには、次のようにbalsam 実行ファイルを呼び出します。
balsam [options] sourceFilenameファイル `testModel.fbx ` に含まれる 3D アセットを `balsam ` 形式に変換するには、次のコマンドを使用します:
balsam testModel.fbxこれにより、以下のファイルが生成されます:
meshes/testModel.meshTestModel.qml
これらは、そのQMLコンポーネントを使用することで、Qt Quick の3Dプロジェクト内で利用できます:
import QtQuick3D
TestModel {
id: modelInstance
}注: 生成されるメッシュのファイル名は 、ソースファイル(この例ではFBXファイル)で定義されたメッシュ名に依存するため、testModel.mesh とは異なる場合があります。
Balsam UI
また、Balsam用のGUIフロントエンドとして「balsamui 」があり、これはbalsam 実行ファイルと共に同梱されています。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 | このステップでは、すべてのメッシュを検索して、法線ベクトルがゼロになっているものや無効な 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> | 生成されたメッシュの詳細レベル(LOD)の法線を再計算する際に、法線の分割を考慮する最大角度(度単位)。 |
© 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.