モデル衝突検出の動作原理

STL と OBJ 形式のモデルについて

STL モデル

STL は、3D Systemsによって開発された 3D モデルフォーマットです。STL モデルは複数の三角形の連結で構成されており、各三角形は、三つの頂点と 3D 座標と三角形の法線ベクトルによって表現されます。Mech-Viz プロジェクトでは、STL モデルはロボットのエンドツールを作成する、またシーンを構築するために使用されます。

../../../_images/stl_models_application.png

OBJ モデル

OBJ は、3D モデルフォーマットとして、主にポリゴン(Polygons)モデルに対応しますが、曲線(Curves)やサーフェイス(Surfaces)、ポイントグループ材料(Point Group Materials)にも対応します。簡単に言えば、STL モデルをサーフェスだけのモデルで、OBJ はソリッドモデルと捉えられます。OBJ モデルは下図のようです。

../../../_images/obj_models_application.png

注釈

OBJ ファイルは、ワードパッドで直接開いて表示および編集できるテキストファイルです。

STL モデル衝突検出の動作原理

STL モデルは三角形の集合体で、サーフェイスだけあって中身がないので、点群衝突を検出する時に点群と対象物表面を表現する三角形との衝突、つまり点群と対象物表面の干渉だけを計算します。STL モデルは下図のようです。

../../../_images/stl_cillision_detection_principle_1.png

下図では黄色い部分は衝突が発生する三角形を、オレンジ色の部分は衝突が発生する点群を表します。この図には、衝突検出ではモデル表面の衝突しか検出されませんでした。

../../../_images/stl_cillision_detection_principle_2.png

OBJ モデル衝突検出の動作原理

下図に示すように、OBJ モデル衝突検出では、エンドツールのモデルを複数のソリッドポリゴンに分解します。

../../../_images/obj_cillision_detection_principle_1.png

エンドツールモデルを複数のポリゴンに分解したら、各ポリゴンと点群との衝突検出は「ソリッド検出」になり、つまりエンドツールモデル内の点群衝突も検出されるので、より正確な検出を実現できます。

下図は OBJ モデル衝突検出の結果の例です。オレンジ色は衝突が発生した部分です。モデル表面だけでなく、中身の衝突も検出されました。

../../../_images/obj_cillision_detection_principle_2.png