モデル衝突検出の基本的原理

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