com.docomostar.opt.ui.eruption
クラス Collision3D

Object
  上位を拡張 com.docomostar.opt.ui.eruption.Collision3D

public final class Collision3D
extends Object

球体を表す GeometricShape に関する衝突判定および可視判定を行うためのクラスです。

実際に計算できる衝突判定処理は、以下の組み合わせです。

ここで、GeometricShape 同士の判定では、内包判定も行うことができます。
また、可視判定には を用いることができます。この場合も球体を表す GeometricShape のみが使用できます。

端末によって、本クラスはサポートされていない場合があります。未サポートの場合、メソッドが呼び出された時点で UnsupportedOperationException が発生します。


フィールドの概要
static int MCE_ISHIT_NOT_FIGURE_GS
          Figure に付加されたGSを対象からはずします(=2)。
static int MCE_ISHIT_NOT_INDEXBUFFER_GS
          IndexBuffer に付加されたGSを対象からはずします(=4)。
static int MCE_ISHIT_NOT_NODEDEFORMER_GS
          NodeDeformer 内のGSを対象からはずします(=1)。
 
メソッドの概要
static void getDrawRegion(Figure figure, Transform figTrans, Graphics3D g3d, RegionI area)
          指定した Figure において、カメラの可視領域に存在し実際に描画されている矩形領域を取得します。
static boolean isHit(GeometricShape gs, Figure figure, Transform gsTrans, Transform figTrans, GeometricShape[] gsArray, int[] gsArrayResultNum, int param)
          GeometricShape と Figure 内に存在する GeometricShape の衝突判定を行います。
static boolean isHit(GeometricShape gs0, GeometricShape gs1, Transform trans0, Transform trans1, boolean[] isInvolved)
          GeometricShape 同士の衝突判定を行います。
static boolean isHit(Vector3D origin, Vector3D dir, Figure figure, Transform figTrans, GeometricShape[] gsArray, int[] gsArrayResultNum, int param)
          ray と Figure 内に存在する GeometricShape の衝突判定を行います。
static boolean isHit(Vector3D origin, Vector3D dir, GeometricShape gs, Transform trans, Vector3D intersectPt)
          ray と GeometricShape の衝突判定を行います。
static boolean isHit(Vector3D pos0, Vector3D pos1, Vector3D pos2, Figure figure, Transform figTrans, GeometricShape[] gsArray, int[] gsArrayResultNum, int param)
          三角形 と Figure 内に存在する GeometricShape の衝突判定を行います。
static boolean isHit(Vector3D pos0, Vector3D pos1, Vector3D pos2, GeometricShape gs, Transform trans)
          三角形と GeometricShape の衝突判定を行います。
static boolean isInViewVolume(Figure figure, Transform figTrans, Camera camera, Transform camTrans, IndexBuffer[] ibArray, int[] ibArrayResultNum, int param)
          Figure の可視判定を行います。
static boolean isInViewVolume(Figure figure, Transform figTrans, Camera camera, Vector3D pos, Vector3D look, Vector3D up, IndexBuffer[] ibArray, int[] ibArrayResultNum, int param)
          Figure の可視判定を行います。
static boolean isInViewVolume(VertexBuffer vb, IndexBuffer ib, Transform trans, Camera camera, Transform camTrans, int param)
          VertexBuffer と IndexBuffer の対に関する可視判定を行います。
static boolean isInViewVolume(VertexBuffer vb, IndexBuffer ib, Transform trans, Camera camera, Vector3D pos, Vector3D look, Vector3D up, int param)
          VertexBuffer と IndexBuffer の対に関する可視判定を行います。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

MCE_ISHIT_NOT_NODEDEFORMER_GS

public static final int MCE_ISHIT_NOT_NODEDEFORMER_GS
NodeDeformer 内のGSを対象からはずします(=1)。

関連項目:
定数フィールド値

MCE_ISHIT_NOT_FIGURE_GS

public static final int MCE_ISHIT_NOT_FIGURE_GS
Figure に付加されたGSを対象からはずします(=2)。

