以下ではもっとも使用頻度の高いヒンジの作成を例にとって関節の作成方法を説明します. ヒンジを作成するには次のようにします.
PHSolidIf* solid0 = phScene->GetSolids()[0]; PHSolidIf* solid1 = phScene->GetSolids()[1]; PHHingeJointDesc desc; desc.poseSocket.Pos() = Vec3d( 1.0, 0.0, 0.0); desc.posePlug.Pos() = Vec3d(-1.0, 0.0, 0.0); PHHingeJointIf* joint = phScene->CreateJoint(solid0, solid1, desc)->Cast();
作成したい関節の種類に応じたディスクリプタを作成し,これをPHSceneのCreateJoint関数に渡して関節を作成します. このとき,ディスクリプタとともに連結したい剛体のインタフェースも渡します. CreateJointはPHJointIf*を返しますので,作成した関節のインタフェースを得るにはCastで動的キャストします.
関節に関するPHSceneの関数を以下に示します.
PHSceneIf |
||
PHJointIf* |
CreateJoint(PHSolidIf*, PHSolidIf*, const PHJointDesc&) |
|
int |
NJoint() |
|
PHJointIf* |
GetJoint(int i) |
NJointはシーン中の関節の個数を返します.GetJointはi番目の関節を取得します.