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

Object
  上位を拡張 com.docomostar.opt.ui.eruption.Object3D
      上位を拡張 com.docomostar.opt.ui.eruption.GeometricShape
すべての実装されたインタフェース:
NodeDeformerNode

public final class GeometricShape
extends Object3D
implements NodeDeformerNode

幾何形状を表すクラスです。

使用可能な形状は、球、ボックス、円柱、カプセルの4 つです。これら形状は半径、中心位置およびサイズで規定され、生成にはそれらを直接指定するか、VertexBuffer と IndexBuffer の対で 構成されるサブメッシュから自動的に計算する方法があります。
球体の GeometricShape に関してはフラスタムカリング、衝突判定、可視判定に用いることができます。フラスタムカリングに関しては、Figure.setGeometricShape(GeometricShape) で球体を Figure にセットすることにより、その Figure が描画される際、セットした球体を フラスタムカリングに用いることができます。また、IndexBuffer.setGeometricShape(GeometricShape) を用いて IndexBuffer にセットすることでサブメッシュ単位のフラスタムカリングをすることもできます。 球体はフラスタムカリング時に自動生成させることもできますが、 自動生成されたものを改めて Figure や IndexBuffer にセットすることはできません。 球体はシーンノードとしてシーングラフに参加することができ、ノードアニメーションの対象になり得ます。 衝突判定、可視判定に関しては Collision3Dクラス を参照してください。

上記機能の使用時、意図した通りの結果が得られているかを確認しやすくするため、簡易描画の機能を備えています。ただし、描画するためには Figure/IndexBuffer にセットされているか、 NodeDeformer の子ノードになっている必要があり、単独での描画はできません。 描画に関しては Graphics3D.setAttribute(int) も参照してください。

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


フィールドの概要
static int MCE_GEOMETRICSHAPE_TYPE_BOX
          ボックスを表します(=4)。
static int MCE_GEOMETRICSHAPE_TYPE_CAPSULE
          カプセルを表します(=3)。
static int MCE_GEOMETRICSHAPE_TYPE_CYLINDER
          円柱を表します(=2)。
static int MCE_GEOMETRICSHAPE_TYPE_SPHERE
          球を表します(=1)。
static int MCE_GEOMETRICSHAPE_TYPE_SPHERE_AUTO
          自動生成された球を表します(=5)。
static int MCE_ROTATE_TYPE_NONE
          回転 指定しません(=1)。
static int MCE_ROTATE_TYPE_X
          回転 X 軸指定を表します(=2)。
static int MCE_ROTATE_TYPE_Z
          回転 Z 軸指定を表します(=3)。
 
クラス com.docomostar.opt.ui.eruption.Object3D から継承されたフィールド
MCE_CLASS_TYPE_ACTION, MCE_CLASS_TYPE_ACTIONCONTROLLER, MCE_CLASS_TYPE_ACTIONTABLE, MCE_CLASS_TYPE_APPEARANCE, MCE_CLASS_TYPE_BONE, MCE_CLASS_TYPE_BONEDEFORMER, MCE_CLASS_TYPE_CAMERA, MCE_CLASS_TYPE_EFFECTSOURCE, MCE_CLASS_TYPE_FIGURE, MCE_CLASS_TYPE_GEOMETRICSHAPE, MCE_CLASS_TYPE_GRAPHICS3D, MCE_CLASS_TYPE_INDEXBUFFER, MCE_CLASS_TYPE_INTERSECTIONATTRIBUTES, MCE_CLASS_TYPE_LIGHT, MCE_CLASS_TYPE_MORPHDEFORMER, MCE_CLASS_TYPE_NODEDEFORMER, MCE_CLASS_TYPE_OBJECT3D, MCE_CLASS_TYPE_PARTICLE, MCE_CLASS_TYPE_TEXTURE, MCE_CLASS_TYPE_TEXTURETABLE, MCE_CLASS_TYPE_TRACKBALL, MCE_CLASS_TYPE_TRANSFORMTREE, MCE_CLASS_TYPE_VERTEXBUFFER
 
コンストラクタの概要
GeometricShape(int type, int rotType, VertexBuffer vb, IndexBuffer[] ibs, float fitting)
          VertexBuffer と IndexBuffer の対から GeometricShape を生成します。
GeometricShape(int type, Vector3D center, Vector3D size, float radius)
          GeometricShape を生成します。
 
