com.nttdocomo.ui.graphics3d
クラス Figure

Object
  拡張com.nttdocomo.ui.graphics3d.Object3D
      拡張com.nttdocomo.ui.graphics3d.DrawableObject3D
          拡張com.nttdocomo.ui.graphics3d.Figure

public class Figure
extends DrawableObject3D

モデルの形状データを保持する、フィギュアクラスを定義します。

フィギュアオブジェクトは、レンダリング機能のメソッド Graphics3D.renderObject3D(DrawableObject3D, Transform) において、モデルの形状データ、つまり、 描画対象となるポリゴン (三角形または四角形のプリミティブ図形) の形状に関する情報を保持します。 この情報をモデルデータと呼ぶこととします。

初期状態ではモデルデータ内の座標そのままの基本姿勢を取ります。 アクションテーブルデータ ( ActionTable ) を使用することで、姿勢を変化させることができます。

メソッド Object3D.createInstance(InputStream) または Object3D.createInstance(byte[]) によって生成された グループ オブジェクトに含まれるフィギュアオブジェクトには、既に アクションテーブル オブジェクトが設定されていることがあります。 この際、モデルデータの定義によっては、 既に設定されている アクションテーブル オブジェクトを再設定することを禁止されている場合があります。

フィギュアオブジェクトには、 モデル用 テクスチャ オブジェクトを 一度に任意の数だけ設定することが可能です。 モデルデータが要求している数より多い場合は、レンダリング時に 余ったデータは無視されます。 モデルデータが要求している数より少ない場合は、不足している データ部分については、ポリゴンのデフォルト色にて塗りつぶしされます。 このときデフォルト色が設定されていない場合、あるいは、 透明に設定されている場合には、塗りつぶしは行われずに、 該当箇所が透けてポリゴンが無くなったかのように見えます。

メソッド Object3D.createInstance(InputStream) または Object3D.createInstance(byte[]) によって生成された グループ オブジェクト に含まれる フィギュアオブジェクトには、既に モデル用の テクスチャ オブジェクト(群)が設定されていることがあります。

フィギュアオブジェクトは、以下のレンダリング用の情報を保持します。

各種パラメータは、初期状態では以下のようになります。
パラメータ初期状態
テクスチャ歪み補正 無効
setPerspectiveCorrectionEnabled(false) が呼ばれた状態
図形用ブレンドモード 無設定 ( DrawableObject3D.BLEND_NORMAL )
透明度 100 パーセント(不透明)

フィギュアオブジェクトの透明度は、設定されている図形用ブレンドモードが DrawableObject3D.BLEND_ALPHA, DrawableObject3D.BLEND_ADD のどちらかのときに有効になります。 ただしデータ内で、透明機能が無効に設定されているポリゴンについては、 設定されている透明度は影響を与えません。

メッシュグループ内のフィギュアオブジェクトに関する、 追記事項を以下に示します。

フィギュアオブジェクトに関する、追記事項を以下に示します。

導入されたバージョン:
DoJa-4.0 (901i)

フィールドの概要
 
クラス 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
 
メソッドの概要
 ActionTable getActionTable()
           モデルデータに設定されている アクションテーブル オブジェクトを取得します。
 int getNumPatterns()
           モデルデータの外見状態数を取得します。
 void setAction(ActionTable action, int index)
           モデルデータに アクションテーブル オブジェクト、および、 アクションデータの番号を設定することで、モデルにアクションを設定します。
 void setBlendMode(int mode)
           図形用ブレンドモードを設定します。
 void setPattern(int pattern)
           モデルデータの外見状態を設定します。
 void setPerspectiveCorrectionEnabled(boolean isOn)
           パースペクティブコレクション(テクスチャの歪み補正)の有効化/無効化を設定します。
 void setTexture(Texture texture)
           モデルデータにマッピングするモデル用 テクスチャ オブジェクトを設定します。
 void setTextures(Texture[] textures)
           モデルデータにマッピングするモデル用 テクスチャ オブジェクトを設定します。
 void setTime(int frame)
           現在時刻を設定して、さらに、その時刻値をフレーム値とみなして、 モデルデータに設定されているアクションデータを用いて姿勢と外見状態を設定します。
 void setTransparency(float v)
           透明度をパーセントで設定します。
 
クラス com.nttdocomo.ui.graphics3d.DrawableObject3D から継承したメソッド
isCross
 
クラス com.nttdocomo.ui.graphics3d.Object3D から継承したメソッド
createInstance, createInstance, dispose, getTime, getType
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

setTexture

public void setTexture(Texture texture)

モデルデータにマッピングするモデル用 テクスチャ オブジェクトを設定します。

