このページの内容

Qt Quick 3D 物理演算の「クッキング」

メッシュをコリジョン形状として使用する際は、効率的なコリジョン検出を行うために、メッシュを処理してデータ形式に変換する必要があります。これを「クッキング」と呼びます。使用前にクッキングが必要な形状タイプは、ConvexMeshShape 、TriangleMeshShape 、HeightFieldShape の3つです。これらの形状のいずれかを使用する場合、クッキングはシミュレーションの最初のフレームで自動的に行われます。 このクッキング処理は顕著なパフォーマンスの低下を招く可能性があるため、読み込み時間を短縮するために、メッシュを事前にクッキングして直接読み込むことが可能です。これを行うには、キャッシュディレクトリを使用する方法と、クッカーツールを使用する方法の2つがあります。

キャッシュディレクトリ

キャッシュディレクトリを使用するには、環境変数 `QT_PHYSICS_CACHE_PATH ` を任意のディレクトリに設定します。アプリケーションが初めて実行されると、使用されるすべてのメッシュがクッキングされ、このディレクトリに保存されます。その後、アプリケーションが実行される際には、メッシュのクッキングは行われず、ディスクからクッキング済みのメッシュが読み込まれます。

警告:キャッシュディレクトリ内のファイルは 、読み込まれる前に検証されません。形式が不正な、または信頼できないキャッシュファイルを読み込むと、セキュリティ上の問題が生じる可能性があります。アプリケーション開発者は、QT_PHYSICS_CACHE_PATH を他のユーザーやプロセスが書き込み可能なディレクトリに指定する前に、これらの点を慎重に検討する必要があります。

Cooker ツール

もう一つの方法は、cooker ツールを使用することです。ツールをビルドした後、メッシュまたは高さフィールドの画像を入力引数として指定して、ツールを呼び出すだけです:

cooker input.mesh

または

cooker input.png

入力がメッシュの場合、2つのファイルが生成されます:

  • input.cooked.tri
  • input.cooked.cvx

1つはクック済みの三角メッシュ、もう1つはクック済みの凸メッシュです。これらは、TriangleMeshShape::source やConvexMeshShape::source のソースとしてそのまま使用でき、メッシュはクック処理を必要とせずに読み込まれます。同様に、入力が画像ファイルの場合、input.cooked.hf という名前のハイトフィールドが生成され、これをHeightFieldShape::source プロパティで参照することで読み込むことができます。

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