メソッドの概要
 void addSiblingNode(NodeDeformerNode node, Transform offset)
          親(NodeDeformer)に兄弟ノードを追加します。
 void getCenter(Vector3D dst)
          中心位置を取得します。
 NodeDeformer getParent()
          親(NodeDeformer)を取得します。
 int getParentIndex()
          親(NodeDeformer)における自身のインデックスを取得します。
 float getRadius()
          半径を取得します。
 int getShapeType()
          形状の型を取得します。
 void getSize(Vector3D dst)
          サイズを取得します。
 void getToWorldTransform(Transform dst)
          ワールド座標への変換行列を取得します。
 void getTransform(Transform dst)
          変換行列を取得します。
 void getWorldCenter(Vector3D dst)
          ワールド座標系における中心位置を取得します。
 float getWorldRadius()
          ワールド座標系における半径を取得します。
 void getWorldSize(Vector3D dst)
          ワールド座標系におけるサイズを取得します。
 boolean isVisible()
          NodeDeformerNode の可視状態を検査します。
 void mulScale(Vector3D v)
          変換行列にスケーリング成分を乗算します。
 void removeFromParent()
          親(NodeDeformer)から自身を除去します。
 void resetTransform()
          ノードの変換行列を初期状態(ロード時の初期値)にします。
 void set(Vector3D center, Vector3D size, float radius)
          パラメータを設定します。
 void setIdentity()
          変換行列を恒等変換行列に設定します。
 void setRotateEuler(int type, Vector3D v)
          変換行列の回転をオイラー角で設定します。
 void setTransform(Transform src)
          変換行列を設定します。
 void setTranslate(Vector3D v)
          変換行列の移動成分を設定します。
 void setVisible(boolean visible)
          NodeDeformerNode に対して可視/不可視を設定します。
 void showMesh(boolean show)
          GeometricShape の描画フラグを設定します。
 
クラス com.docomostar.opt.ui.eruption.Object3D から継承されたメソッド
dispose, equals, findObject3D, findObject3D, getClassType, getUserId, hashCode, isDisposed, isRenderEnable, setRenderEnable, setUserId
 
クラス Object から継承されたメソッド
getClass, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

MCE_GEOMETRICSHAPE_TYPE_SPHERE

public static final int MCE_GEOMETRICSHAPE_TYPE_SPHERE
球を表します(=1)。

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

MCE_GEOMETRICSHAPE_TYPE_CYLINDER

public static final int MCE_GEOMETRICSHAPE_TYPE_CYLINDER
円柱を表します(=2)。

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

MCE_GEOMETRICSHAPE_TYPE_CAPSULE

public static final int MCE_GEOMETRICSHAPE_TYPE_CAPSULE
カプセルを表します(=3)。

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

MCE_GEOMETRICSHAPE_TYPE_BOX

public static final int MCE_GEOMETRICSHAPE_TYPE_BOX
ボックスを表します(=4)。

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

MCE_GEOMETRICSHAPE_TYPE_SPHERE_AUTO

public static final int MCE_GEOMETRICSHAPE_TYPE_SPHERE_AUTO
自動生成された球を表します(=5)。

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

MCE_ROTATE_TYPE_NONE

public static final int MCE_ROTATE_TYPE_NONE
回転 指定しません(=1)。

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

MCE_ROTATE_TYPE_X

public static final int MCE_ROTATE_TYPE_X
回転 X 軸指定を表します(=2)。

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

MCE_ROTATE_TYPE_Z

public static final int MCE_ROTATE_TYPE_Z
回転 Z 軸指定を表します(=3)。

関連項目:
定数フィールド値
コンストラクタの詳細

GeometricShape

public GeometricShape(int type,
                      Vector3D center,
                      Vector3D size,
                      float radius)
GeometricShape を生成します。 初期値は以下の通りです。

パラメータ:
type - 生成する GeometricShape の種類を指定します。指定できる値は、以下の通りです。
center - 中心点を指定します。
size - サイズを指定します。
    各形状が
  • MCE_GEOMETRICSHAPE_TYPE_CYLINDER の場合、中心点からの高さ
  • MCE_GEOMETRICSHAPE_TYPE_CAPSULE の場合、中心位置からの円筒部分の高さ
  • MCE_GEOMETRICSHAPE_TYPE_BOX の場合、中心位置から最も遠い点で x, y, z が正となる位置(横高さ縦の半分の値)
    を意味します。ここで円柱とカプセルは x, y, z 軸のいずれかに沿った形で定義されるため、サイズに指定する Vector3D は形状が沿う軸を表すただ一つの成分だけが正である必要があります。
radius - 半径を指定します。

MCE_GEOMETRICSHAPE_TYPE_SPHERE の場合には size が、MCE_GEOMETRICSHAPE_TYPE_BOX の場合には radius が使用されません。

