|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
Objectcom.docomostar.opt.ui.eruption.Object3D
com.docomostar.opt.ui.eruption.GeometricShape
public final class GeometricShape
幾何形状を表すクラスです。
使用可能な形状は、球、ボックス、円柱、カプセルの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)。 |
| コンストラクタの概要 | |
|---|---|
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 |
| フィールドの詳細 |
|---|
public static final int MCE_GEOMETRICSHAPE_TYPE_SPHERE
public static final int MCE_GEOMETRICSHAPE_TYPE_CYLINDER
public static final int MCE_GEOMETRICSHAPE_TYPE_CAPSULE
public static final int MCE_GEOMETRICSHAPE_TYPE_BOX
public static final int MCE_GEOMETRICSHAPE_TYPE_SPHERE_AUTO
public static final int MCE_ROTATE_TYPE_NONE
public static final int MCE_ROTATE_TYPE_X
public static final int MCE_ROTATE_TYPE_Z
| コンストラクタの詳細 |
|---|
public GeometricShape(int type,
Vector3D center,
Vector3D size,
float radius)
GeometricShape を生成します。
初期値は以下の通りです。
GeometricShape の描画フラグ : false
type - 生成する GeometricShape の種類を指定します。指定できる値は、以下の通りです。
MCE_GEOMETRICSHAPE_TYPE_SPHERE
MCE_GEOMETRICSHAPE_TYPE_CYLINDER
MCE_GEOMETRICSHAPE_TYPE_CAPSULE
MCE_GEOMETRICSHAPE_TYPE_BOX
center - 中心点を指定します。size - サイズを指定します。
MCE_GEOMETRICSHAPE_TYPE_CYLINDER の場合、中心点からの高さ
MCE_GEOMETRICSHAPE_TYPE_CAPSULE の場合、中心位置からの円筒部分の高さ
MCE_GEOMETRICSHAPE_TYPE_BOX の場合、中心位置から最も遠い点で 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 が存在する場合に発生します。
public GeometricShape(int type,
int rotType,
VertexBuffer vb,
IndexBuffer[] ibs,
float fitting)
VertexBuffer と IndexBuffer の対から GeometricShape を生成します。
type - 生成する GeometricShape の種類を指定します。指定できる値は、以下の通りです。
MCE_GEOMETRICSHAPE_TYPE_SPHERE
MCE_GEOMETRICSHAPE_TYPE_CYLINDER
MCE_GEOMETRICSHAPE_TYPE_CAPSULE
MCE_GEOMETRICSHAPE_TYPE_BOX
rotType - 生成する GeometricShape の向きを指定します。指定できる値は、以下の通りです。(回転角はすべての軸に対して 90 度ずつです。)
MCE_ROTATE_TYPE_NONE
MCE_ROTATE_TYPE_X
MCE_ROTATE_TYPE_Z
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 -
| メソッドの詳細 |
|---|
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 が存在する場合に発生します。public final int getShapeType()
public final void getCenter(Vector3D dst)
dst - 中心位置を受け取る Vector3D オブジェクトを指定します。
NullPointerException -
dst が null の場合に発生します。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 以外の場合に発生します。public final float getRadius()
public final void getWorldCenter(Vector3D dst)
dst - 中心位置を受け取る Vector3D オブジェクトを指定します。
NullPointerException -
dst が null の場合に発生します。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 以外の場合に発生します。public final float getWorldRadius()
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
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 内の getToWorldTransformdst - 取得する変換行列の格納先を指定します。public final void setTransform(Transform src)
NodeDeformerNode の記述:
対応する TransformTree ノードの変換行列を設定します。
NodeDeformerNode 内の setTransformsrc - 設定する変換行列を指定します。public final void getTransform(Transform dst)
NodeDeformerNode の記述:
対応する TransformTree ノードの変換行列を取得します。
NodeDeformerNode 内の getTransformdst - 取得する変換行列の格納先を指定します。public final void setIdentity()
NodeDeformerNode の記述:
対応する TransformTree ノードの変換行列を恒等変換行列に設定します。
NodeDeformerNode 内の setIdentitypublic final void setTranslate(Vector3D v)
NodeDeformerNode の記述:
対応する TransformTree ノードの移動成分に設定します。
NodeDeformerNode 内の setTranslatev - 移動成分を表す Vector3D を指定します。
public final void setRotateEuler(int type,
Vector3D v)
NodeDeformerNode の記述:
対応する TransformTree ノードの回転をオイラー角で設定します。
NodeDeformerNode 内の setRotateEulertype - 回転順を指定します。指定できる値は、以下の通りです。
Transform.MCE_ROTATE_EULER_XYZ
Transform.MCE_ROTATE_EULER_XZY
Transform.MCE_ROTATE_EULER_YXZ
Transform.MCE_ROTATE_EULER_YZX
Transform.MCE_ROTATE_EULER_ZXY
Transform.MCE_ROTATE_EULER_ZYX
v - 回転成分を表す Vector3D(1.0=360度) を指定します。public final void mulScale(Vector3D v)
NodeDeformerNode の記述:
対応する TransformTree ノードにスケーリング成分を乗算します。
NodeDeformerNode 内の mulScalev - 乗算するスケーリング成分を表す Vector3D を指定します。public final void resetTransform()
NodeDeformerNode の記述:
NodeDeformerNode 内の resetTransform
public final void addSiblingNode(NodeDeformerNode node,
Transform offset)
NodeDeformerNode の記述:NodeDeformer)に兄弟ノードを追加します。
This に対して TransformTree 内の同一 Transform を使用する兄弟ノードを追加します。
NodeDeformerNode 内の addSiblingNodenode - 追加する兄弟ノードを指定します。offset - 追加する兄弟ノードのオフセットを表すTransform を指定します。オフセットなしの場合は null を設定します。public final void removeFromParent()
NodeDeformerNode の記述:NodeDeformer)から自身を除去します。
NodeDeformerNode 内の removeFromParentpublic final void setVisible(boolean visible)
NodeDeformerNode の記述:NodeDeformerNode に対して可視/不可視を設定します。
This の可視/不可視を設定します。Figure の場合、不可視状態では自身の持つメッシュが描画されなくなるだけであり、自分よりも下の階層は通常通り描画されます。
Light, Camera を不可視にした場合、描画時にそれらは無効となります。
NodeDeformerNode 内の setVisiblevisible - 指定できる値は、以下の通りです。
true
false
public final boolean isVisible()
NodeDeformerNode の記述:NodeDeformerNode の可視状態を検査します。
NodeDeformerNode 内の isVisibletrue
false
public final NodeDeformer getParent()
NodeDeformerNode の記述:NodeDeformer)を取得します。
NodeDeformerNode 内の getParentNodeDeformer) を返します。public final int getParentIndex()
NodeDeformerNode の記述:NodeDeformer)における自身のインデックスを取得します。
NodeDeformerNode 内の getParentIndexNodeDeformer)における自身のインデックスを返します。
|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
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ドコモの商標または登録商標です。
その他記載された会社名、製品名などは該当する各社の商標または登録商標です。