技術文書 - 株式会社スリーディー

技術文書:SmartCollision について
株式会社スリーディー
June 2005
1
1.1
SmartCollision とは
Polygon ベースの Collision Detection Library
SmartCollision は、Polygon ベースの Collision Detection Library です。従来のライブラリでは、オ
ブジェクトが干渉した場合、干渉の有無の判定のみ可能でしたが、SmartCollision では、干渉深度の
計算を行うことができることが大きな特徴です。
1.2
干渉深度
VR 環境での仮想オブジェクトの操作にとって、任意の多面体同士の干渉深度の計算が不可欠と
なります。干渉深度とは、3次元のオブジェクトが干渉している時、干渉の定量的な度合を表します。
干渉深度を計算することにより、オブジェクトの干渉を解消することが可能になります(図 1)。
従来まで、干渉深度の計算は、凸多面体や限られたプリミティブでしか行うことができず、任意の
多面体同士の干渉深度の計算手法の確立することが、必要とされてきました。多面体同士の干渉深
度の計算は、凸多面体の干渉深度を利用する方法が提案された例はありましたが、任意の多面体同
士の干渉深度を直接計算することは出来ませんでした。凸多面体同士の干渉深度では、部分的な
干渉深度しか求めることが出来ないので、任意の多面体の干渉を解消することは出来ませんでした。
また、ボクセルを使用した手法も存在しましたが、ボクセルと頂点との干渉判定に基づいているため、
精度が不十分であるという欠点がありました。
SmartCollision では、ある許容誤差の範囲内で、任意の閉じた多面体や、任意の triangle の集合
で定義で表されるオブジェクト間の動的干渉深度を計算することが可能です。幾何学的な定義では、
グローバルミニマムの干渉深度が用いられる場合がありますが、干渉深度には、ローカルミニマムが
多数存在します。しかし、仮想オブジェクトの操作に必要となるのは、ローカルミニマムの中の一つで
あり、オブジェクトの軌跡を考慮して計算する必要があります(図 3)。SmartCollision では、この動的
干渉深度を計算することが可能です。
動的干渉深度は、ロボット工学(Robotics)、仮想環境(Virtual Environment)、Haptics、剛体シミュ
レーション、インタラクティブなコンピュータゲームなどへの応用が期待されます。
1-1
A
A
干渉
深度
B
B
AとBが干渉している状態
AとBの干渉が解消された状態
図 1:干渉深度による干渉の解消
B
A
部分PD
B
A
B
部分PD
凸多面体単位の部分PDを用
いても干渉は解消されない!
全体PD
全体PDを用いれば干渉は
解消される!
図 2:部分的な PD と全体 PD
A
A
A
グローバル
ミニマムの
干渉深度
軌跡
動的干渉深度
B
図 3:動的干渉深度
1-2
B
SmartCollision の機能
2
2.1
SmartCollision で扱えるオブジェクト
SmartCollision で扱うえるオブジェクトは、表 1の通りです。また、互いに干渉判定が可能な組み
合わせは、表 2に示す通りです。
オブジェクトの種類
複合凸オブジェクト
任意の多面体
Triangle の集合
複合凸オブジェクト
任意の多面体
Triangle の集合
2.2
表 1:取り扱えるオブジェクト
説明
任意の凸オブジェクトを組み合わせたオブジェクト
任意の多面体。ただし、多面体は、閉じている必要がある。
任意の triangle の集合。閉じていなくてもよい。いわゆる Polygon
soup。
表 2:干渉判定が可能な組み合わせ
複合凸オブジェクト
任意の多面体
○
○
○
○
×
×
Triangle の集合
×
×
○
SmartCollision の干渉判定機能
SmartCollision で扱うことが可能な干渉判定機能は、表 3の通りです。
表 3:干渉判定機能の一覧
干渉チェック機能
説明
干渉の有無
オブジェクト間の干渉の有無を Bool 値で判定します。
オブジェクト間の最近傍ベクト オブジェクトが干渉していない場合の最近傍ベクトルと最近傍点を
ルと最近傍点
計算します。
動的干渉深度ベクトル
オブジェクトが干渉している場合、オブジェクトの軌跡を考慮した干
渉深度を計算する。
2-3
3
3.1
PHANTOM を用いた反力アプリケーションへの応用
2つのハードル
PHANTOM を用いた反力アプリケーションでは、従来まで、仮想オブジェクトと点の間の干渉判定
を扱うことは、可能でしたが、任意の多面体同士を扱った例は、ほとんどありませんでした。それは、
PHANTOM を用いた反力アプリケーションで、任意の多面体同士を取り扱うには、2つの大きなハー
ドルがあったからです。
1つ目のハードルは、PHANTOM を用いた反力アプリケーションでは、1kHz という、非常に短い間
隔で、オブジェクト間の干渉判定を行わなければならず、このハードルをクリアーすることは、非常に
困難でした。
2つ目のハードルは、任意の多面体同士の干渉を解消するためには、干渉深度の計算手法が不
可欠でしたが、任意の多面体に適用できる干渉深度の計算手法は、確立されていませんでした。
SmartCollision は、この2つのハードルをクリアーし、PHANTOM を用いた反力アプリケーションで、任
意の多面体であらわされたオブジェクトを取り扱う道を切り開きました。
3.2
動的干渉深度を用いた Penalty 法による反力の計算
SmartCollision を用いることにより、仮想オブジェクト間の動的干渉深度を求めることが可能です。
この動的干渉深度を用いることにより、Penalty 法を用いて反力を計算することが出来ます。Penalty 法
は、操作対象のオブジェクトの干渉深度ベクトルに比例した反力を操作オブジェクトに与える手法
で、安定した仮想オブジェクトの操作が可能です。
3.3
6DOF への対応
3次元のオブジェクトは、並進3、回転3の6自由度(6DOF(Degree Of Freedom))を持っており、6
DOF 対応の PHANTOM を用いることにより、よりリアルな仮想オブジェクトの操作感を得ることが出来
ます。また、6DOF の PHANTOM の能力は、任意の多面体で定義されたオブジェクトの干渉深度を
扱うことが出来る SmartCollision により、引き出すことが可能であると言えます。
3-1