Qt Quick 3D Physics 形状とボディ
シミュレーションのオブジェクトは、以下の4種類のボディで表現されます:StaticRigidBody DynamicRigidBody 、CharacterController 、TriggerBody 。ボディの物理的な形状は、CollisionShape のサブタイプで表されます。
形状
衝突形状は、物理シミュレーションの目的のためにオブジェクトの物理的な形状と範囲を定義するために使用されます。衝突形状は通常、オブジェクトの視覚的な外観よりも単純になります。
エンジンには、BoxShape 、CapsuleShape 、SphereShape 、PlaneShape のような事前定義された形状が組み込まれています。これらの形状の処理は最適化されているため、これらの形状を使用したシミュレーションは、通常、パフォーマンスが向上します。
さらに、データによって定義されるカスタム形状もあります:ConvexMeshShape HeightFieldShape およびTriangleMeshShape です。これらは、パフォーマンスを犠牲にしますが、より柔軟性があります。
ボディ
body はシミュレーション内の物理的な物体を表します。これらのボディは相互に作用し、衝突します。静的ボディ(StaticRigidBody)と動的ボディ(DynamicRigidBody)があります。ボディの物理的形状は、形状のリストによって指定されます。有効形状はこれらの形状の和である。形状の相対位置は固定されており、ボディは剛体である。
動的ボディ
動的ボディは動くことができる。どのように動くかはisKinematic プロパティで決まる。isKinematic
がtrue
の場合、ボディはkinematicPosition とkinematicRotation プロパティを変更することで明示的に位置決めされる。isKinematic
がfalse
のとき、オブジェクトはシミュレーションによって制御されます:重力で落下し、他のオブジェクトに跳ね返ります。
isKinematic がtrue
の場合、すべての形状が許容されます。しかし、キネマティックでない物体はより制限されます。これらは、あらかじめ定義された形状BoxShape 、CapsuleShape 、SphereShape 、およびカスタム形状ConvexMeshShape です。これは、非凸の物理的形状を持つことが不可能であることを意味するものではありません:いくつかの凸形状を組み合わせて一つのボディを作ることができます。複合形状の例では、凸形状に基づいてリング状のボディを形成する方法を示している。
静的ボディ
静的ボディは動きません。他のボディが動く環境を表す。静的ボディを動かすことは技術的には可能であるが、物理シミュレーションは予期しない動作をすることに注意。特に、静的ボディの上で静止している動的ボディは、静的ボディが動いても起きません。つまり、静体が動いても動体は同じ位置にとどまります。
キャラクター・コントローラー
CharacterController タイプは特殊なケースです。これは、環境内を移動するキャラクターを表します。典型的な使用例として、camera がキャラクタ コントローラの子であり、その動きはキーボード/マウスまたはゲームパッドで制御される一人称視点ビューがあります。
トリガーボディ
TriggerBody 、これも特殊なケースである。他のボディとは異なり、物理的なボディではないので、他のボディと衝突して相互作用することはありません。その名前が示すように、他のボディがその衝突シェイプで定義されたボリュームに入ったり出たりしたときにのみ、アクションをトリガーするために使用されます。他のボディがsendTriggerReports をtrue
に設定していて、その衝突ボリュームがTriggerBody に入ると、bodyEntered シグナルが発せられます。
次の表は、さまざまなタイプのボディと、それらがどのように相互作用し、使用できるかをまとめたものです:
ボディ | 相互作用 | 可能な形状 |
---|---|---|
StaticRigidBody | 移動しない | すべての形 |
DynamicRigidBody isKinematic true | プログラムによって配置される。動体に影響を与える。何も止めない。 | すべての形状 |
DynamicRigidBody isKinematic 。false | シミュレーションで完全に制御 | 限られた形状 |
CharacterController | プログラムで動く。動的ボディに影響。静止体により停止。 | 単一のCapsuleShape |
TriggerBody | なし | すべての形状 |
物理マテリアル
PhysicsMaterial タイプは、オブジェクトが他のオブジェクトと衝突したときの挙動を指定します。dynamicFriction とstaticFriction プロパティはオブジェクトの滑りやすさを決定し、restitution は弾みやすさを決定します。
© 2025 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.