関連項目:
定数フィールド値

MCE_ISHIT_NOT_INDEXBUFFER_GS

public static final int MCE_ISHIT_NOT_INDEXBUFFER_GS
IndexBuffer に付加されたGSを対象からはずします(=4)。

関連項目:
定数フィールド値
メソッドの詳細

isHit

public static final boolean isHit(Vector3D origin,
                                  Vector3D dir,
                                  GeometricShape gs,
                                  Transform trans,
                                  Vector3D intersectPt)
ray と GeometricShape の衝突判定を行います。

trans が null の場合、恒等変換とみなします。 intersectPt が null の場合、交差位置は取得しません。
ワールド座標系への変換が一様スケーリングではない場合、最大のスケール成分に統一されます。
gs が NodeDeformerNode として Figure に属している場合、 関連する TransformTree によりワールド座標系へ変換した後でさらに trans による変換が行われます。

パラメータ:
origin - ray の開始点を指定します。
dir - ray の方向ベクトルを指定します。
gs - 判定対象の GeometricShape オブジェクトを指定します。
trans - gs に対するワールド座標系への変換行列を指定します。
intersectPt - 交差位置の格納先を指定します。
戻り値:
判定結果を返します。返す値は以下の通りです。
例外:
NullPointerException -
origin、dir、gs のいずれかが null の場合に発生します。
IllegalArgumentException -
零ベクトルが指定された場合に発生します。
IllegalArgumentException -
GeometricShape が球体ではない場合に発生します。

isHit

public static final boolean isHit(GeometricShape gs0,
                                  GeometricShape gs1,
                                  Transform trans0,
                                  Transform trans1,
                                  boolean[] isInvolved)
GeometricShape 同士の衝突判定を行います。

trans0、trans1 が null の場合、恒等変換とみなします。
isInvolved が null ではない場合、片方の GeometricShape がもう片方の GeometricShape に内包されるならば isInvolved に true が、そうでないならば false がセットされます。
ワールド座標系への変換が一様スケーリングではない場合、最大のスケール成分に統一されます。
gs0/gs1 が NodeDeformerNode として Figure に属している場合、 関連する TransformTree によりワールド座標系へ変換した後でさらに trans0/trans1 による変換が行われます。

パラメータ:
gs0 - 判定対象の GeometricShape を指定します。
gs1 - 判定対象の GeometricShape を指定します。
trans0 - gs0 に対するワールド座標系への変換行列を指定します。
trans1 - gs1 に対するワールド座標系への変換行列を指定します。
isInvolved - 内包判定結果格納先を指定します。
戻り値:
判定結果を返します。返す値は以下の通りです。
例外:
NullPointerException -
gs0 が null の場合に発生します。
NullPointerException -
gs1 が null の場合に発生します。
IllegalArgumentException -
GeometricShape が球体ではない場合に発生します。

isHit

public static final boolean isHit(Vector3D pos0,
                                  Vector3D pos1,
                                  Vector3D pos2,
                                  GeometricShape gs,
                                  Transform trans)
三角形と GeometricShape の衝突判定を行います。

trans が null の場合、恒等変換とみなします。
ワールド座標系への変換が一様スケーリングではない場合、最大のスケール成分に統一されます。
gs が NodeDeformerNode として Figure に属している場合、 関連する TransformTree によりワールド座標系へ変換した後でさらに trans による変換が行われます。

パラメータ:
pos0 - 三角形の頂点を指定します。
pos1 - 三角形の頂点を指定します。
pos2 - 三角形の頂点を指定します。
gs - 判定対象の GeometricShape オブジェクトを指定します。
trans - gs に対するワールド座標系への変換行列を指定します。
戻り値:
判定結果を返します。返す値は以下の通りです。
例外:
NullPointerException -
pos0、pos1、pos2、gs のいずれかが null の場合に発生します。
IllegalArgumentException -
GeometricShape が球体ではない場合に発生します。

isHit

