- 追加された行はこの色です。
- 削除された行はこの色です。
**ライティング・テクスチャマッピング [#ddfef71a]
ライティング,テクスチャマッピングにより,より表現力のある3DCGを描画します.
**ambientLight [#y7337fff]
日本語では環境光と呼ばれます.図形の面の位置や向きに関係なく,等しく照らす光です.
void setup()
{
size(640, 480, P3D);
}
void draw()
{
background(127, 127, 127);
camera(100, -100, 100, 0, 0, 0, 0, 1, 0);
axis(100);
fill(255, 0, 0);
noStroke();
ambientLight(127, 127, 127);
sphere(30);
}
void axis(float l)
{
stroke(255, 0, 0);
line(0, 0, 0, l, 0, 0);
stroke(0, 255, 0);
line(0, 0, 0, 0, l, 0);
stroke(0, 0, 255);
line(0, 0, 0, 0, 0, l);
}
#ref(./ambient.png,50%);
球はfill(255,0,0)で赤に設定されているので,環境光の色(127,127,127)と球の色が乗算され,結果的に暗めの赤となります.
**directionalLight [#fc3a3114]
光の色と,向きのみを持つ基本的なライトです.平行光源とも呼ばれます.~
光の向きと,図形の面の垂直方向の向き(法線)の向きだけで計算されます.
void setup()
{
size(640, 480, P3D);
}
void draw()
{
background(127, 127, 127);
camera(100, -100, 100, 0, 0, 0, 0, 1, 0);
axis(100);
fill(255, 0, 0);
noStroke();
directionalLight(255, 255, 255, -1, 0, 0);
sphere(30);
}
void axis(float l)
{
stroke(255, 0, 0);
line(0, 0, 0, l, 0, 0);
stroke(0, 255, 0);
line(0, 0, 0, 0, l, 0);
stroke(0, 0, 255);
line(0, 0, 0, 0, 0, l);
}
#ref(./directional.png,50%);
上記の例では,原点から(-1,0,0)への向きで白色の光源を設定しています.ただし,球はfill(255,0,0)で赤に設定されているので,光源の色と球の色が乗算され,結果的に赤となります.
**pointLight [#d6a1d81f]
点光源とも呼ばれます.色と位置を持ち,光源から離れると光が減衰します.豆電球を思い浮かべると良いでしょう.
void setup()
{
size(640, 480, P3D);
}
void draw()
{
background(127, 127, 127);
camera(100, -100, 100, 0, 0, 0, 0, 1, 0);
axis(100);
fill(255, 0, 0);
noStroke();
pointLight(255, 255, 255, 50, 0, 0);
sphere(30);
}
void axis(float l)
{
stroke(255, 0, 0);
line(0, 0, 0, l, 0, 0);
stroke(0, 255, 0);
line(0, 0, 0, 0, l, 0);
stroke(0, 0, 255);
line(0, 0, 0, 0, 0, l);
}