|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
Objectcom.docomostar.opt.ui.eruption.Object3D
com.docomostar.opt.ui.eruption.Animatable
com.docomostar.opt.ui.eruption.TransformTree
public final class TransformTree
TransformTree は Figure と対になり、シーングラフを構成します。
TransformTree はその中でも座標変換とシーングラフの構造を規定します。また、Figure に BoneDeformer が関連付けられている場合には、
同じ TransformTree がボーン階層の表現にも用いられます。
TransformTree の内部表現は一次元配列のようなフラットな構造であり、各ノードはインデックス経由で参照されます。
ノード間の親子関係は子ノードが親ノードのインデックスを保持することで実現しています。
端末によって、本クラスはサポートされていない場合があります。未サポートの場合、メソッドが呼び出された時点で UnsupportedOperationException が発生します。
| フィールドの概要 | |
|---|---|
static int |
MCE_SCALE_TYPE_LOCAL
スケールが子ノードに掛からないように階層計算を行う TransformTree を生成します(=2)。 |
static int |
MCE_SCALE_TYPE_NORMAL
通常のSRTの順に Transform の階層計算を行う TransformTree を生成します(=0)。 |
static int |
MCE_SCALE_TYPE_POST
スケールが各 Transform の座標系に掛かるように階層計算を行う TransformTree を生成します(=1)。 |
static int |
MCE_TRANSFORMTREE_ROOT
TransformTree のルートを表します(=-1)。 |
| クラス com.docomostar.opt.ui.eruption.Animatable から継承されたフィールド |
|---|
MCE_MAX_ACTION_NUM |
| コンストラクタの概要 | |
|---|---|
TransformTree(int num,
int func)
TransformTree を生成します。 |
|
| メソッドの概要 | |
|---|---|
int |
getNumTransform()
要素数を取得します。 |
int |
getParent(int index)
親インデックスを取得します。 |
void |
getToWorldTransform(int index,
Transform dst)
ワールド座標への変換行列を取得します。 |
void |
getTransform(int index,
Transform dst)
変換行列を取得します。 |
boolean |
loopCheck()
親子関係の循環を検査します。 |
void |
mulScale(int index,
Vector3D v)
変換行列にスケーリング成分を乗算します。 |
void |
relatedMultiply()
親子関係にもとづき TransformTree を更新します。 |
void |
reset()
TransformTree の変換行列を初期状態に戻します。 |
void |
reset(int index)
指定された Transform をリセットします。 |
void |
setDampingAngle(int index,
float angle)
ダンピング角を設定します。 |
void |
setIdentity(int index)
恒等変換行列を設定します。 |
void |
setParent(int index,
int parentIndex)
親子関係を設定します。 |
void |
setRestrictionAngle(int index,
Vector3D min,
Vector3D max)
IK 計算時の制限角を設定します。 |
void |
setRotateEuler(int index,
int type,
Vector3D v)
回転成分を設定(オイラー指定)します。 |
void |
setTransform(int index,
Transform src)
変換行列を設定します。 |
void |
setTranslate(int index,
Vector3D v)
平行移動成分を設定します。 |
boolean |
solveIK(int endIdx,
int traceBackNum,
Vector3D goalPos,
boolean isDamping,
int loopNum)
IK を計算します。 |
| クラス com.docomostar.opt.ui.eruption.Animatable から継承されたメソッド |
|---|
getAction, getAction, getActionController, getFrame, getRefGid, getRefGid, setAction, setAction, setActionController, setFrame, setRefGid, setRefGid, setUseActionControllerNum, updatePosture |
| クラス 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_SCALE_TYPE_NORMAL
Transform の階層計算を行う TransformTree を生成します(=0)。
public static final int MCE_SCALE_TYPE_POST
Transform の座標系に掛かるように階層計算を行う TransformTree を生成します(=1)。(XSI のデフォルト)
public static final int MCE_SCALE_TYPE_LOCAL
TransformTree を生成します(=2)。(Maya のデフォルト)
public static final int MCE_TRANSFORMTREE_ROOT
| コンストラクタの詳細 |
|---|
public TransformTree(int num,
int func)
TransformTree を生成します。
初期値は以下の通りです。
num - 要素数を指定します。func - ポストスケールを使用しない場合は MCE_SCALE_TYPE_NORMAL を指定します。使用する場合は MCE_SCALE_TYPE_POST もしくは MCE_SCALE_TYPE_LOCAL を指定します。
ポストスケールについてはシーングラフを用いた場合のオブジェクト関連を参照してください。
IllegalArgumentException -
num が [1, 32767] 以外の場合に発生します。
IllegalArgumentException -
func が MCE_SCALE_TYPE_NORMAL、MCE_SCALE_TYPE_POST、MCE_SCALE_TYPE_LOCAL以外の場合に発生します。| メソッドの詳細 |
|---|
public final void setParent(int index,
int parentIndex)
index - parentIndex を親とする要素(子)のインデックスを指定します。parentIndex - 親インデックスを指定します。カレントの TransformTree オブジェクトをルートとする場合は、(MCE_TRANSFORMTREE_ROOT)を指定します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。
IndexOutOfBoundsException -
parentIndex が 0 未満、または parentIndex が要素数以上の場合に発生します。ただし、parentIndex が ルート(MCE_TRANSFORMTREE_ROOT)の場合を除きます。public final int getParent(int index)
index - 子のインデックスを指定します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。public final int getNumTransform()
public final void setIdentity(int index)
index - 設定する要素のインデックスを指定します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。
public final void setTransform(int index,
Transform src)
index - 設定する要素のインデックスを指定します。src - 設定する変換行列を表す Transform を指定します。
NullPointerException -
src が null の場合に発生します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。
public final void getTransform(int index,
Transform dst)
index - 変換行列を取得する要素のインデックスを指定します。dst - 変換行列を渡す Transform を指定します。
NullPointerException -
dst が null の場合に発生します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。
public final void setTranslate(int index,
Vector3D v)
index - 設定する要素のインデックスを指定します。v - 平行移動成分を表すVector3D を指定します。
NullPointerException -
v が null の場合に発生します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。
public final void setRotateEuler(int index,
int type,
Vector3D v)
index - 設定する要素のインデックスを指定します。type - 回転順を指定します。指定できる値は、以下の通りです。
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度)を返す。
NullPointerException -
v が null の場合に発生します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。
IllegalArgumentException -
type が不正な場合に発生します。
public final void mulScale(int index,
Vector3D v)
index - 設定する要素のインデックスを指定します。v - 乗算するスケーリング成分を表す Vector3D を指定します。
NullPointerException -
v が null の場合に発生します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。public final void reset()
TransformTree の変換行列を初期状態に戻します。
データを Loader でロードした場合は、ロード直後の状態に戻し、TransformTree のコンストラクタで生成した場合は、
すべての行列を恒等変換行列にします。
設定された親子関係は保持されます。
com.docomostar.lang.IllegalStateException -
This が保持する要素が循環している場合に発生します。public final void reset(int index)
指定された Transform をリセットします。
index - リセットする Transform のインデックスを指定します。
IndexOutOfBoundsException -
public final void getToWorldTransform(int index,
Transform dst)
ワールド座標への変換行列は Figure.updatePosture(Transform)、または relatedMultiply() が呼ばれたときに更新されます。
そのため、最新の変換行列が必要なときには、This の属する Figure が持つ 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 に反映されるようになります。
index - 取得する要素のインデックスを指定します。dst - 変換行列を渡す Transform を指定します。
NullPointerException -
dst が null の場合に発生します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。public final void relatedMultiply()
TransformTree を更新します。
com.docomostar.lang.IllegalStateException -
This が保持する要素が循環している場合に発生します。public final boolean loopCheck()
true
false
public final boolean solveIK(int endIdx,
int traceBackNum,
Vector3D goalPos,
boolean isDamping,
int loopNum)
IK を計算します。
IKを計算します。traceBackNum により、計算時にルートに向かって辿る階層数を指定できますが、ルートまでの階層数よりも traceBackNum の方が大きい場合、または traceBackNum が 0 未満の場合にはルートまで辿ります。
回転の順序は z->x->y です。
endIdx - IK 適用対象の端点となる要素のインデックスを指定します。traceBackNum - endIdx からルートに向かって辿る階層数を指定します。goalPos - ゴールの位置を指定します。isDamping - 指定できる値は、以下の通りです。
true
false
loopNum - IK 計算でのループ回数の上限を指定します。
true
traceBackNum == 0、またはエラー - false
IndexOutOfBoundsException -
endIndex が [0, 要素数 - 1] 以外の場合に発生します。
NullPointerException -
goalPos が null の場合に発生します。
public final void setRestrictionAngle(int index,
Vector3D min,
Vector3D max)
IK 計算時に、指定した Transform のとり得る回転角の範囲を指定します。
index - 制限を適用する要素のインデックスを指定します。min - 下限を指定します。max - 上限を指定します。
IndexOutOfBoundsException -
Index が [0, 要素数 - 1] 以外の場合に発生します。
IllegalArgumentException -
min の中に [-1.0, 1.0] 以外となる成分 c が存在する場合に発生します。
IllegalArgumentException -
max の中に [-1.0, 1.0] 以外となる成分 c が存在する場合に発生します。
IllegalArgumentException -
max.c < min.c となる成分 c が存在する場合に発生します。
public final void setDampingAngle(int index,
float angle)
ダンピングありで IK を計算する際に、1 回あたりの回転角の変更量を設定します。
index - 設定する要素のインデックスを指定します。angle - ダンピング角を指定します。
IndexOutOfBoundsException -
index が [0, 要素数 - 1] 以外の場合に発生します。
IllegalArgumentException -
angle が [0, 1] 以外の場合に発生します。
|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
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ドコモの商標または登録商標です。
その他記載された会社名、製品名などは該当する各社の商標または登録商標です。