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

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

public final class BoneDeformer
extends Object3D

ボーンアニメーションを扱うクラスです。

Figure.setBoneDeformer(BoneDeformer) により Figure に関連付けて用いられます。 Figure を介して参照する TransformTree をボーンの階層構造の表現に用います。
各ボーンは TransformTree のノードとして表され、ある頂点が所属するボーンと、そのボーンに対する重みは setTransformAndWeights(int, short[], float[], int) で設定します。このとき、重みは合計が 1.0 になるように正規化されます。 アニメーションは Figure を介して参照する VertexBuffer の頂点に対して行い、各頂点は最大 4 つのボーンに所属できます。 ボーンごとに自身の変換行列を用いて頂点のワールド座標系における位置を計算し、それらの重み付け和により最終的な頂点の座標が決定します。ライティングやスフィアマップを行っている場合には法線、バイノーマルやタンジェントに対してもアニメーションの計算を行います。

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


フィールドの概要
 
クラス 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
 
コンストラクタの概要
BoneDeformer(int vertNum, int transNum)
          BoneDeformer を生成します。
 
メソッドの概要
 void couplingTransformTree(TransformTree tTree, int meshTix)
          BoneDeformer と TransformTree の整合を検査します。
 void getTransformAndWeights(int index, short[] transIds, float[] weights)
          頂点を指定して、ボーンアニメーションで用いる Transform とその重みを取得します。
 short[] getTransIndexMap()
          変換行列と頂点を指定するインデックスとの対応マップを取得します。
 int getTransNum()
          変換行列の数を取得します。
 void setTransformAndWeights(int index, short[] transIds, float[] weights, int num)
          頂点を指定して、ボーンアニメーションで用いる Transform とその重みを設定します。
 void setTransIndexMap(short[] trIxMap)
          変換行列と頂点を指定するインデックスとの対応マップを設定します。
 
クラス 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
 

コンストラクタの詳細

BoneDeformer

public BoneDeformer(int vertNum,
                    int transNum)
BoneDeformer を生成します。

パラメータ:
vertNum - 頂点数を指定します。
transNum - 変換行列の数を指定します。

vertNum はボーンアニメーションを行う VertexBuffer の頂点数と一致しなければなりません。
transNum は Figure を介して関連付けられる TransformTree の要素数と一致しなければなりません。

例外:
IllegalArgumentException -
vertNum が [1, 32767] 以外の場合に発生します。
IllegalArgumentException -
transNum が 0 以下、もしくは 255 を超えている場合に発生します。
メソッドの詳細

setTransformAndWeights

public final void setTransformAndWeights(int index,
                                         short[] transIds,
                                         float[] weights,
                                         int num)
頂点を指定して、ボーンアニメーションで用いる Transform とその重みを設定します。

重みは内部で合計が 1.0 になるように正規化されます。
尚、モデルデータに含まれる BoneDeformer は transIds のインデックス情報が
内部状態で保持されるため、本 API では使用できません。
コンストラクタを使用して生成した BoneDeformer のみ有効となります。

パラメータ:
index - 関連付ける頂点を指定するインデックスを指定します。
transIds - Figure を介して参照する TransformTree でのインデックスの配列を指定します。
weights - 重みの配列を指定します。
num - 頂点に関連付ける変換行列および重みの数を指定します。
例外:
NullPointerException -
transIds が null の場合に発生します。
NullPointerException -
weights が null の場合に発生します。
IllegalArgumentException -
index が [0, 頂点数 - 1] 以外の場合に発生します。
IllegalArgumentException -
num が [1, 4] 以外の場合に発生します。
IllegalArgumentException -
transIds とweights の要素数が 4 以下ではない場合に発生します。
IllegalArgumentException -
transIds とweights の要素数が一致しない場合に発生します。
IllegalArgumentException -
weights に 0.0 以下の値が含まれている場合に発生します。
IllegalArgumentException -
transIds に不正なインデックス( [0, 変換行列数 - 1] 以外)が含まれている場合に発生します。
IllegalArgumentException -
This がモデルデータに含まれていた BoneDeformer の場合に発生します。

getTransformAndWeights

public final void getTransformAndWeights(int index,
                                         short[] transIds,
                                         float[] weights)
頂点を指定して、ボーンアニメーションで用いる Transform とその重みを取得します。

尚、モデルデータに含まれる BoneDeformer は transIds のインデックス情報が
内部状態で保持されるため、本 API では使用できません。
コンストラクタを使用して生成した BoneDeformer のみ有効となります。

パラメータ:
index - 頂点を指定するインデックスを指定します。
transIds - 頂点に関連付けられているボーンを指定する TransformTree でのインデックスを渡す配列を指定します。
weights - 頂点に関連付けられている重みを渡す配列を指定します。
例外:
NullPointerException -
transIds が null の場合に発生します。
NullPointerException -
weights が null の場合に発生します。
IllegalArgumentException -
index が [0, 頂点数 - 1] 以外の場合に発生します。
IllegalArgumentException -
This がモデルデータに含まれていた BoneDeformer の場合に発生します。

getTransNum

public final int getTransNum()
変換行列の数を取得します。

戻り値:
変換行列の数を返します。

setTransIndexMap

public final void setTransIndexMap(short[] trIxMap)
変換行列と頂点を指定するインデックスとの対応マップを設定します。

パラメータ:
trIxMap - 対応マップを配列で指定します。
例外:
IndexOutOfBoundsException -
trIxMap 配列の範囲外にアクセスする場合に発生します。

getTransIndexMap

public final short[] getTransIndexMap()
変換行列と頂点を指定するインデックスとの対応マップを取得します。

戻り値:
対応マップを配列で返します。

couplingTransformTree

public final void couplingTransformTree(TransformTree tTree,
                                        int meshTix)
BoneDeformer と TransformTree の整合を検査します。

パラメータ:
tTree - この BoneDeformer との整合検査を行う TransformTree を指定します。
meshTix - tTree の中に Mesh を変換する変換行列が存在する場合、これのインデックスを指定します。存在しない場合には -1 を指定します。
例外:
NullPointerException -
tTree が null の場合に発生します。
IllegalArgumentException -
meshTix が範囲外の場合に発生します。
IllegalArgumentException -
getTransNum() メソッドで得られる数と tTree の要素数が一致しない場合に発生します。
ArithmeticException -
内部で計算エラーが起きた場合に発生します。


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ドコモの商標または登録商標です。

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