Japanese | English | Korean

Samples

ライト

MascotCapsule V3では、環境光と平行光源の2種類が用意されています。ライトを使用するには、Lightオブジェクトを作成し、Effect3Dオブジェクトの第1引数に作成したLightオブジェクトを設定します。Lightオブジェクト設定後の環境光・平行光源の設定についての説明を以下に示します。

目次

1. 環境光( Ambient Light )

環境光はワールド内を一様に照らすライトです。MascotCapsule V3では、白色光のみが用意されています。環境光を使用する場合は、Lightクラス内のsetAmbIntensity( int intensity ) で明るさ0~4096の範囲で設定してください。4096が元のテクスチャの色になります。環境光を使用しないようにする場合は明るさを0に設定してください。



2. 平行光源( Direction Light )

平行光源はワールド内を一定の方向から照らすライトです。MascotCapsule V3では白色光源のみが用意されています。

平行光源を使用する場合は、Lightクラス内のsetDirection( Vector3D direction ) でライトの方向を、setDirIntensity( int intensity ) で明るさを0~4096の範囲内で設定してください。平行光源を使用しないようにする場合は明るさを0に設定してください。

また、環境光と平行光源は組み合わせて使うことが可能ですが、その明るさは元のテクスチャの色(4096)までです。環境光と平行光源を合わせた明るさが4096を超えた場合は、最も明るい部分が4096になるように調整されます。


環境光+平行光源 環境光のみ 平行光源のみ 光源無し




3.サンプルコード

このマニュアルのサンプルコードのライトの設定をしている部分を以下に示します。サンプルではソフトキーで平行光源、環境光のオン・オフの切り替えができます。また、方向キーで平行光源の向きを変えることが可能です。

// Light オブジェクト作成
private Light light = new Light( lightDir, dirIntensity, ambIntensity );

// Effect3D オブジェクト作成
effect = new Effect3D( light, Effect3D.NORMAL_SHADING, true, null );

/**
  * commandAction() メソッド
  * ソフトキー押下時処理(描画パラメータ変更)
  */
public void commandAction( Command c, Displayable d ){
String label = c.getLabel();

/* ライト切り替え */
if( label.equals( commandLabels[0] ) ){
if( light.getDirIntensity() == 0 ){
light.setDirIntensity( dirIntensity );
}else{
light.setDirIntensity( 0 );
}
}else if( label.equals( commandLabels[1] ) ){
if( light.getAmbIntensity() == 0 ){
light.setAmbIntensity( ambIntensity );
}else{
light.setAmbIntensity( 0 );
}

}
}