バルサムアセットインポートツール

Balsamツールは、Qt Quick 3Dのアセットコンディショニングパイプラインの一部であるコマンドラインアプリケーションです。その目的は、Maya3ds MaxBlenderのようなデジタルコンテンツ作成ツールで作成されたアセットを、Qt Quick 3Dで使用するために効率的なランタイムフォーマットに変換することです。アセットがリアルタイムレンダリングに使用できるようになる前に、アセットコンテンツを解析し、調整するために大量のリソースが必要になるため、アプリケーションでインターチェンジフォーマットを直接参照することはできませんし、意味がありません。その代わりに、Balsamツールを使って、交換フォーマットをQMLコンポーネントやジオメトリやテクスチャなどのリソースに変換することができます。

使用方法

balsam [options] sourceFilename

使用例

ファイルtestModel.fbx に含まれる 3D アセットをbalsam で変換するには、次のコマンドを使用します:

balsam testModel.fbx

以下のファイルが生成されます:

  • meshes/testModel.mesh
  • TestModel.qml

QMLコンポーネントを使用することで、Qt Quick 3Dプロジェクトで使用することができます:

import QtQuick3D

TestModel {
   id: modelInstance
}

サポートされている3Dアセットタイプ

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

サポートされているフォーマットのいくつかは、テクスチャ アセットの埋め込みまたは参照も可能です。これらのアセットも、Qtがサポートしていればサポートされます。

画像ベースの照明のベイク

バルサムは、.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シーン階層を最適化する後処理ステップ。
--useFloatJointIndicesGLES 2.0用の浮動小数点数としてジョイントインデックスを格納します。
--globalScaleこのステップはモデルのグローバルスケールを実行します。
--globalScaleValue <value>--globalScale で使用されるグローバルスケール係数。
--dropNormalsすべてのメッシュのすべての面の法線を削除します。
--removeComponentNormalsメッシュから法線成分を削除します。
--removeComponentTangentsAndBitangentsメッシュからタンジェントとビタンジェントのコンポーネントを削除します。
--removeComponentColorsメッシュからカラーコンポーネントを削除します。
--removeComponentUVsメッシュからUVコンポーネントを削除します。
--removeComponentBoneWeightsメッシュからボーンウェイトを削除します。
--removeComponentAnimationsメッシュからアニメーション コンポーネントを削除します。
--removeComponentTexturesメッシュから埋め込まれたテクスチャ コンポーネントを削除します。
--fbxPreservePivotsFBXアセットによって作成された余分なピボットノードを保持します(深いノード階層を作成できます)。
--generateMipMapsインポートされたすべてのテクスチャコンポーネントが、ミップマップテクスチャフィルタリングのためにミップマップを生成するように強制します。
--useBinaryKeyframesキーフレームデータをバイナリファイルとして記録
--generateLightmapUVライトマップUVアンラッピングを実行し、メッシュ用に追加のUVチャンネルを生成。このUVデータは、ライトマップベーカーとランタイムライトマッピングで使用されます。
--generateMeshLevelsOfDetail可能であれば、ソースメッシュを自動的に簡略化してメッシュの詳細レベルを作成します。
--recalculateLodNormals生成されたメッシュの詳細レベルに対して、必要に応じて新しい法線を計算します。
--recalculateLodNormalsMergeAngle <value>生成されたメッシュの詳細レベルの法線を再計算する際に、法線のスムージング/マージに考慮する最大角度を度単位で指定します。
--recalculateLodNormalsSplitAngle <value>生成されたメッシュの詳細レベルの法線を再計算する際に、法線の分割を考慮する最大角度を度単位で指定します。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、各所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。