Objectcom.nttdocomo.ui.graphics3d.Object3D
com.nttdocomo.ui.graphics3d.DrawableObject3D
com.nttdocomo.ui.graphics3d.Group
グループは、
グループオブジェクトには、大きく分けて2種類があり、
3Dオブジェクト 群のひとかたまりのグループを表す、
グループクラスを定義します。
3Dオブジェクト 群への参照を保持します。
その 3Dオブジェクト は、
グループオブジェクトであっても構いません。
ただし、参照に自分自身を持つことはできません。
また、グループ A がグループ B の参照を持っているときに、
グループB にグループ A の参照を加えるなど、
参照の関係をループさせることはできません。
以上の条件を満たすならば、異なるグループオブジェクトが、
同一の 3Dオブジェクト を参照していても構いません。
getType() メソッドにより取得できる値によって区別できます。
通常のグループ Object3D.TYPE_GROUP と、
メッシュグループ Object3D.TYPE_GROUP_MESH
の2種類です。メッシュグループは、バイナリデータを入力する
メソッド Object3D.createInstance(InputStream)
Object3D.createInstance(byte[])
を利用することで生成できます。
このメッシュグループは、以下の特徴を持ちます。
フィギュア オブジェクトまたは
プリミティブ オブジェクトへの参照を持ちます。
プリミティブ オブジェクト
に含まれるプリミティブ図形の要素数は、 255 個を超えることがあります。
3Dオブジェクト 群において、
フィギュア オブジェクトまたは
プリミティブ オブジェクトと
テクスチャ オブジェクトとの関連付け、および、
フィギュア オブジェクトと
アクションテーブル オブジェクトとの
関連付けが、自動で設定されることがあります。
このうち、 テクスチャ オブジェクト、
および、該当する アクションテーブル オブジェクトは、
グループ内に含まれない、つまり公開されないことがあります。
含まれるかどうかについては、データ依存になります。
addElement(Object3D) ) 、
削除 ( removeElement(int) )
のぞれぞれについて、利用ができない状態に設定されることがあります。
グループは、 変換行列 オブジェクトを一つ保持します。
初期状態では、この行列の内容は恒等変換を意味する状態になっています。
ただし、メソッド Object3D.createInstance(InputStream)
Object3D.createInstance(byte[])
によって生成された場合は、行列の内容はバイナリデータによって
設定されることがあります。
メッシュグループに関する、追記事項を以下に示します。
setTime(int) することで実現できます。
| フィールドの概要 |
| クラス com.nttdocomo.ui.graphics3d.DrawableObject3D から継承したフィールド |
BLEND_ADD, BLEND_ALPHA, BLEND_NORMAL |
| クラス com.nttdocomo.ui.graphics3d.Object3D から継承したフィールド |
TYPE_ACTION_TABLE, TYPE_FIGURE, TYPE_FOG, TYPE_GROUP, TYPE_GROUP_MESH, TYPE_LIGHT, TYPE_NONE, TYPE_PRIMITIVE, TYPE_TEXTURE |
| コンストラクタの概要 | |
Group()
3Dオブジェクト への参照を持たない
グループオブジェクトを生成します。
|
|
| メソッドの概要 | |
void |
addElement(Object3D obj)
新規に 3Dオブジェクト への参照を追加します。
|
void |
dispose()
このオブジェクト、および、参照を保持している 3Dオブジェクト が持っている関連データを解放します。
|
Object3D |
getElement(int index)
番号を指定して、参照を保持している 3Dオブジェクト
のうちの一つを取得します。
|
int |
getNumElements()
参照を保持している 3Dオブジェクト の数を取得します。
|
void |
getTransform(Transform transform)
設定されている 変換行列 を取得します。
|
void |
removeElement(int index)
番号を指定して、参照を保持している 3Dオブジェクト
のうちの一つについて、参照を解除します。
|
void |
setBlendMode(int mode)
参照を保持している 描画可能な3Dオブジェクト
すべてに、図形用ブレンドモードを設定します。
|
void |
setPerspectiveCorrectionEnabled(boolean isOn)
参照を保持している 描画可能な3Dオブジェクト
すべてに、パースペクティブコレクションの設定をします。
|
void |
setTime(int time)
このオブジェクトに現在時刻を設定すると同時に、 参照を保持している 3Dオブジェクト
すべてに現在時刻を設定します。
|
void |
setTransform(Transform transform)
変換行列 を設定します。
|
void |
setTransparency(float v)
参照を保持している 描画可能な3Dオブジェクト
すべてに、透明度を設定します。
|
| クラス com.nttdocomo.ui.graphics3d.DrawableObject3D から継承したメソッド |
isCross |
| クラス com.nttdocomo.ui.graphics3d.Object3D から継承したメソッド |
createInstance, createInstance, getTime, getType |
| クラス Object から継承したメソッド |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
public Group()
3Dオブジェクト への参照を持たない
グループオブジェクトを生成します。
生成したグループオブジェクトの Object3D.getType() メソッドを呼び出すとき、
その値は常に通常のグループ Object3D.TYPE_GROUP になります。
| メソッドの詳細 |
public void dispose()
このオブジェクト、および、参照を保持している
3Dオブジェクト が持っている関連データを解放します。
具体的には、参照を保持しているすべての
3Dオブジェクト の
dispose() メソッドを呼び出します。
従って、グループがネストしているときにも、再帰的にすべての
3Dオブジェクト の
dispose() メソッドが呼ばれます。
このオブジェクトにおいて、
既に dispose() メソッドが呼ばれているときには、
何もしません。このときに例外は発生しません。
また、参照を保持している
3Dオブジェクト (ネストしているオブジェクトも含む)のうち、
既に Object3D.dispose() メソッドが呼ばれているものが
あるときには、そのオブジェクトに対しては何もせず、このときにも
例外は発生しません。
Object3D 内の disposepublic int getNumElements()
参照を保持している 3Dオブジェクト の数を取得します。
3Dオブジェクト の数を返します。
参照を保持している 3Dオブジェクト の中に、
既に dispose() されているオブジェクトがあっても、
そのオブジェクトを含めた数を返します。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
public Object3D getElement(int index)
番号を指定して、参照を保持している 3Dオブジェクト
のうちの一つを取得します。
index - 3Dオブジェクトの番号を指定します。
0 以上、かつ、
getNumElements()
メソッドの戻り値より小さいことが必要です。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
IllegalArgumentException - 引数 index が 0 未満の場合、あるいは、
引数 index が
getNumElements()
メソッドが返す値以上の場合に発生します。
public void removeElement(int index)
番号を指定して、参照を保持している 3Dオブジェクト
のうちの一つについて、参照を解除します。
外された3Dオブジェクトの番号より、大きい番号に位置している3Dオブジェクトに ついては、すべて番号が一つ減った位置に移動します。
index - 3Dオブジェクトの番号を指定します。
0 以上、かつ、
getNumElements()
メソッドの戻り値より小さいことが必要です。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
IllegalArgumentException - 引数 index が 0 未満の場合、あるいは、
引数 index が
getNumElements()
メソッドが返す値以上の場合に発生します。
IllegalStateException - グループデータに、
3Dオブジェクトの参照の解除を禁止する状態が設定されている場合に発生します。
public void addElement(Object3D obj)
新規に 3Dオブジェクト への参照を追加します。
追加された3Dオブジェクトの位置を示す番号は、本メソッドを呼び出す前の
getNumElements()
メソッドの戻り値になります。
obj - 追加するオブジェクトを指定します。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
NullPointerException - 引数 obj が null の場合に発生します。
IllegalArgumentException - 引数 obj がこのオブジェクト (this) である場合に発生します。
IllegalArgumentException - 引数 obj が グループであり、かつ、
このオブジェクトが引数 obj の グループに含まれる場合
など、
2つのグループの関係が無限ループする場合に発生します。
IllegalStateException - バイナリデータに、3Dオブジェクトの参照の追加を
禁止する状態が設定されていた場合に発生します。
public void setTransform(Transform transform)
変換行列 を設定します。
引数により指定された 変換行列 オブジェクトの内容を、
内部処理により完全に複製します。
そのため、メソッドから戻った後に、
指定された 変換行列 を変更しても設定内容は
変わりません。
transform - 変換行列 オブジェクトを指定します。
null が指定された場合、恒等変換を意味する行列を設定したことになります。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
public void getTransform(Transform transform)
設定されている 変換行列 を取得します。
引数により指定された 変換行列 オブジェクトに、
このオブジェクトが持っている 変換行列 の内容をコピーします。
transform - 内容をコピーされたい変換行列 オブジェクトを指定します。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
NullPointerException - 引数 transform に null が指定された場合に発生します。
public void setTime(int time)
このオブジェクトに現在時刻を設定すると同時に、
参照を保持している 3Dオブジェクト
すべてに現在時刻を設定します。
具体的には、参照を保持している 3Dオブジェクト
のすべてについて、 Object3D.setTime(int)
メソッドを呼び出します。
従って、グループがネストしているときにも、再帰的にすべての
3Dオブジェクト の
setTime(int) メソッドが呼ばれます。
グループ内(ネストしているものも含む)の 3Dオブジェクト
のいずれかが既に dispose() されている場合には、
このオブジェクト、および、グループ内の3Dオブジェクトすべてに対して、
setTime(int) メソッドを全く呼び出さずに、
例外を発生して終了します。
メッシュグループ内のフィギュアオブジェクトをアニメーション したいときには、メッシュグループオブジェクトに対して、 このメソッドを呼び出す必要があります。 このとき、時刻値は任意の int 値を指定できます。 int 値とフレームカウントの対応付け、および、その値の単位は、 データに依存します。アクションテーブルとは異なり、 最大値を取得する方法は用意されていません。
Object3D 内の setTimetime - 現在時刻を指定します。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
UIException - グループ内(ネストしているものも含む)の 3Dオブジェクト
のいずれかが既に dispose() されている場合に発生します
(ILLEGAL_STATE)。
public void setPerspectiveCorrectionEnabled(boolean isOn)
参照を保持している
描画可能な3Dオブジェクト
すべてに、パースペクティブコレクションの設定をします。
具体的には、参照を保持している
描画可能な3Dオブジェクト
のすべてについて、 DrawableObject3D.setPerspectiveCorrectionEnabled(boolean)
メソッドを呼び出します。
従って、グループがネストしているときにも、再帰的にすべての
描画可能な3Dオブジェクト の
DrawableObject3D.setPerspectiveCorrectionEnabled(boolean) メソッドが呼ばれます。
グループ内(ネストしているものも含む)の
描画可能な3Dオブジェクト
のいずれかが既に dispose() されている場合には、
DrawableObject3D.setPerspectiveCorrectionEnabled(boolean)
メソッドを全く呼び出さずに、例外を発生して終了します。
DrawableObject3D 内の setPerspectiveCorrectionEnabledisOn - オンならば true を、オフならば false を指定します。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
UIException - グループ内(ネストしているものも含む)の
描画可能な3Dオブジェクト
のいずれかが既に dispose() されている場合に発生します
(ILLEGAL_STATE)。
public void setBlendMode(int mode)
参照を保持している 描画可能な3Dオブジェクト
すべてに、図形用ブレンドモードを設定します。
具体的には、参照を保持している
描画可能な3Dオブジェクト
のすべてについて、 DrawableObject3D.setBlendMode(int)
メソッドを呼び出します。
従って、グループがネストしているときにも、再帰的にすべての
描画可能な3Dオブジェクト の
DrawableObject3D.setBlendMode(int) メソッドが呼ばれます。
グループ内(ネストしているものも含む)の
描画可能な3Dオブジェクト
のいずれかが既に dispose() されている場合には、
DrawableObject3D.setBlendMode(int)
メソッドを全く呼び出さずに、例外を発生して終了します。
DrawableObject3D 内の setBlendModemode - ブレンドモードを指定します。
DrawableObject3D.BLEND_NORMAL,
DrawableObject3D.BLEND_ALPHA,
DrawableObject3D.BLEND_ADD
のいずれかを指定します。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
IllegalArgumentException - 引数 mode が
DrawableObject3D.BLEND_NORMAL,
DrawableObject3D.BLEND_ALPHA,
DrawableObject3D.BLEND_ADD,
のいずれでもない場合に発生します。
UIException - グループ内(ネストしているものも含む)の
描画可能な3Dオブジェクト
のいずれかが既に dispose() されている場合に発生します
(ILLEGAL_STATE)。
public void setTransparency(float v)
参照を保持している
描画可能な3Dオブジェクト
すべてに、透明度を設定します。
具体的には、参照を保持している
描画可能な3Dオブジェクト
のすべてについて、 DrawableObject3D.setTransparency(float)
メソッドを呼び出します。
従って、グループがネストしているときにも、再帰的にすべての
描画可能な3Dオブジェクト の
DrawableObject3D.setTransparency(float) メソッドが呼ばれます。
グループ内(ネストしているものも含む)の
描画可能な3Dオブジェクト
のいずれかが既に dispose() されている場合には、
DrawableObject3D.setTransparency(float)
メソッドを全く呼び出さずに、例外を発生して終了します。
DrawableObject3D 内の setTransparencyv - 透明度をパーセントで指定します。
100 のときが不透明です。
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します
(ILLEGAL_STATE)。
IllegalArgumentException - 引数 v が
Float.NaNの場合、
0 未満の場合、あるいは 100 より大きい場合に発生します。
UIException - グループ内(ネストしているものも含む)の
描画可能な3Dオブジェクト
のいずれかが既に dispose() されている場合に発生します
(ILLEGAL_STATE)。