言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

OpenGL と色。


OpenGL で僕が苦手なのが色の指定です。ただ数字で色を指定するのでさえ難しいのに、OpenGL にはある物体の色を指定するのに複数の色を指定するので、直感的にどの数字を変えるとどう色が変わるか見るのかを見極めるのが難しい。定義としてはこんな感じ。

  • emissive: 放射色。光に一切影響されない色。
  • diffuse: 拡散色。光の方向で変わるが、視点では変わらない。
  • specular: 反射色。反射して見える色らしい。光の方向だけでなく、視点によっても変わる色。
  • ambient: 環境色。光の方向や視点に影響されない色。光の色には影響される。

と、これだけでは何のことやら分からなかったので Croquet で実験してみました。上からemissive, diffuse, specular, ambient です。emissive (放射) と ambient (環境) の違いを分かりやすくする為に、光源の色は青一色、物体の色は紫にしています。これを見ると、specular は随分キタナイですね。僕のマシンではたまにチラチラして描画が汚くなる時があるのですが、どうやら specular が原因のようです。これらの色要素は物体だけでなく、光源にも指定できるので、それで上手く調節できそう。