Doc:JA/2.6/Manual/Game Engine/Physics/Object Type/Sensor
< Doc:JA | 2.6 | Manual | Game Engine | Physics | Object Type(Doc:JA/2.6/Manual/Game Engine/Physics/Sensorから転送)
Sensor
Sensorはstaticおよびdynamicオブジェクトを検知しますが、他の衝突、センサ、オブジェクトは検知しません。これはNearセンサやRadarセンサを設定した物理オブジェクトに似ています。NearオブジェクトやRadarオブジェクトと同様に、
- staticかつghostです。
- デフォルトでinvisibleです。
- 正しく衝突を検出するため、常にアクティブです。
- staticオブジェクトおよびdynamicオブジェクトを検出します。
- その親オブジェクトとの衝突は無視します。
- broadphaseフィルタリングします。そのベースは、
- Actor option: 衝突が検出されるためにはActorを有効にしている必要があります。
- property/material: 適用されている衝突センサにおいて指定されているもの。
Broadphaseフィルタリングはパフォーマンスのために重要です。衝突点はbroahphaseフィルタを通ったオブジェクトの場合だけ計算されます。
- 衝突センサがアクティブでない場合は自動的にシミュレーションから除去される。
NearオブジェクトやRadarオブジェクトとは違う点は、
- どのような形状をとることもできます。triangle meshでも良いです。
- デバッグのために視覚化できます(Visibleアクチュエータを使ってください)
- 複数の衝突センサがこれを使えます。
その他の点として、sensorオブジェクトはふつうのオブジェクトです。字通に動かしたり、親子の関連付けをしたりできます。dynamicオブジェクトを親にすると、そのオブジェクトに対して高度な衝突コントロールを提供できます。
衝突検知の種類は形状によって異なります。
- box、sphere、cylinder、cone、convex hullではボリュームの衝突検知をします。
- triangle meshではサーフィスの衝突検知になりますが、マージンを設定すればサーフィスにボリュームを与えることもできます。マージンはサーフィスの両面に設定されます。
パフォーマンスのヒント:
- SensorオブジェクトはNearやRadarよりも上手く動作します。シーングラフ最適化によってsynchr
onizationsが少なく、また複数の衝突センサを持つことができます(たとえばそれぞれ違ったプロパティによってフィルタリングしたりなどできます)
- 可能な場合はシンプルな形状(boxやsphere)を使ってください。
- 常にbroadphaseフィルタリングを使用してください(フィルタリングするプロパティやマテリアルを設定せずにセンサを使わないでください)。
- 衝突センサは必要なときだけ使用してください。センサオブジェクト上で衝突センサが無効になっているときは、シミュレーション内から削除され、CPUを消費しません。
わかっている制限:
- Blenderをデバッグモードで実行している場合、このような警告が出ます。
"warning btCollisionDispatcher::needsCollision: static-static collision!"
リリースモードではこのメッセージは出ません。 - sphere、cone、cylinderでは衝突マージンは効果がありません。
設定
- Invisible
- Staticを参照。
Collision Bounds
Object Typeを参照。