com.nttdocomo.ui.graphics3d.collision
クラス BVBuilder

Object
  拡張com.nttdocomo.ui.graphics3d.collision.BVBuilder

public class BVBuilder
extends Object

Figureオブジェクトから、BVFigureオブジェクトおよびFigure全体のBoundingVolume オブジェクト、指定したボーンのBoundingVolumeオブジェクトを生成するクラスです。

次の機能があります。

Figure全体のBoundingVolumeとしては、OBV、AABVの両方が使用可能ですが、BVFigureの各ボーンに 設定可能なBoundingVolumeは、OBVだけです。

BoundingVolumeオブジェクト生成において、アクションは考慮されません。Figureオブジェクト自体 が持つ基本姿勢から生成されます。

導入されたバージョン:
DoJa-5.0 (903i)

メソッドの概要
static BoundingVolume createBoneBV(Figure fig, int boneId, int pattern, int shapeType, float fit, int rotate)
           Figureオブジェクトから、指定したボーンのBoundingVolume(OBV)オブジェクトを生成します。
static BoundingVolume createBV(Figure fig, int pattern, int shapeType, float fit)
           Figureオブジェクトから、Figure全体のBoundingVolumeオブジェクトを生成します。
static BVFigure createBVFigure(Figure fig)
           Figureオブジェクトから、ボーンにBoundingVolumeオブジェクトが付加されていないBVFigure オブジェクトを生成します。
static BVFigure createBVFigure(Figure fig, int shapeType, float fit)
           Figureオブジェクトから、すべてのボーンにBoundingVolume(OBV) オブジェクトが付加されたBVFigureオブジェクトを生成します。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

createBVFigure

public static BVFigure createBVFigure(Figure fig)

Figureオブジェクトから、ボーンにBoundingVolumeオブジェクトが付加されていないBVFigure オブジェクトを生成します。

生成されたBVFigureオブジェクトには、Figure全体のBoundingVolumeオブジェクトも付加 されていません。BVFigureクラスのsetBVメソッドを使って、Figure全体のBoundingVolume オブジェクト、ボーンのBoundingVolumeオブジェクトをセットして下さい。

パラメータ:
fig - Figureオブジェクトを指定します。
戻り値:
BVFigureオブジェクトを返します。
例外:
NullPointerException - 引数figがnullの場合に発生します。
UIException - 引数figが既に dispose() されたオブジェクトの場合に発生します(ILLEGAL_STATE)。
IllegalStateException - 引数figが、ActionTableを付加できないFigureの場合に発生します。

createBVFigure

public static BVFigure createBVFigure(Figure fig,
                                      int shapeType,
                                      float fit)

Figureオブジェクトから、すべてのボーンにBoundingVolume(OBV) オブジェクトが付加されたBVFigureオブジェクトを生成します。
すべてのボーンのBoundingVolumeオブジェクトを、パターン0について生成します。 ただし、ポリゴンが存在しないボーンについてはBoundingVolumeオブジェクトは生成されず、 nullが設定されます。

生成されたBVFigureオブジェクトには、Figure全体のBoundingVolumeオブジェクトは付加 されていません。BVFigureクラスのsetBVメソッドを使って、Figure全体のBoundingVolume オブジェクトをセットして下さい。
また、ボーンからBoundingVolumeオブジェクトを除去する場合は、BVFigureクラスのsetBVメソッド でnullをセットしてください。

CapsuleCylinderの場合、中心軸がBV座標系のY軸に平行になるように BoundingVolumeオブジェクトが生成されますが、ボーン座標系(Shape座標系)ではZ軸がボーンとなるので、 BoundingVolumeBoundingVolume.ROTATE_Xが設定された状態(X軸回りに90度回転させた状態) で、 ボーン座標系のZ軸に平行になるようにBoundingVolumeオブジェクトを生成します。

ボーン座標系の他の軸に平行になるように生成したい場合は、createBoneBVメソッドを使って ボーンごとに生成してください。

BoxSphereの場合は、回転させない状態(BoundingVolume.ROTATE_NONE)でBoundingVolumeオブジェクト を生成します。

いずれのBoundingVolumeの場合も、中心位置がBoundingVolumeにセットされます。

パラメータ:
fig - Figureオブジェクトを指定します。
shapeType - 生成するOBVタイプを指定します。Shape.TYPE_BOXShape.TYPE_CAPSULEShape.TYPE_CYLINDERShape.TYPE_SPHEREのいずれかを指定します。
fit - 最小Fittingを基準にしたFittingの割合を指定します。
  0.1・・・1.0(=最小Fitting)・・・10
戻り値:
BVFigureオブジェクトを返します。
例外:
NullPointerException - 引数figがnullの場合に発生します。
UIException - 引数figが既に dispose() されたオブジェクトの場合に発生します(ILLEGAL_STATE)。
IllegalArgumentException - 引数shapeTypeが、Shape.TYPE_BOXShape.TYPE_CAPSULEShape.TYPE_CYLINDERShape.TYPE_SPHERE以外の場合に発生します。
IllegalArgumentException - 引数fitが、0.1未満または10を超える場合に発生します。
IllegalStateException - 引数figが、ActionTableを付加できないFigureの場合に発生します。

createBoneBV

public static BoundingVolume createBoneBV(Figure fig,
                                          int boneId,
                                          int pattern,
                                          int shapeType,
                                          float fit,
                                          int rotate)

Figureオブジェクトから、指定したボーンのBoundingVolume(OBV)オブジェクトを生成します。
パターンを指定することができます。

指定したボーンにポリゴンが存在しない場合、BoundingVolumeオブジェクトは生成されず、 nullを返します。

CapsuleCylinderの場合、中心軸がBV座標系のY軸に平行になるように BoundingVolumeオブジェクトが生成されますが、ボーン座標系(Shape座標系)ではZ軸がボーンとなるので、 一般的にはX軸回りに90度回転させた状態でBoundingVolumeオブジェクト を生成するように、引数rotateにBoundingVolume.ROTATE_Xを指定します。これにより、 ボーン座標系のZ軸に平行になるようにBoundingVolumeオブジェクトが生成されます。
CapsuleCylinderの場合は、この他に、引数rotateにBoundingVolume.ROTATE_NONE(ボーン座標系のY軸に平行)、 BoundingVolume.ROTATE_Z(ボーン座標系のX軸に平行)を指定することができます。

BoxSphereの場合は、引数rotateにBoundingVolume.ROTATE_NONEだけが指定可能です。

いずれのBoundingVolumeの場合も、中心位置がBoundingVolumeにセットされます。

生成されたOBVオブジェクトは、BVFigureクラスのsetBVメソッドを使って、BVFigureオブジェクトに セットする必要があります。

パラメータ:
fig - Figureオブジェクトを指定します。
boneId - 生成する対象のボーンIDを指定します。
pattern - 生成する対象のパターンを指定します。FigureクラスのsetPatternメソッドの説明 を参照してください。
shapeType - 生成するOBVタイプを指定します。Shape.TYPE_BOXShape.TYPE_CAPSULEShape.TYPE_CYLINDERShape.TYPE_SPHEREのいずれかを指定します。
fit - 最小Fittingを基準にしたFittingの割合を指定します。
  0.1・・・1.0(=最小Fitting)・・・10
rotate - ボーン座標系(Shape座標系)における、BV座標系の回転変換を指定します。 shapeTypeが