このメソッドを呼び出すことは、 setTextures(Texture[]) メソッドに、長さが 1 の配列を引数に与えて呼び出すことに等価です。

パラメータ:
texture - テクスチャ オブジェクトを指定します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
NullPointerException - 引数 texture が null の場合に発生します。
UIException - 引数 texture が既に dispose() されたオブジェクトの場合に発生します (ILLEGAL_STATE)。

setTextures

public void setTextures(Texture[] textures)

モデルデータにマッピングするモデル用 テクスチャ オブジェクトを設定します。

このメソッドに長さが 1 の配列を引数に与えて呼び出すことは、 setTexture(Texture) メソッドに配列の要素である テクスチャ オブジェクトを与えて呼び出すことに等価です。

パラメータ:
textures - テクスチャ オブジェクトの配列を指定します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
NullPointerException - 引数 textures が null の場合に発生します。
NullPointerException - 引数 textures の要素のいずれかが null の場合に発生します。
UIException - 引数 textures の要素のいずれかがが既に dispose() されたオブジェクトの場合に発生します (ILLEGAL_STATE)。

setAction

public void setAction(ActionTable action,
                      int index)

モデルデータに アクションテーブル オブジェクト、および、 アクションデータの番号を設定することで、モデルにアクションを設定します。

モデルデータに姿勢と外見状態を設定するには、 setTime(int) メソッドを用います。 なお本メソッド呼び出し時には、 setTime(0) のメソッド呼び出しが自動で行われます。

パラメータ:
action - アクションテーブル オブジェクトを指定します。
index - アクションデータの番号を指定します。 番号を指定することで、 アクションテーブル オブジェクトが持っているアクションデータの中の一つを選択します。 0 以上、かつ action.getNumActions() メソッドが返す値より小さい値を指定します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
NullPointerException - 引数 action が null の場合に発生します。
UIException - 引数 action が既に dispose() されたオブジェクトの場合に発生します (ILLEGAL_STATE)。
IllegalArgumentException - 引数 index が 0 未満の場合、あるいは、 引数 index が action.getNumActions() メソッドが返す値以上の場合に発生します。
IllegalStateException - モデルデータに、 アクションテーブル オブジェクトの変更を禁止する状態が設定されている場合に発生します。
IllegalStateException - モデルデータに、引数 action の内容が適合しないときに発生します。

getActionTable

public ActionTable getActionTable()

モデルデータに設定されている アクションテーブル オブジェクトを取得します。

setAction(ActionTable, int) メソッド呼び出しによって設定されている アクションテーブル オブジェクトを返します。 まだ setAction(ActionTable, int) メソッドが一度も呼ばれていないときに、 このメソッドが呼ばれた場合、もし このオブジェクトがメソッド Object3D.createInstance(InputStream) または Object3D.createInstance(byte[]) によって生成された グループ オブジェクトに含まれる フィギュアオブジェクトであり、かつ、その処理において アクションテーブル オブジェクトが設定されているときには、そのオブジェクトを返します。 いずれにも当てはまらないとき、つまり アクションテーブル オブジェクトの設定がまったくされていない場合は、nullを返します。

戻り値:
モデルデータに設定されている アクションテーブル オブジェクトを返します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
UIException - 設定されている アクションテーブル オブジェクトが既に dispose() されたオブジェクトの場合に発生します (ILLEGAL_STATE)。

setTime

public void setTime(int frame)

現在時刻を設定して、さらに、その時刻値をフレーム値とみなして、 モデルデータに設定されているアクションデータを用いて姿勢と外見状態を設定します。

モデルデータは、姿勢については再度このメソッドを呼び出すまで姿勢を保ちますが、 外見状態については再度このメソッドが呼び出されるか、あるいは、 setPattern(int) メソッドを呼び出されるまで外見状態を保ちます。

モデルデータにアクションデータが設定されていないときには、 姿勢の設定は行わずに、現在時刻を設定して処理を完了します。 このときに例外は発生しません。

モデルデータに設定されている アクションテーブル オブジェクトが既に dispose() されている場合には、 アクションデータが設定されていないものとして扱います。 このときに例外は発生しません。

オーバーライド:
クラス Object3D 内の setTime
パラメータ:
frame - 姿勢のフレーム値(現在時刻)を指定します。 描画時に、設定された フレーム値が 0 未満のときは 0 に、フレーム値が 設定されているアクションテーブル.getMaxFrame(設定済みのアクション番号) の呼び出しによる取得値より大きいときはその取得値に、 それぞれ調整されます。 ただし描画時に、アクションテーブル オブジェクトが設定されて いない場合には、値の調整は行われません。 描画時に、利用される値は調整されますが、設定されている値は変更されません。 従って、任意の int 値を設定できます。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。

