lesson2を学んだ。順にそれぞれ自分の理解をメモしながらまとめる。
イルミネーション効果を使った3Dオブジェクトのレンダリングの基本を確認する。
変換行列
画面上に3Dオブジェクトをどのように描画するか決定する3つの行列がある。すべての3次元変換を1つの行列で表現するために、同次座標(Homogeneous coordinates)を使用している。通常、モデル行列とビュー行列は線形変換(並行移動、回転、スケールの組み合わせ)であり、投影行列は直交座標か遠近法のいずれか。
変換行列はよく利用されるため、共通のライブラリを用意する(サンプルでは、実装は gl_lib/transmat.py として用意されている)。
カメラ
前項にあるようにカメラを基準にワールド空間からビュー空間に座標が変換される。シンプルな一人称視点のようなカメラを実装する場合、視野方向を制御する2つのパラメータ(ピッチとヨー)がある。サンプルの実装は gl_lib/fps_camera.py にある。
シェーディング
3Dモデルやイラストにおいて、暗さのレベルを変化させて奥行きの知覚を描画する。シェーディングモデルには、フォンシェーディング、異方性シェーディング、トゥーンシェーディングなどがある。
この章のまとめのデモ
- “W, A, S, D” と、マウスを使ってシーンを移動する
- “ESC” を押下で、終了
- “o” を押下で、異方性シェーディングを切り替える
- “p “を押下で、スクリーンショットを撮る