public static final boolean isHit(Vector3D origin,
                                  Vector3D dir,
                                  Figure figure,
                                  Transform figTrans,
                                  GeometricShape[] gsArray,
                                  int[] gsArrayResultNum,
                                  int param)
ray と Figure 内に存在する GeometricShape の衝突判定を行います。

figTrans が null の場合、恒等変換とみなします。
gsArray が null の場合、GeometricShape は格納されません。
gsArrayResultNum が null の場合、衝突個数は格納されません。
param が MCE_ISHIT_NOT_NODEDEFORMER_GS | MCE_ISHIT_NOT_FIGURE_GS | MCE_ISHIT_NOT_INDEXBUFFER_GS の場合、衝突判定は行われず、false を返します。
球体以外の GeometricShape は無視されます。変換が一様スケーリングではない場合、最大のスケール成分に統一されます。
gsArrayNum < gsArrayResultNum となる状況下では、 gsArrayNum 個までの GeometricShape が gsArray に格納されます。
本メソッドを呼ぶと Figure.updatePosture(Transform) による figure の更新が行われます。

パラメータ:
origin - Ray の始点を指定します。
dir - Ray の方向ベクトル(単位ベクトル)を指定します。
figure - 判定対象の Figure オブジェクトを指定します。
figTrans - Figure 用の変換行列を指定します。
gsArray - 衝突した GeometricShape を格納するための配列を指定します。(格納不要時は null 指定可)
gsArrayResultNum - 衝突した個数を格納するための 1 要素の配列を指定します。(格納不要時は null 指定可)
param - パラメータを指定します。指定できる値は以下の通りです。(複数指定可)
戻り値:
判定結果を返します。返す値は以下の通りです。
例外:
NullPointerException -
origin が null の場合に発生します。
NullPointerException -
dir が null の場合に発生します。
NullPointerException -
figure が null の場合に発生します。
IllegalArgumentException -
零ベクトルが指定された場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ TransformTree が更新されており、かつ循環が存在する場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera の上方向を示すオブジェクトが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera の上方向を示すオブジェクトの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属するアクティブな Light のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Light のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
ArithmeticException -
内部で計算エラーが起きた場合に発生します。

isHit

public static final boolean isHit(GeometricShape gs,
                                  Figure figure,
                                  Transform gsTrans,
                                  Transform figTrans,
                                  GeometricShape[] gsArray,
                                  int[] gsArrayResultNum,
                                  int param)
GeometricShape と Figure 内に存在する GeometricShape の衝突判定を行います。

gsTrans,figTrans が null の場合、恒等変換とみなします。
gsArray が null の場合、GeometricShape は格納されません。
gsArrayResultNum が null の場合、衝突個数は格納されません。
param が MCE_ISHIT_NOT_NODEDEFORMER_GS | MCE_ISHIT_NOT_FIGURE_GS | MCE_ISHIT_NOT_INDEXBUFFER_GS の場合、衝突判定は行われず、false を返します。
球体以外の GeometricShape は無視されます。変換が一様スケーリングではない場合、最大のスケール成分に統一されます。
gsArrayNum < gsArrayResultNum となる状況下では、 gsArrayNum 個までの GeometricShape が gsArray に格納されます。
本メソッドを呼ぶと Figure.updatePosture(Transform) による figure の更新が行われます。

パラメータ:
gs - 衝突させる GeometricShape を指定します。
figure - 判定対象の Figure オブジェクトを指定します。
gsTrans - GeometricShape 用の変換行列を指定します。
figTrans - Figure 用の変換行列を指定します。
gsArray - 衝突した GeometricShape を格納するための配列を指定します。(格納不要時は null 指定可)
gsArrayResultNum - 衝突した個数を格納するための 1 要素の配列を指定します。(格納不要時は null 指定可)
param - パラメータを指定します。指定できる値は以下の通りです。(複数指定可)
戻り値:
判定結果を返します。返す値は以下の通りです。
例外:
NullPointerException -
gs が null の場合に発生します。
NullPointerException -
figure が null の場合に発生します。
IllegalArgumentException -
GeometricShape が球体ではない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ TransformTree が更新されており、かつ循環が存在する場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera の上方向を示すオブジェクトが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera の上方向を示すオブジェクトの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属するアクティブな Light のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Light のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
ArithmeticException -
内部で計算エラーが起きた場合に発生します。

