com.nttdocomo.ui.graphics3d
クラス Light

Object
  拡張com.nttdocomo.ui.graphics3d.Object3D
      拡張com.nttdocomo.ui.graphics3d.Light

public class Light
extends Object3D

光源データを保持する、光源クラスを定義します。

光源の最大数は機種依存です。 最大値は getMaxLights() メソッドにより取得できます。 この値は、レンダリング機能である Graphics3D.renderObject3D(DrawableObject3D, Transform) メソッド呼び出し時に、同時にサポートされる光源の最大数です。

光源オブジェクトは、光源のモード情報、および、 三次元ベクトル オブジェクトを二つ保持します。 ベクトルの一つは光源の位置を、もう一つは光源の向きを意味します。 ベクトル情報は、いずれもワールド座標による指定です。

光源のモードと二つのベクトルの関係は、以下のようになっています。
光源のモード 位置ベクトル 方向ベクトル
AMBIENT 無効無効
DIRECTIONAL無効有効
OMNI 有効無効
SPOT 有効有効
レンダリング時に、方向ベクトルがゼロベクトルであり、 モードが DIRECTIONAL または SPOT の場合には、 自動でベクトル (0, 0, -1) に補正されて扱われます。

setTime(int) メソッド呼び出しによって 現在時刻が変更されても、保持しているデータ内容は変化しません。

導入されたバージョン:
DoJa-4.0 (901i)
関連項目:
数値演算に関する共通の定義

フィールドの概要
static int AMBIENT
           環境光源を表す光源のモードの名前です(=128)。
static int DIRECTIONAL
           平行光源を表す光源のモードの名前です(=129)。
static int OMNI
           点光源を表す光源のモードの名前です(=130)。
static int SPOT
           スポット光源を表す光源のモードの名前です(=131)。
 
クラス 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
 
コンストラクタの概要
Light()
           光源オブジェクトを生成します。
 
メソッドの概要
static int getMaxLights()
           レンダリング時に適用可能な光源の最大数を取得します。
 Vector3D getPosition()
           光源の位置を取得します。
 Vector3D getVector()
           光源の向きを取得します。
 void setAttenuation(float constant, float linear, float quadratic)
           光源の減衰に関するパラメータを設定します。
 void setColor(int RGB)
           光源の色を設定します。
 void setIntensity(float intensity)
           光源の強度を設定します。
 void setMode(int mode)
           光源のモードを設定します。
 void setPosition(Vector3D v)
           光源の位置を設定します。
 void setSpotAngle(float angle)
           スポット光源モード用の角度を設定します。
 void setSpotExponent(float exponent)
           スポット光源モード用の輝度分布を設定します。
 void setVector(Vector3D v)
           光源の向きを設定します。
 
クラス com.nttdocomo.ui.graphics3d.Object3D から継承したメソッド
createInstance, createInstance, dispose, getTime, getType, setTime
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

AMBIENT

public static final int AMBIENT

環境光源を表す光源のモードの名前です(=128)。

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

DIRECTIONAL

public static final int DIRECTIONAL

平行光源を表す光源のモードの名前です(=129)。

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

OMNI

public static final int OMNI

点光源を表す光源のモードの名前です(=130)。

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

SPOT

public static final int SPOT

スポット光源を表す光源のモードの名前です(=131)。

関連項目:
定数フィールド値
コンストラクタの詳細

Light

public Light()

光源オブジェクトを生成します。

初期状態は以下のようになります。

メソッドの詳細

setPosition

public void setPosition(Vector3D v)

光源の位置を設定します。

三次元ベクトル オブジェクトへの参照を保持します。 このメソッドが呼び出されたあとに、該当するベクトルの内容が変化 したときには、光源の設定内容が変化します。 このメソッドによる設定内容は、光源のタイプが DIRECTIONAL または AMBIENT のときは利用されません。

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

getPosition

public Vector3D getPosition()

光源の位置を取得します。

この光源オブジェクトが保持している、三次元ベクトル オブジェクトへの参照を返します。 該当するベクトルの内容が変化したときには、光源の設定内容は変化します。

戻り値:
光源の向きを表すベクトルオブジェクトを返します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。

setVector

public void setVector(Vector3D v)

光源の向きを設定します。

三次元ベクトル オブジェクトへの参照を保持します。 このメソッドが呼び出されたあとに、該当するベクトルの内容が変化 したときには、光源の設定内容が変化します。 このメソッドによる設定内容は、光源のタイプが OMNI または AMBIENT のときは利用されません。

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

getVector

public Vector3D getVector()

光源の向きを取得します。

この光源オブジェクトが保持している、三次元ベクトル オブジェクトへの参照を返します。 該当するベクトルの内容が変化したときには、光源の設定内容は変化します。

戻り値:
光源の向きを表すベクトルオブジェクトを返します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。

setMode

public void setMode(int mode)

光源のモードを設定します。

パラメータ:
mode - 光源のモード値を指定します。 AMBIENT, DIRECTIONAL, OMNI, SPOT のいずれかの値なことが必要です。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
IllegalArgumentException - 引数 mode が AMBIENT, DIRECTIONAL, OMNI, SPOT のいずれかではない場合に発生します。

setIntensity

public void setIntensity(float intensity)

光源の強度を設定します。

パラメータ:
intensity - 光源の強度を指定します。 通常の光源設定では、値は 0 から 1 の範囲になりますが、 光の高度なブレンド機能などを有する環境では、その範囲外の値も 意味を持ちます。そのような機能が無い環境下では、 レンダリング時に、この値は区間 [0,1] に丸められて利用されます。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
IllegalArgumentException - 引数 intensity が Float.NaN の場合に発生します。

setColor

public void setColor(int RGB)

光源の色を設定します。

パラメータ:
RGB - 0x00RRGGBB の形式で、光源の色を指定します。 上位 8 ビットは無視されます。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。

setSpotAngle

public void setSpotAngle(float angle)

スポット光源モード用の角度を設定します。

このメソッドによる設定内容は、光源のタイプが SPOT のときに限り反映されます。

パラメータ:
angle - スポット光源の 円錐の 角度 (degree) を指定します。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
IllegalArgumentException - 引数 angle が 区間 [0, 90] の範囲外の場合に発生します。

setSpotExponent

public void setSpotExponent(float exponent)

スポット光源モード用の輝度分布を設定します。

このメソッドによる設定内容は、光源のタイプが SPOT のときに限り反映されます。

パラメータ:
exponent - スポット光源の輝度分布を指定します。 0 のときは均一な明るさに、 128 のときは濃淡がはっきりした明るさの分布になります。
例外:
UIException - 既に dispose() されたオブジェクトに対して呼ばれた場合に発生します (ILLEGAL_STATE)。
IllegalArgumentException - 引数 exponent が 区間 [0, 128] の範囲外の場合に発生します。

setAttenuation

public void setAttenuation(float constant,
                           float linear,
                           float quadratic)

光源の減衰に関するパラメータを設定します。

このメソッドによる設定内容は、光源のタイプが OMNI または SPOT のときに限り反映されます。

以下の数式> 縺ョ縺ィ縺阪↓髯舌j蜿肴丐縺輔l縺セ縺吶