Demo3D2017で追加された物理エンジンについて

こんにちは。マーケティング担当の野崎です。
今回は「Demo3D var.2017で追加された物理エンジン」について解説していきたいと思います。

Demo3D2016までの物理エンジン

Demo3D2016で搭載されていたデフォルトの物理エンジンは「OpenDynamicsEngine(ODE)」というオープンソースの物理エンジンです。

剛体の物理演算がサポートされており、動力学演算と呼ばれる原子・分子の物理的な動きの演算と、衝突検知演算と呼ばれる物体同士が衝突した際の演算が機能にあります。流体や布などの軟体シミュレーションはサポート外です。

Demo3D2017からの物理エンジン

今回2017で追加された物理エンジンは「Bullet」と「nVIDIA PhysX」です。

Bullet」はODEと同じくオープンソースの物理エンジンです。しかしこちらは剛体(ボックスや球体など)から布やロープなどまでのシミュレーションを行えるほか、軟体の表現もサポートされています。またCellプロセッサ、CUDAもしくはOpenGLを用いたGPUへ最適化オプションを利用出来ます。

nVIDIA PhysX」はnVIDIAがAGEIAから買収した物理エンジンです。nVIDIAの開発しているGPUであるGeForceシリーズとの相性が良く、GeForce搭載端末で利用することにより能力を発揮します。剛体の物理演算と流体、布などのシミュレーション、軟体の表現も可能です。


2017ではPhysXがデフォルトになっており、より細かく物理を計測する際にはBulletに変更し、ODEは古いモデルを利用する際に下位互換としての利用をEmulate3D社は勧めています。物理エンジンを変更するプロパティはシーンの「Physics Engine Type」です。

 

連続衝突検出プロパティ

連続衝突検出(Continuous Collision Detection)物体の衝突を連続で検出するかのBoolプロパティです。そしてこのプロパティを有効にする場合はCCD動きしきい値(CCD Motion Threshold)も設定する必要があります。
CCD動きしきい値とは物体が連続的に衝突してきた場合に検知するステップの範囲です。CCD動きしきい値が1の場合は1秒毎に物体の衝突検知を行います。そのため、もし0.5秒時点で何かの物体に衝突した場合に検知されないため、物体に衝突せずにすり抜けるという現象が発生します。

推奨スペックがGeForceである理由

たまにお客様から「何故QuadroではなくGeForceが推奨なのか」と質問される時があります。

これについて話すと長くなってしまうのですが、端的に説明するとQuadroはOpenGLと呼ばれるAPIに特化しており、GeForceはDirectXと呼ばれるAPIに特化しています。そしてDemo3DではDirectXを利用しているため、GeForceを推奨しています。

物理検証についてのプレゼンテーション動画


 次回の火曜は「人とフォークリフトの経路設定方法」について解説致します。
 必ずこの道を通ってほしい、という場合に人やフォークリフトをどう設定するのかを解説しています。是非ご覧ください。