isHit

public static final boolean isHit(Vector3D pos0,
                                  Vector3D pos1,
                                  Vector3D pos2,
                                  Figure figure,
                                  Transform figTrans,
                                  GeometricShape[] gsArray,
                                  int[] gsArrayResultNum,
                                  int param)
三角形 と Figure 内に存在する GeometricShape の衝突判定を行います。

figTrans が null の場合、恒等変換とみなします。
gsArray が null の場合、GeometricShape は格納されません。
gsArrayResultNum が null の場合、衝突個数は格納されません。
param が MCE_ISHIT_NOT_NODEDEFORMER_GS | MCE_ISHIT_NOT_FIGURE_GS | MCE_ISHIT_NOT_INDEXBUFFER_GS の場合、衝突判定は行われず、false を返します。
球体以外の GeometricShape は無視されます。変換が一様スケーリングではない場合、最大のスケール成分に統一されます。
gsArrayNum < gsArrayResultNum となる状況下では、 gsArrayNum 個までの GeometricShape が gsArray に格納されます。
本メソッドを呼ぶと Figure.updatePosture(Transform) による figure の更新が行われます。

パラメータ:
pos0 - 三角形の頂点0を指定します。
pos1 - 三角形の頂点1を指定します。
pos2 - 三角形の頂点2を指定します。
figure - 判定対象の Figure オブジェクトを指定します。
figTrans - Figure 用の変換行列を指定します。
gsArray - 衝突した GeometricShape を格納するための配列を指定します。(格納不要時は null 指定可)
gsArrayResultNum - 衝突した個数を格納するための 1 要素の配列を指定します。(格納不要時は null 指定可)
param - パラメータを指定します。指定できる値は以下の通りです。(複数指定可)
戻り値:
判定結果を返します。返す値は以下の通りです。
例外:
NullPointerException -
pos0 が null の場合に発生します。
NullPointerException -
pos1 が null の場合に発生します。
NullPointerException -
pos2 が null の場合に発生します。
NullPointerException -
figure が null の場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ TransformTree が更新されており、かつ循環が存在する場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera の上方向を示すオブジェクトが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera の上方向を示すオブジェクトの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属するアクティブな Light のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Light のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
ArithmeticException -
内部で計算エラーが起きた場合に発生します。

isInViewVolume

public static final boolean isInViewVolume(Figure figure,
                                           Transform figTrans,
                                           Camera camera,
                                           Transform camTrans,
                                           IndexBuffer[] ibArray,
                                           int[] ibArrayResultNum,
                                           int param)
Figure の可視判定を行います。

figTrans、camTrans が null の場合、恒等変換とみなします。
本メソッドを呼ぶと Figure.updatePosture(Transform) による figure の更新が行われます。
param が 0 のときは IndexBuffer と VertexBuffer を元に可視判定を行います。

パラメータ:
figure - 可視判定対象となる Figure オブジェクトを指定します。
figTrans - figure に対するワールド座標系への変換行列を指定します。 (null 指定可)
camera - 可視判定を行う Camera オブジェクトを指定します。
camTrans - camera に対するワールド座標系への変換行列を指定します。 (null 指定可)
ibArray - 可視サブメッシュを IndexBuffer の配列で指定します。(null 指定可)
ibArrayResultNum - 可視サブメッシュの個数を指定します。ibArray が null ではない場合は ibArray に渡した IndexBuffer の数を指定します。
param - パラメータを指定します。指定できる値は以下の通りです。(複数指定可)
戻り値:
判定結果を返します。返す値は以下の通りです。
  • 可視サブメッシュが存在 - true
  • 可視サブメッシュが存在しない - false