例外:
NullPointerException -
center が null の場合に発生します。
NullPointerException -
type が MCE_GEOMETRICSHAPE_TYPE_CYLINDER、MCE_GEOMETRICSHAPE_TYPE_CAPSULE、MCE_GEOMETRICSHAPE_TYPE_BOX のいずれかで、かつ size が null の場合に発生します。
IllegalArgumentException -
type が不正な場合に発生します。
IllegalArgumentException -
type が MCE_GEOMETRICSHAPE_TYPE_SPHERE、MCE_GEOMETRICSHAPE_TYPE_CYLINDER、MCE_GEOMETRICSHAPE_TYPE_CAPSULE のいずれかで、かつ radius が 0.0 以下の場合に発生します。
IllegalArgumentException -
type が MCE_GEOMETRICSHAPE_TYPE_CYLINDER、MCE_GEOMETRICSHAPE_TYPE_CAPSULE のいずれかで、size の全ての成分が 0.0 以下の場合に発生します。
IllegalArgumentException -
type が MCE_GEOMETRICSHAPE_TYPE_CYLINDER、MCE_GEOMETRICSHAPE_TYPE_CAPSULE のいずれかで、size が 0.0 より大きい値を持つ成分が2 つ以上存在する場合に発生します。
IllegalArgumentException -
type が MCE_GEOMETRICSHAPE_TYPE_BOXで、size.c <= 0.0 となる成分 c が存在する場合に発生します。

GeometricShape

public GeometricShape(int type,
                      int rotType,
                      VertexBuffer vb,
                      IndexBuffer[] ibs,
                      float fitting)
VertexBuffer と IndexBuffer の対から GeometricShape を生成します。

パラメータ:
type - 生成する GeometricShape の種類を指定します。指定できる値は、以下の通りです。
rotType - 生成する GeometricShape の向きを指定します。指定できる値は、以下の通りです。(回転角はすべての軸に対して 90 度ずつです。)
vb - VertexBuffer オブジェクトを指定します。
ibs - IndexBuffer オブジェクトの配列を指定します。
fitting - fit 率を指定します。
例外:
NullPointerException -
vb が null の場合に発生します。
NullPointerException -
ibs が null の場合に発生します。
NullPointerException -
ibs の要素が null の場合に発生します。
IllegalArgumentException -
type が不正な場合に発生します。
IllegalArgumentException -
rotType が不正な場合に発生します。
IllegalArgumentException -
ibs の要素の IndexBuffer のタイプ(明示Index or 暗黙Index)が異なる場合に発生します。
IllegalArgumentException -
fitting が 0.0 以下の場合に発生します。
IllegalArgumentException -
頂点が存在しない場合に発生しますに発生します。
メソッドの詳細

set

public final void set(Vector3D center,
                      Vector3D size,
                      float radius)
パラメータを設定します。

パラメータ:
center - 中心点を指定します。
size - サイズを指定します。GeometricShape の形状に応じて設定されます。
radius - 半径を指定します。

MCE_GEOMETRICSHAPE_TYPE_SPHERE の場合には size が、MCE_GEOMETRICSHAPE_TYPE_BOX の場合には radius が使用されません。

例外:
NullPointerException -
center が null の場合に発生します。
NullPointerException -
This の形状が MCE_GEOMETRICSHAPE_TYPE_CYLINDER、MCE_GEOMETRICSHAPE_TYPE_CAPSULE、MCE_GEOMETRICSHAPE_TYPE_BOX のいずれかで、かつ size が null の場合に発生します。
IllegalArgumentException -
This の形状が MCE_GEOMETRICSHAPE_TYPE_SPHERE、MCE_GEOMETRICSHAPE_TYPE_SPHERE_AUTO、MCE_GEOMETRICSHAPE_TYPE_CYLINDER,MCE_GEOMETRICSHAPE_TYPE_CAPSULE のいずれかで、かつ、radius が 0.0 以下の場合に発生します。
IllegalArgumentException -
This の形状が MCE_GEOMETRICSHAPE_TYPE_CYLINDER、MCE_GEOMETRICSHAPE_TYPE_CAPSULE のいずれかで、かつ、size のすべての成分が 0.0以下の場合に発生します。
IllegalArgumentException -
This の形状が MCE_GEOMETRICSHAPE_TYPE_CYLINDER、MCE_GEOMETRICSHAPE_TYPE_CAPSULE のいずれかで、かつ、size に関して0.0 より大きい値を持つ成分が 2 つ以上存在する場合に発生します。
IllegalArgumentException -
This の形状が MCE_GEOMETRICSHAPE_TYPE_BOXで、かつ size.c <= 0.0 となる成分 c が存在する場合に発生します。

