processing

ProcessingのLight関連設定

1. directionalLight(v1,v2,v3,nx,ny,nz):平行光源。

一方向のみを平行に均一に照らす。
・v1,v2,v3:色
・nx,ny,nz: 光の方向のベクトル

例:真下から白い光があたっている。

directionalLight(128,128,128,0,-1,0);

2. ambientLight(v1,v2,v3,x,y,z): 環境光。

反射、散乱された間接光。 他のLightと組み合わせて使う。
・v1,v2,v3: 色
・x,y,z: ?

3. pointLight(v1,v2,v3,x,y,z):点光源。

ある点から全方向に対して均一に照らす。白熱電球などをシミュレート。
・v1,v2,v3:色
・x,y,z: 光源の位置

例:球の左前方に赤い点光源がある。

background(0,0,0);
pointLight(100,10,10,50,200,150);
translate(250,200,0);
noStroke();
fill(255,255,255);
sphere(100);

4. spotLight(v1, v2, v3, x, y, z, nx, ny, nz, angle, concentration):スポットライト。

狭い範囲を均一に照らす。(確実に照らされるよう、パラメータ値の計算が必要)
・v1,v2,v3: 色
・x,y,z: 光源の位置
・nx,ny,nz: 光の方向のベクトル
・angle: スポットライトのコーンアングルの角度
・concentration:コーンの中心バイアスを決定する指数

例:球の左上前方から白いスポットライトを当てる。

void setup(){
size(400,400,P3D);
}

void draw(){
int concentration = 200; // 1 to 10000 
background(0); 
noStroke(); 
spotLight(255,255,255, 150,100,800, 0.1,0.1,-1, PI/16, concentration); 

translate(250,200,0);
noStroke();
fill(255,255,255);
sphere(100);
}

5. lights():デフォルトの環境光設定。

・ambientLight(128,128,128)
・directionalLight(128,128,128,0,0,1)
・lightFalloff(1,0,0)
・lightSpecular(0,0,0)
が設定される。