例外:
NullPointerException -
figure が null の場合に発生します。
NullPointerException -
camera が null の場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ TransformTree が更新されており、かつ循環が存在する場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera の上方向を示すオブジェクトが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera の上方向を示すオブジェクトの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属するアクティブな Light のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Light のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
ArithmeticException -
camTrans が 非正則である場合に発生します。
ArithmeticException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera がターゲットを持たず、カメラ-ワールド変換が非正則である場合に発生します。

isInViewVolume

public static final boolean isInViewVolume(Figure figure,
                                           Transform figTrans,
                                           Camera camera,
                                           Vector3D pos,
                                           Vector3D look,
                                           Vector3D up,
                                           IndexBuffer[] ibArray,
                                           int[] ibArrayResultNum,
                                           int param)
Figure の可視判定を行います。

figTrans が null の場合、恒等変換とみなします。
本メソッドを呼ぶと Figure.updatePosture(Transform) による figure の更新が行われます。
param が 0 のときは IndexBuffer と VertexBuffer を元に可視判定を行います。

パラメータ:
figure - 可視判定対象となる Figure オブジェクトを指定します。
figTrans - figure に対するワールド座標系への変換行列を指定します。 (null 指定可)
camera - 可視判定を行う Camera オブジェクトを指定します。
pos - camera の位置を示す Vector3D オブジェクトを指定します。
look - camera の視線方向を示す Vector3D オブジェクトを指定します。
up - camera の上方向を示す Vector3D オブジェクトを指定します。
ibArray - 可視サブメッシュを IndexBuffer の配列で指定します。 (null 指定可)
ibArrayResultNum - 可視サブメッシュの個数を指定します。ibArray が null ではない場合は ibArray に渡した IndexBuffer の数を指定します。
param - パラメータを指定します。指定できる値は以下の通りです。(複数指定可)
戻り値:
判定結果を返します。返す値は以下の通りです。
  • 可視サブメッシュが存在 - true
  • 可視サブメッシュが存在しない - false
例外:
NullPointerException -
figure が null の場合に発生します。
NullPointerException -
camera が null の場合に発生します。
NullPointerException -
pos が null の場合に発生します。
NullPointerException -
look が null の場合に発生します。
NullPointerException -
up が null の場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ TransformTree が更新されており、かつ循環が存在する場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera の上方向を示すオブジェクトが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera の上方向を示すオブジェクトの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属するアクティブな Light のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Light のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
ArithmeticException -
内部で計算エラーが起きた場合に発生します。

isInViewVolume

public static final boolean isInViewVolume(VertexBuffer vb,
                                           IndexBuffer ib,
                                           Transform trans,
                                           Camera camera,
                                           Transform camTrans,
                                           int param)
VertexBuffer と IndexBuffer の対に関する可視判定を行います。

figTrans、camTrans が null の場合、恒等変換とみなします。
param が 0 のときは ib と vb を元に可視判定を行います。

パラメータ:
vb - 可視判定対象となる VertexBuffer オブジェクトを指定します。
ib - 可視判定対象となる IndexBuffer オブジェクトを指定します。
trans - vb に対するワールド座標系への変換行列を指定します。 (null 指定可)
camera - 可視判定を行う Camera オブジェクトを指定します。
camTrans - camera に対するワールド座標系への変換行列を指定します。 (null 指定可)
param - パラメータを指定します。指定できる値は以下の通りです。
戻り値:
判定結果を返します。返す値は以下の通りです。
  • 可視 - true
  • 不可視 - false
例外:
NullPointerException -
vb が null の場合に発生します。
NullPointerException -
ib が null の場合に発生します。
NullPointerException -
camera が null の場合に発生します。
IllegalArgumentException -
ib が vb の範囲外を参照している場合に発生します。
IllegalArgumentException -
ib の IndexBuffer のタイプがスプライトであるが、vb のパラメータに位置・ポイントスプライト情報を持たない場合に発生します。
IllegalArgumentException -
ib の IndexBuffer のタイプがスプライト以外であるが、vb のパラメータにポイントスプライト情報を持つ場合に発生します。
ArithmeticException -
内部で計算エラーが起きた場合に発生します。