getShapeType

public final int getShapeType()
形状の型を取得します。

戻り値:
形状の型を返します。返す値は、以下の通りです。

getCenter

public final void getCenter(Vector3D dst)
中心位置を取得します。

パラメータ:
dst - 中心位置を受け取る Vector3D オブジェクトを指定します。
例外:
NullPointerException -
dst が null の場合に発生します。

getSize

public final void getSize(Vector3D dst)
サイズを取得します。

各形状におけるサイズの意味は GeometricShape(int , Vector3D , Vector3D , float ) の記述を参照してください。

パラメータ:
dst - サイズを受け取る Vector3D オブジェクトを指定します。
例外:
NullPointerException -
dst が null の場合に発生します。
IllegalArgumentException -
This の型が MCE_GEOMETRICSHAPE_TYPE_CYLINDER,MCE_GEOMETRICSHAPE_TYPE_CAPSULE, MCE_GEOMETRICSHAPE_TYPE_BOX 以外の場合に発生します。

getRadius

public final float getRadius()
半径を取得します。

戻り値:
半径を返します。

getWorldCenter

public final void getWorldCenter(Vector3D dst)
ワールド座標系における中心位置を取得します。

パラメータ:
dst - 中心位置を受け取る Vector3D オブジェクトを指定します。
例外:
NullPointerException -
dst が null の場合に発生します。

getWorldSize

public final void getWorldSize(Vector3D dst)
ワールド座標系におけるサイズを取得します。

各形状におけるサイズの意味は GeometricShape(int , Vector3D , Vector3D , float ) の記述を参照してください。

パラメータ:
dst - サイズを受け取る Vector3D オブジェクトを指定します。
例外:
NullPointerException -
dst が null の場合に発生します。
IllegalArgumentException -
This の型が MCE_GEOMETRICSHAPE_TYPE_CYLINDER, MCE_GEOMETRICSHAPE_TYPE_CAPSULE, MCE_GEOMETRICSHAPE_TYPE_BOX 以外の場合に発生します。

getWorldRadius

public final float getWorldRadius()
ワールド座標系における半径を取得します。

戻り値:
ワールド座標系における半径を返します。

showMesh

public final void showMesh(boolean show)
GeometricShape の描画フラグを設定します。

Figure/VertexBuffer の描画時、あわせて GeometricShape を描画するか否かを設定します。 実際の表示には Graphics3D.setAttribute(int) による GeometricShape の表示指定も必要です。
描画系の API において、Graphics3D.MCE_FRUSTUM_CULLING を指定せず、 Graphics3D.MCE_FRUSTUM_CULLING_INDEXBUFFER_GS が指定されている場合には GeometricShape の描画は行われません。

パラメータ:
show - 描画パラメータを指定します。指定できる値は、以下の通りです。
  • 描画する - true
  • 描画しない - false

getToWorldTransform

public final void getToWorldTransform(Transform dst)
インタフェース NodeDeformerNode の記述:
ワールド座標への変換行列を取得します。

ワールド座標への変換行列は Figure.updatePosture(Transform)、または TransformTree.relatedMultiply() が呼ばれたときに更新されます。
そのため、最新の変換行列が必要なときには、This の属する Figure が持つ TransformTree に対して TransformTree.relatedMultiply() を呼ぶか、 This の属する Figure に対して Figure.updatePosture(Transform)、または内部的に同 API を呼んで更新処理を行います。
API(Collision3D.isHit(Vector3D, Vector3D, Figure, Transform, GeometricShape[], int[], int),
Collision3D.isHit(GeometricShape, Figure, Transform, Transform, GeometricShape[], int[], int),
Collision3D.isHit(Vector3D, Vector3D, Vector3D, Figure, Transform, GeometricShape[], int[], int),
Collision3D.isInViewVolume(Figure, Transform, Camera, Transform, IndexBuffer[], int[], int),
Collision3D.isInViewVolume(Figure, Transform, Camera, Vector3D, Vector3D, Vector3D, IndexBuffer[], int[], int),
Figure.pick(Vector3D, Vector3D, IntersectionAttributes, int, boolean, Transform),
Graphics3D.drawFigure(Figure, Transform, int),
Graphics3D.addDrawQueueFigure(Figure, Transform))
を事前に呼んでおいた場合、最新の変換行列の情報が dst に反映されるようになります。

定義:
インタフェース NodeDeformerNode 内の getToWorldTransform
パラメータ:
dst - 取得する変換行列の格納先を指定します。