getNumPatterns

public int getNumPatterns()

モデルデータの外見状態数を取得します。

戻り値:
モデルデータの外見状態数を返します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。

setPattern

public void setPattern(int pattern)

モデルデータの外見状態を設定します。

※この機能は、「テクスチャアニメーション」「ダイナミックポリゴン」 という名称で呼ばれることがあります。

アクションデータ内には、姿勢と一緒に、外見状態に関する情報が含まれています。 そのため、アクションデータが設定されているフィギュアオブジェクトの setTime(int) メソッドが呼び出されるとき、 姿勢が設定されると同時に、外見状態も設定されます。 そのため、通常はこのメソッドを呼び出す必要はありませんが、 明示的に外見状態を設定したいときにはこのメソッドを使用します。

モデルの外見状態を構成する要素は、 ベースとなる状態(共通セット)を含めて、最大で 32 個が存在できます。 設定可能なモデルの外見の状態数は getNumPatterns() メソッドにより取得できます。 外見の状態の n 番目(1 以上)を指定する場合は 引数 pattern に (1 << (n-1)) の値を指定します。 外見が何も指定されていない状態(共通セット)にするには 0 を指定します。 モデルの外見の状態に、具体的な意味をいくつか持たせ、 その組み合わせを明示的に指定したいような時に利用できます。 具体例を以下に示します。

 例:
   以下のような
     外見の状態0: 共通セットとなる顔
     外見の状態1: 閉じた右目
     外見の状態2: 開いた右目
     外見の状態3: 閉じた左目
     外見の状態4: 開いた左目
     外見の状態5: 閉じた口
     外見の状態6: 開いた口
   6種類の要素によって構成される外観状態をモデルデータが持っているとき、
   引数と意味の対応は、以下の
     setPattern(0)
       → 目と口のない顔
     setPattern(1<<0)
       → 閉じた右目を持つ顔
     setPattern(1<<1)
       → 開いた右目を持つ顔
     setPattern(1<<2)
       → 閉じた左目を持つ顔
     setPattern(1<<3)
       → 開いた左目を持つ顔
     setPattern((1<<1)|(1<<3)|(1<<5))
       → 開いた両目と開いた口を持つ顔
     setPattern((1<<0)|(1<<1))
       → 閉じた右目と開いた右目の両方を持つ顔
   ようになります。
 

パラメータ:
pattern - モデルデータの外見状態を指定します。 LSB から 、ベースとなる状態0(共通セット)を 除いた外見状態数 ( getNumPatterns() - 1 ) のビットを使用して それぞれの外見状態を使用するか否かを指定します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
IllegalArgumentException - 引数 pattern に不正な値が指定された場合に発生します。 具体的には、 LSB から 、ベースとなる状態0(共通セット)を除いた外見状態数 ( getNumPatterns() - 1 )よりも上位 のビットが 1 になっている値が指定された場合に発生します。

setPerspectiveCorrectionEnabled

public void setPerspectiveCorrectionEnabled(boolean isOn)
クラス DrawableObject3D の記述:

パースペクティブコレクション(テクスチャの歪み補正)の有効化/無効化を設定します。

初期状態では、無効に設定されています。

定義:
クラス DrawableObject3D 内の setPerspectiveCorrectionEnabled
パラメータ:
isOn - 有効化するならば true を指定します。 しないならば false を指定します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。

setBlendMode

public void setBlendMode(int mode)
クラス DrawableObject3D の記述:

図形用ブレンドモードを設定します。

定義:
クラス DrawableObject3D 内の setBlendMode
パラメータ:
mode - 図形用ブレンドモードを指定します。 DrawableObject3D.BLEND_NORMAL, DrawableObject3D.BLEND_ALPHA, DrawableObject3D.BLEND_ADD のいずれかを指定します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
IllegalArgumentException - 引数 mode が DrawableObject3D.BLEND_NORMAL, DrawableObject3D.BLEND_ALPHA, DrawableObject3D.BLEND_ADD, のいずれでもない場合に発生します。

setTransparency

public void setTransparency(float v)
クラス DrawableObject3D の記述:

透明度をパーセントで設定します。

透明度は、設定されている図形用ブレンドモードが DrawableObject3D.BLEND_ALPHA, DrawableObject3D.BLEND_ADD のどちらかのときに有効になります。

定義:
クラス DrawableObject3D 内の setTransparency
パラメータ:
v - 透明度をパーセントで指定します。 100 のときが不透明です。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
IllegalArgumentException - 引数 v が Float.NaNの場合、 0 未満の場合、あるいは 100 より大きい場合に発生します。