サンプル
特定ボーンのみへのBVの設定
Figureの特定のボーンを選択してバウンディングボリューム(BV)を作成・設定することができます。不必要なBVを作成せず必要なボーンにのみBVを設定することで、衝突判定の計算コストを抑えることができます。
目次
1.特定ボーンへのBV設定の手順
Figureの特定ボーンへのBVの設定は、
1. FigureからBVFigureを作成する
2. Figureの特定ボーンからBVを作成する
3. 作成したBVをBVFigureの特定ボーンに設定する
という手順で行います。
さらに、BVFigureにFigureと同じ変換行列・アクション・フレーム値を設定すれば、BVは自動的にボーンの座標変換・アクションに合わせて特定ボーンに追従します。
2.特定ボーンへのBV設定のサンプルコード
ここでは、特定ボーンへのBVの設定を中心にサンプルコードを説明します。
以下のコードは、BVを設定したいFigureからBVFigureを作成します。同時に、BVFigureにFigureと同じアクションを設定します。
// BVFigureの作成とアクションの設定
bvFigure = BVBuilder.createBVFigure( figure );
bvFigure.setAction( action, 0 );
bvFigure = BVBuilder.createBVFigure( figure );
bvFigure.setAction( action, 0 );
以下のコードは、対象のボーンにあわせてBVを作成します。
// Figureの特定のボーンからBoundingVolumeを作成する
bvBone = BVBuilder.createBoneBV( figure,
bvBone = BVBuilder.createBoneBV( figure,
setBoneId, // ボーンID
0, // パターン番号
Shape.TYPE_SPHERE, // BVの形状
1.f, // Fit率
BoundingVolume.ROTATE_NONE );
0, // パターン番号
Shape.TYPE_SPHERE, // BVの形状
1.f, // Fit率
BoundingVolume.ROTATE_NONE );
そして、以下のコードは、作成したBVを対象のボーンに設定します。
// BVFigureのボーンに、作成したBoundingVolumeを設定
bvFigure.setBV( bvBone, setBoneId );
bvFigure.setBV( bvBone, setBoneId );
また、Figureのアクションに合わせてBVを動かすため、Figureのフレーム値を更新する際はBVFigureにも同じ値を設定します。
// フレーム値の設定
figure.setTime( frame );
bvFigure.setTime( frame );
figure.setTime( frame );
bvFigure.setTime( frame );

特定のボーンを選択し、BVを作成・設定する