isInViewVolume

public static final boolean isInViewVolume(VertexBuffer vb,
                                           IndexBuffer ib,
                                           Transform trans,
                                           Camera camera,
                                           Vector3D pos,
                                           Vector3D look,
                                           Vector3D up,
                                           int param)
VertexBuffer と IndexBuffer の対に関する可視判定を行います。

trans が null の場合、恒等変換とみなします。
param が 0 のときは ib と vb を元に可視判定を行います。

パラメータ:
vb - 可視判定対象となる VertexBuffer オブジェクトを指定します。
ib - 可視判定対象となる IndexBuffer オブジェクトを指定します。
trans - vb に対するワールド座標系への変換行列を指定します。 (null 指定可)
camera - 可視判定を行う Camera オブジェクトを指定します。
pos - camera の位置を示す Vector3D オブジェクトを指定します。
look - camera の視線方向を示す Vector3D オブジェクトを指定します。
up - camera の上方向を示す Vector3D オブジェクトを指定します。
param - パラメータを指定します。指定できる値は以下の通りです。
戻り値:
判定結果を返します。返す値は以下の通りです。
  • 可視 - true
  • 不可視 - false
例外:
NullPointerException -
vb が null の場合に発生します。
NullPointerException -
ib が null の場合に発生します。
NullPointerException -
camera が null の場合に発生します。
NullPointerException -
pos が null の場合に発生します。
NullPointerException -
look が null の場合に発生します。
NullPointerException -
up が null の場合に発生します。
IllegalArgumentException -
ib が vb の範囲外を参照している場合に発生します。
IllegalArgumentException -
ib の IndexBuffer のタイプがスプライトであるが、vb のパラメータに位置・ポイントスプライト情報を持たない場合に発生します。
IllegalArgumentException -
ib の IndexBuffer のタイプがスプライト以外であるが、vb のパラメータにポイントスプライト情報を持つ場合に発生します。

getDrawRegion

public static final void getDrawRegion(Figure figure,
                                       Transform figTrans,
                                       Graphics3D g3d,
                                       RegionI area)
指定した Figure において、カメラの可視領域に存在し実際に描画されている矩形領域を取得します。

指定した Figure がカメラの可視領域に存在しないとき、矩形領域は取得できません。その場合、特に例外としては扱われません。
アクティブな Camera の種別が Camera.MCE_CAMERA_TYPE_FRUSTUM の場合、動作不定です。

パラメータ:
figure - 可視判定対象となる Figure オブジェクトを指定します。
figTrans - figure に対するワールド座標系への変換行列を指定します。 (null 指定可)
g3d - Graphics3D オブジェクトを指定します。
area - 描画領域を示す RegionI オブジェクトを指定します。
例外:
NullPointerException -
figure が null の場合に発生します。
NullPointerException -
g3d が null の場合に発生します。
NullPointerException -
area が null の場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure に Camera が設定されているが、Camera の親ノードが存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure に Camera が設定されているが、Camera の親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
figure、g3d ともにカメラが設定されていない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ TransformTree が更新されており、かつ循環が存在する場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属する投影テクスチャ用プロジェクタ、およびアクティブな Camera の上方向を示すオブジェクトが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Camera の上方向を示すオブジェクトの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure が持つ NodeDeformer に属するアクティブな Light のターゲットが NodeDeformer に属していない場合に発生します。
com.docomostar.lang.IllegalStateException -
Light のターゲットの親ノードが Figure を介して参照する TransformTree が、存在しない場合に発生します。
ArithmeticException -
内部で計算エラーが起きた場合に発生します。
com.docomostar.lang.IllegalStateException -
Figure に関連された NodeDeformer と Camera に関連された NodeDeformer が不整合である場合に発生します。


NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。