トップページに、Processingについて書いた記事を、辞書のように見つけやすくしてみました

【Processing】specular()関数の使い方【3Dの物体の表面の光をどのように反射させるのか設定】

  • URLをコピーしました!
ワタタク

今回の記事の目的はProcessingの「specular()関数」を理解し、自分なりに使ってみること。

記事内のProcessingのバージョンは4.3。

目次

【Processing】specular()関数について

specular()関数について
  • specularは「鏡のような」という意味
  • 3Dの物体の表面の光をどのように反射させるのか設定するための関数
  • 優先方向に表面から反射する光
    • 鏡のように反射する光のこと(光が特定の方向に強く反射する)
      • 太陽の光が鏡に当たると、その光は鏡の表面で反射して、特定の方向に強く跳ね返ります。この反射した光が目に入ると、鏡がキラキラと光って見えます。これが優先方向に反射する光のこと
      • 物体の表面が滑らかでツルツルしていると、光はその表面で特定の方向に反射しやすくなります。これを「鏡面反射」と言います。
      • 表面がザラザラしていると、光は色々な方向に散らばって反射します。これを「拡散反射」と言います。
  • emissive()ambient()shininess()と組み合わせて使う

【Processing】specular()関数の主な書き方

specular(rの数値, gの数値, bの数値);

r, g, bはそれぞれ赤、緑、青の色の強さを表します。

上記の数値を使って、物体がどの色で反射するかを決めます。

【Processing】specular()関数の使い方【コード】

元は光が反射している薄い黄色の球体を、specular()関数を使って色を変化させます。

size(400, 400, P3D); 
background(0);
noStroke();
background(0); 
fill(255, 165, 0); // オレンジ色に変更
ambientLight(102, 102, 102);
lightSpecular(204, 204, 204);
directionalLight(102, 102, 102, 0, 0, -1);
specular(255, 255, 255);
translate(200, 200, 0);
shininess(1);
sphere(80);

表面の光を赤みがかったオレンジに(コード9行目の赤の数値を255に)

表面の光を赤く(コード9行目の赤の数値を255に)
size(400, 400, P3D); 
background(0);
noStroke();
background(0); 
fill(255, 165, 0); // オレンジ色に変更
ambientLight(102, 102, 102);
lightSpecular(204, 204, 204);
directionalLight(102, 102, 102, 0, 0, -1);
specular(255, 0, 0);
translate(200, 200, 0);
shininess(1);
sphere(80);

表面の光を黄緑に(コード9行目の緑の数値を255に)

表面の光を緑に(コード9行目の緑の数値を255に)
size(400, 400, P3D); 
background(0);
noStroke();
background(0); 
fill(255, 165, 0); // オレンジ色に変更
ambientLight(102, 102, 102);
lightSpecular(204, 204, 204);
directionalLight(102, 102, 102, 0, 0, -1);
specular(0, 255, 0);
translate(200, 200, 0);
shininess(1);
sphere(80);
save("2.jpg");

表面の光を紫に(コード9行目の青の数値を255に)

オレンジと青の光が混ざって以下のような色に。

表面の光を紫に(コード9行目の青の数値を255に)
size(400, 400, P3D); 
background(0);
noStroke();
background(0); 
fill(255, 165, 0); // オレンジ色に変更
ambientLight(102, 102, 102);
lightSpecular(204, 204, 204);
directionalLight(102, 102, 102, 0, 0, -1);
specular(0, 255, 0);
translate(200, 200, 0);
shininess(1);
sphere(80);

【Processing】specular()関数はどんな表現で使えそうか

鏡面反射を使った表現。

鏡の表現、水面の反射、ガラスや金属の表面のような表現をするときに使えそう。

【Processing】specular()関数を使ってみた感想

鏡面反射と拡散反射という言葉を知れて良かった。

3D表現の光関係の構文は、どのような光なのかを調べるのが大事だと気づきました。

また1つ物事を調べるのが上手くなった気がして嬉しい。

ワタタク

それでは今日もレッツワクワクコーディング。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次