com.nttdocomo.ui.graphics3d
クラス DrawableObject3D

Object
  拡張com.nttdocomo.ui.graphics3d.Object3D
      拡張com.nttdocomo.ui.graphics3d.DrawableObject3D
直系の既知のサブクラス:
Figure, Group, Primitive

public abstract class DrawableObject3D
extends Object3D

描画対象として扱われる 3Dオブジェクト のクラスを表すための抽象的な基底クラスとして、 描画可能な3Dオブジェクトクラスを定義します。

具体的には、レンダリング機能である Graphics3D.renderObject3D(DrawableObject3D, Transform) メソッド、および、当たり判定を行う isCross(DrawableObject3D, Transform, Transform) メソッドに与える、3Dオブジェクトの型になります。 描画が可能であるとは、ポリゴン等のプリミティブ図形を保持できる、 ということを意味します。

また、レンダリング時に利用される描画用パラメータのうちで、 ポリゴン等のプリミティブ図形が共通に持っているパラメータを 設定および管理するための、定数およびメソッドを定義しています。

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

フィールドの概要
static int BLEND_ADD
           加算を表す図形用ブレンドモードの名前です (=64)。
static int BLEND_ALPHA
           アルファブレンドを表す図形用ブレンドモードの名前です (=32)。
static int BLEND_NORMAL
           通常の描画処理(ブレンドなし)を表す図形用ブレンドモードの名前です (=0)。
 
クラス 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
 
メソッドの概要
 boolean isCross(DrawableObject3D obj, Transform t_myself, Transform t_obj)
           この描画可能な3Dオブジェクトと、 指定された描画可能な3Dオブジェクト間の当たり判定処理を 行い、その結果を取得します。
abstract  void setBlendMode(int mode)
           図形用ブレンドモードを設定します。
abstract  void setPerspectiveCorrectionEnabled(boolean isOn)
           パースペクティブコレクション(テクスチャの歪み補正)の有効化/無効化を設定します。
abstract  void setTransparency(float v)
           透明度をパーセントで設定します。
 
クラス com.nttdocomo.ui.graphics3d.Object3D から継承したメソッド
createInstance, createInstance, dispose, getTime, getType, setTime
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

BLEND_NORMAL

public static final int BLEND_NORMAL

通常の描画処理(ブレンドなし)を表す図形用ブレンドモードの名前です (=0)。

関連項目:
定数フィールド値

BLEND_ALPHA

public static final int BLEND_ALPHA

アルファブレンドを表す図形用ブレンドモードの名前です (=32)。

描画結果は以下のようになります。

(背景 x (100% - 透明度) + プリミティブ x 透明度)

三原色 RGB の各要素について、個別に演算が行われます。 演算時に結果がオーバーフローしたときには、色を示す値は飽和されて 扱われます。

関連項目:
定数フィールド値

BLEND_ADD

public static final int BLEND_ADD

加算を表す図形用ブレンドモードの名前です (=64)。

描画結果は以下のようになります。

(背景 x 100% + プリミティブ x 透明度)

三原色 RGB の各要素について、個別に演算が行われます。 演算時に結果がオーバーフローしたときには、色を示す値は飽和されて 扱われます。

関連項目:
定数フィールド値
メソッドの詳細

setPerspectiveCorrectionEnabled

public abstract void setPerspectiveCorrectionEnabled(boolean isOn)

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

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

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

setBlendMode

public abstract void setBlendMode(int mode)

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

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

setTransparency

public abstract void setTransparency(float v)

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

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

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

isCross

public boolean isCross(DrawableObject3D obj,
                       Transform t_myself,
                       Transform t_obj)

この描画可能な3Dオブジェクトと、 指定された描画可能な3Dオブジェクト間の当たり判定処理を 行い、その結果を取得します。

二つのオブジェクト間において、交差するポリゴンがあれば true を、 なければ false を戻します。 従って、球の中に小さい球を含むような、形状を包含しているだけのときの 結果は false です。

判定のための計算は、内部的には整数演算になりますので、 誤差が生じる可能性があります。

いずれかの描画可能な3Dオブジェクトが グループ である場合には、 グループ に設定されている変換行列に、 引数の内容を乗算した結果を用いて判定します。 グループ がネストしているときは、 ネスト毎に次々と乗算を行っていき、 その行列に引数の内容を乗算した結果を用います。

いずれかの描画可能な3Dオブジェクトに、ポリゴン がまったく含まれていないときには、結果は常に false になります。 ポリゴンを持つのは、 フィギュア オブジェクト または、 プリミティブ オブジェクトです。

二つの グループ オブジェクト間での判定を行わせることが、 典型的な利用方法です。 このメソッドにより、多数のポリゴン同士の当たり判定を得ようとするとき、 その処理は非常に重いものになります。 このとき、実際には複雑である形状を単純化した、ポリゴン数が少ない 形状データを代替に用いて、判定をさせるという手法 を用いることをおすすめします。 この場合は近似条件による判定結果になりますが、高速に結果を取得できます。

※判定機能に関する補足説明

※演算誤差に関する補足説明

パラメータ:
obj - 描画可能な3Dオブジェクトを指定します。
t_myself - この描画可能な3Dオブジェクト用の変換行列を指定します。 null ならば恒等変換を設定した場合と等価です。
t_obj - 引数に指定された描画可能な3Dオブジェクト用の変換行列を指定します。 null ならば恒等変換を設定した場合と等価です。
戻り値:
交差があるかどうかを返します。 true ならば有り、 false ならば無しです。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
NullPointerException - 引数 obj が null の場合に発生します。
UIException - 引数 obj が既に dispose() されたオブジェクトの場合に発生します (ILLEGAL_STATE)。
UIException - 引数 obj が グループ であり、かつ、 その グループ 内に、 既に dispose() された フィギュア オブジェクトまたは プリミティブ のオブジェクトが存在する場合に発生します。 (ILLEGAL_STATE)。
UIException - このオブジェクトが グループ であり、かつ、 その グループ 内に、 既に dispose() された フィギュア オブジェクトまたは プリミティブ のオブジェクトが存在する場合に発生します。 (ILLEGAL_STATE)。