« PianoConcert | メイン | モーターサイクルダイアリーズ »

2004年10月08日

Shading

OpenGLでシェイディング、つまり陰影付けなんだけど、パラメータが多くてちょっとやっかい。
どうやら物体の色は、光源と材質のパラメータによってきまるみたいです。
まぁそりゃ当たり前だけど、光と色ってのがあまり直感的につくれないんだよね。

光っていえば色と強さくらいしかない気がするけど、光の種類というものが存在する。
GL_AMBIENT  環境光。光が直接あたらない部分の照度 えっ(^-^; て思うけど、まぁ室内とかであちこち反射して当たる光を擬似的に表現。
GL_DIFFUSE  拡散光。光があたり、拡散する光。見る角度を変えても変わらない。
GL_SPECULAR  鏡面光。光があたり、反射する光。見る角度によって明るさが変わる。
GL_POSITION  光源の位置
GL_SPOT_DIRECTION  光源の方向
GL_SPOT_EXPONENT  輝度の分布(?)
GL_SPOT_CUTOFF  最大放射角度。スポットの範囲かな
GL_CONSTANT_ATTENUATION  一定減衰
GL_LINEAR_ATTENUATION  線形減衰
GL_QUADRATIC_ATTENUATION  二次減衰

んでもって物体の材質は
GL_AMBIENT  環境光
GL_DIFFUSE  拡散光
GL_SPECULAR  鏡面光
GL_EMISSION  放射輝度
GL_SHININESS  鏡面光の指数
GL_AMBIENT_AND_DIFFUSE  環境光と拡散光
GL_COLOR_INDEXES  環境光、拡散光、鏡面光のカラー指標

光源と材質両方で、光を指定しなきゃいけないのです。もちろん厳密に計算しようと思えばいくらでも理論はでているんだけど、それをPCに計算させるのは無謀。だから、まぁこんな風に誤魔化してつくるしかないわけ。
おそらく、光のパラメータと材質のパラメータの乗算っぽい計算で、拡散やら反射の色が決まってくるみたい。材質が暗くても、0でなければ強い光をあてることで明るくなる。

投稿者 toki : 2004年10月08日 23:08

トラックバック

このエントリーのトラックバックURL:
http://chrono.s9.xrea.com/MT/mt-tb.cgi/38

コメント

コメントしてください




保存しますか?