Edited at

ProcessingのLight関連設定

More than 1 year has passed since last update.


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)

が設定される。