setTransform

public final void setTransform(Transform src)
インタフェース NodeDeformerNode の記述:
変換行列を設定します。

対応する TransformTree ノードの変換行列を設定します。

定義:
インタフェース NodeDeformerNode 内の setTransform
パラメータ:
src - 設定する変換行列を指定します。

getTransform

public final void getTransform(Transform dst)
インタフェース NodeDeformerNode の記述:
変換行列を取得します。

対応する TransformTree ノードの変換行列を取得します。

定義:
インタフェース NodeDeformerNode 内の getTransform
パラメータ:
dst - 取得する変換行列の格納先を指定します。

setIdentity

public final void setIdentity()
インタフェース NodeDeformerNode の記述:
変換行列を恒等変換行列に設定します。

対応する TransformTree ノードの変換行列を恒等変換行列に設定します。

定義:
インタフェース NodeDeformerNode 内の setIdentity

setTranslate

public final void setTranslate(Vector3D v)
インタフェース NodeDeformerNode の記述:
変換行列の移動成分を設定します。

対応する TransformTree ノードの移動成分に設定します。

定義:
インタフェース NodeDeformerNode 内の setTranslate
パラメータ:
v - 移動成分を表す Vector3D を指定します。

setRotateEuler

public final void setRotateEuler(int type,
                                 Vector3D v)
インタフェース NodeDeformerNode の記述:
変換行列の回転をオイラー角で設定します。

対応する TransformTree ノードの回転をオイラー角で設定します。

定義:
インタフェース NodeDeformerNode 内の setRotateEuler
パラメータ:
type - 回転順を指定します。指定できる値は、以下の通りです。
v - 回転成分を表す Vector3D(1.0=360度) を指定します。

mulScale

public final void mulScale(Vector3D v)
インタフェース NodeDeformerNode の記述:
変換行列にスケーリング成分を乗算します。

対応する TransformTree ノードにスケーリング成分を乗算します。

定義:
インタフェース NodeDeformerNode 内の mulScale
パラメータ:
v - 乗算するスケーリング成分を表す Vector3D を指定します。

resetTransform

public final void resetTransform()
インタフェース NodeDeformerNode の記述:
ノードの変換行列を初期状態(ロード時の初期値)にします。

定義:
インタフェース NodeDeformerNode 内の resetTransform

addSiblingNode

public final void addSiblingNode(NodeDeformerNode node,
                                 Transform offset)
インタフェース NodeDeformerNode の記述:
親(NodeDeformer)に兄弟ノードを追加します。

This に対して TransformTree 内の同一 Transform を使用する兄弟ノードを追加します。

定義:
インタフェース NodeDeformerNode 内の addSiblingNode
パラメータ:
node - 追加する兄弟ノードを指定します。
offset - 追加する兄弟ノードのオフセットを表すTransform を指定します。オフセットなしの場合は null を設定します。

removeFromParent

public final void removeFromParent()
インタフェース NodeDeformerNode の記述:
親(NodeDeformer)から自身を除去します。

定義:
インタフェース NodeDeformerNode 内の removeFromParent

setVisible

public final void setVisible(boolean visible)
インタフェース NodeDeformerNode の記述:
NodeDeformerNode に対して可視/不可視を設定します。

This の可視/不可視を設定します。Figure の場合、不可視状態では自身の持つメッシュが描画されなくなるだけであり、自分よりも下の階層は通常通り描画されます。
Light, Camera を不可視にした場合、描画時にそれらは無効となります。

定義:
インタフェース NodeDeformerNode 内の setVisible
パラメータ:
visible - 指定できる値は、以下の通りです。
  • 可視にする場合 - true
  • 不可視にする場合 - false

isVisible

public final boolean isVisible()
インタフェース NodeDeformerNode の記述:
NodeDeformerNode の可視状態を検査します。

定義:
インタフェース NodeDeformerNode 内の isVisible
戻り値:
返す値は、以下の通りです。
  • 可視の場合 - true
  • 不可視の場合 - false

getParent

public final NodeDeformer getParent()
インタフェース NodeDeformerNode の記述:
親(NodeDeformer)を取得します。

定義:
インタフェース NodeDeformerNode 内の getParent
戻り値:
親(NodeDeformer) を返します。

getParentIndex

public final int getParentIndex()
インタフェース NodeDeformerNode の記述:
親(NodeDeformer)における自身のインデックスを取得します。

定義:
インタフェース NodeDeformerNode 内の getParentIndex
戻り値:
親(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ドコモの商標または登録商標です。

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