ワタタク
今回の記事の目的はProcessingの「ambientLight()
関数」を理解し、自分なりに使ってみること。
目次
【Processing】ambientLight()関数について
ambientLight()関数について
ambientLight()
は「環境光」という意味ambientLight()
は、3Dシーンで全体的な明るさを設定するための関数。- この光は特定の方向から来るのではなく、全体に均等に広がります。
【Processing】ambientLight()関数の書き方【構文】
ambientLight()関数の書き方【構文】
ambientLight(Rの数値, Gの数値, Bの数値);
- RGBカラーモードの場合、それぞれ0~255の数値
- HSBカラーモードなら、HSBの数値で設定
ambientLight(Rの数値, Gの数値, Bの数値, xの光源位置, yの光源の位置, zの光源の位置)
noStroke();
を書いた方がambientLight(Rの数値, Gの数値, Bの数値);
の効果を感じやすい
【Processing】ambientLight()関数の使い方【コード】
ambientLight(Rの数値, Gの数値, Bの数値)でコードを書く
赤い光の当たった球体
void setup() {
size(400, 400, P3D);
noStroke();
}
void draw() {
background(0);
translate(width/2, height/2, 0);
ambientLight(255, 0, 0); // 赤色の環境光を設定
sphere(100); // 球体を描く
}
緑が強めな環境光に赤と青の光を当てる【コードの解説あり】
void setup() {
size(400, 400, P3D);
noStroke();
}
void draw() {
background(30); // ダークグレーの背景
translate(width/2, height/2, 0);
ambientLight(50, 250, 50); // 緑が強めな環境光を設定
directionalLight(255, 0, 0, 1, 0, -1); // 赤い方向光を追加
directionalLight(0, 0, 255, -1, 0, -1); // 青い方向光を追加
sphere(100); // 球体を描く
}
- 9行目
ambientLight(50, 250, 50);
- 全体に少し赤色と青色が混ざった、とても強い緑色の光を広げることを意味
- 10行目
directionalLight(255, 0, 0, 1, 0, -1)
- 赤い方向光を追加するためのもの
255, 0, 0
は光の色を表します- 赤色(R=255, G=0, B=0)を設定
1, 0, -1
は光の方向を表す- X軸方向に1、Y軸方向に0、Z軸方向に-1の方向から光が来るように設定
- 赤い方向光を追加するためのもの
- 11行目
directionalLight(0, 0, 255, -1, 0, -1)
- 青い方向光を追加するためのもの
0, 0, 255
は光の色を表す- 青色(R=0, G=0, B=255)を設定
-1, 0, -1
は光の方向を表す- X軸方向に-1、Y軸方向に0、Z軸方向に-1の方向から光が来るように設定
- 青い方向光を追加するためのもの
【Processing】ambientLight()関数はどんな表現で使えそうか
3Dの表現で、色をコントロールしたいときに使う。
【Processing】ambientLight()関数を使ってみた感想
光の当たる方向のイメージがわきにくい。
何度も作品をつくって光の当たる方向の感覚を掴んでいくかんじか。ambientLight(Rの数値, Gの数値, Bの数値, xの光源位置, yの光源の位置, zの光源の位置)
の構文はx y zをちょっといじってみたけど、変化が分かりづらかったので保留問題とする。
それでは今日もレッツワクワクコーディング。