Qt Quick 3D Physics シェイプとボディ

シミュレーションのオブジェクトは、以下の4種類のボディで表現されます:StaticRigidBody DynamicRigidBodyCharacterControllerTriggerBody 。ボディの物理的な形状は、CollisionShape のサブタイプで表現されます。

形状

衝突形状は、物理シミュレーションの目的のためにオブジェクトの物理的な形状と範囲を定義するために使用されます。衝突形状は通常、オブジェクトの視覚的な外観よりも単純になります。

エンジンには、BoxShapeCapsuleShapeSphereShapePlaneShape のような事前定義された形状が組み込まれています。これらの形状の処理は最適化されているため、これらの形状を使用したシミュレーションは、通常、パフォーマンスが向上します。

さらに、データによって定義されるカスタム形状もあります:ConvexMeshShape HeightFieldShape およびTriangleMeshShape です。これらは、パフォーマンスを犠牲にしますが、より柔軟な対応が可能です。

ボディ

body はシミュレーション内の物理的な物体を表します。これらのボディは相互に作用し、衝突します。静的ボディ(StaticRigidBody)と動的ボディ(DynamicRigidBody)があります。ボディの物理的な形状は、形状のリストによって指定されます。有効形状はこれらの形状のである。形状の相対位置は固定されており、ボディは剛体である。

動的ボディ

動的ボディは動くことができる。どのように動くかはisKinematic プロパティで決まる。isKinematictrue の場合、ボディはkinematicPositionkinematicRotation プロパティを変更することで明示的に位置決めされる。isKinematicfalse のとき、オブジェクトはシミュレーションによって制御されます:重力で落下し、他のオブジェクトに跳ね返ります。

isKinematic がtrue の場合、すべての形状が許容されます。しかし、キネマティックでない物体はより制限されます。これらは、あらかじめ定義された形状BoxShapeCapsuleShapeSphereShape 、およびカスタム形状ConvexMeshShape です。これは、非凸の物理的形状を持つことが不可能であることを意味するものではありません:いくつかの凸形状を組み合わせて一つのボディを作ることができます。複合形状の例では、凸形状に基づいてリング状のボディを形成する方法を示している。

静的ボディ

静的ボディは動きません。他のボディが動く環境を表す。静的ボディを動かすことは技術的には可能であるが、物理シミュレーションは予期しない動作をすることに注意。特に、静的ボディの上で静止している動的ボディは、静的ボディが動いても起きません。つまり、静止体を動かしても、動体は同じ位置にとどまります。

キャラクター・コントローラー

CharacterController タイプは特殊なケースです。これは、環境内を移動するキャラクターを表します。典型的な使用例として、camera がキャラクタ コントローラの子であり、その動きはキーボード/マウスまたはゲームパッドで制御される一人称視点ビューがあります。

トリガーボディ

TriggerBody 、これも特殊なケースである。他のボディとは異なり、物理的なボディではないので、他のボディと衝突することはありません。その名前が示すように、他のボディがその衝突シェイプで定義されたボリュームに入ったり出たりしたときにのみ、アクションをトリガーするために使用されます。他のボディがsendTriggerReportstrue に設定していて、その衝突ボリュームがTriggerBody に入ると、bodyEntered シグナルが発せられます。

次の表は、さまざまなタイプのボディと、それらがどのように相互作用し、使用できるかをまとめたものです:

ボディ相互作用可能な形状
StaticRigidBody移動しないすべての形
DynamicRigidBody isKinematic trueプログラムによって配置される。動体に影響を与える。何も止めない。すべての形状
DynamicRigidBody isKinematicfalseシミュレーションで完全に制御限られた形状
CharacterControllerプログラムで動く。動的ボディに影響。静止体により停止。単一のCapsuleShape
TriggerBodyなしすべての形状

物理マテリアル

PhysicsMaterial タイプは、オブジェクトが他のオブジェクトと衝突したときの挙動を指定します。dynamicFrictionstaticFriction プロパティはオブジェクトの滑りやすさを決定し、restitution は弾みやすさを決定します。

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