コンピューターグラフィックスS 第6回 マッピング、レンダリング・ パイプライン システム創成情報工学科 尾下 真樹 今回の内容 • マッピング – 表面の模様や特殊な効果を実現する技術 • レンダリング・パイプライン – Zバッファ法による描画の仕組み – 座標変換とラスタライズ 教科書(参考書) • 「コンピュータグラフィックス」 CG-ARTS協会 編集・出版(3,200円) – 4章 4-6(146~153ページ)(詳しい) – 2章 • 「ビジュアル情報処理 -CG・画像処理入門-」 CG-ARTS協会 編集・出版(2,500円) – 4章 4-6(112~113ページ) – 1章 – 完全には内容はかぶっていないので、各自読ん でおくこと マッピング マッピング • マッピング – 面を描画する時に、面の表面に画像を貼り付け る技術 – 複雑なモデリングをすることなく、細かい模様な どを表現できる 基礎知識 図3-19 基礎と応用 図5.2 マッピングの方法 • 物体への画像の貼り付け方 – マッピングの方向や繰り返し の方法 • uv座標系 基礎と応用 図5.3 – テクスチャ画像の座標は(u,v) で表せる – モデルデータの各頂点(x,y,z)ごとに、対応する テクスチャ画像の(u,v)座標を与えておく マッピングの例 • 人体モデルへのマッピングの例 v u 各頂点にテクスチャの(u,v)座標を設定 自動マッピングの方法 • ラッピング – 各頂点の(u,v)座標を自動的に計算する方法 – 主に単純な物体へのマッピング時に使用 • 平行ラッピング • 曲座標ラッピング 基礎知識 図3-22 手動マッピングの方法 • 手動でのマッピング – 複雑な物体へのマッピングをする時は、モデリン グをする人が手動で(u,v)座標を設定 • マッピング作成の手順 – 最初にまずモデルを作成する – モデルの展開図を作り、モデルに対応する(u,v) 座標を設定する(モデリング用ソフトの機能) – テクスチャ画像を描く – ※ 後からモデルを大きく変更することは難しい 特殊なマッピング • バンプマッピング • 透過率や反射率のマッピング • 環境マッピング バンプマッピング • バンプマッピング – 面の色ではなく、法線を変化させる方法 – 法線を変化させることで、見た目の質感を変え ることができる • ピクセルの周囲との輝度の差に応じて法線を傾ける • 形状そのものを変えるわけではないので、輪郭線は そのままであることに注意 – 各ピクセルごとに法線と色を計算することが必 要になる(フォンシェーディング) バンプマッピングの原理 基礎と応用 図5.9 テクスチャに格納された各点の高さ から、各点の傾き(法線を計算) テクスチャから計算された法線に 従って各点の法線を変化 バンプマッピングの例 基礎と応用 図5.9 CG制作独習事典 p.13 反射率・透過率のマッピング • 反射率や透過率をマッピングすることも可能 – 透過率のマッピングは、髪の毛や破れた着物な どを表現する時などに用いられる • 細かい形状を一枚の大きなポリゴンで表現できる [Koh and Huang, CAS 2001] 環境マッピング • 環境マッピング – 物体の周囲の風景の画像を、テクスチャマッピン グを使って物体に貼り付けることで、周囲の風景 の映り込みを表現する CG制作独習事典 p.17 環境マッピングの手順 • 物体の周囲の画像をレンダリング – カメラを物体の中心に置いて、各方向を見たとき の画像を生成 • 例えばキューブ環境マップならば6枚分の画像を生成 – 周囲の物体が動かなければ、周囲の画像の生成 は最初の一回だけで良い(2回目からは高速に 描画可能) • レンダリングした画像を物体に貼り付ける – テクスチャ座標は、各点の法線から自動的に計 算できる 環境マッピングの例 CG制作独習事典 p.17 マッピングの合成 • 複数の画像によるマッピング – 実際の応用では、複数のマッピングを重ね合わ せる(合成する)場合が多い • 基本となる模様 • 環境や光などの影響 – 昔のハードウェアは、1枚しかマッピングができ なかった – 最近のハードウェアは、4枚~16枚程度の同時 マッピングに対応している レンダリング・パイプライン レンダリングの仕組み • Zバッファ法によるレンダリング – 現在、パソコンなどで最も広く使われている手法 – OpenGL, DirectX などもZバッファ法を使用 – 実用目的で使う可能性が高い • 今回の講義のねらい – 今回は、Zバッファ法を使ったレンダリングにつ いてもう少し詳しい仕組みを説明する – 座標変換などの考え方は、他のレンダリング方 法でも共通 Zバッファ法のおさらい • 画像とは別に、それぞれのピクセルの奥行 き情報であるZバッファを持つ • Zバッファを使うことで隠面消去を実現 – すでに書かれているピクセルのZ座標と比較し て、手前にある時のみピクセルを描画 Zバッファの値(手前にあるほど明るく描画) レンダリング・パイプライン 各ポリゴンごとに処理 各頂点ごとに処理 x y z 頂点座標 座標変換 x y z ラスタライズ 描画 スクリーン座標 • レンダリング時のデータ処理の流れ – 3次元空間のポリゴンのデータ(頂点データの 配列)を入力 – いくつかの処理を経て、画面上に描画される • OpenGL や DirectX などのライブラリを使用 する場合は、この処理はライブラリが担当 レンダリング・パイプラインの利用 • OpenGL や DirectX などのライブラリを使用 する場合は、この処理はライブラリが担当 – レンダリング・パイプラインの処理を、自分でプロ グラミングする必要はない • 自分のプログラムからは、適切な設定と、入 力データの受け渡しを行なう – レンダリング・パイプラインの処理をきちんと理解 していなければ、使いこなせない – ライブラリの使い方も理解する必要がある 処理の流れ 各ポリゴンごとに処理 各頂点ごとに処理 x y z 座標変換 x y z ラスタライズ 描画 頂点座標 スクリーン座標 (法線・色・テクスチャ座標) • レンダリング時のデータ処理の流れ 1.ポリゴンを構成する頂点の座標、法線、色、 テクスチャ座標などを入力 2.スクリーン座標に変換(座標変換) 3.ポリゴンをスクリーン上に描画(ラスタライズ) 処理の流れ 各ポリゴンごとに処理 各頂点ごとに処理 x y z x y z 座標変換 描画 ラスタライズ 頂点座標 スクリーン座標 (法線・色・テクスチャ座標) y y z y x z x z x 教科書 基礎知識 図2-21 描画前に行なう設定 各ポリゴンごとに処理 各頂点ごとに処理 x y z 頂点座標 x y z 座標変換 ラスタライズ 描画 スクリーン座標 カメラの位置・向き 光源の情報 テクスチャの情報 • カメラの位置・向き(変換行列)の設定 • 光源の情報(位置・向き・色など)を設定 • テクスチャの情報を設定 • これらの情報は、次に更新されるまで記録される ポリゴンデータ • ポリゴンの持つ情報 – 各頂点の情報 • • • • 座標 法線 色 テクスチャ座標 – 各ポリゴンを構成する頂点のリスト • 頂点の順番によって面の向きを表す • 時計回りに見える方が表など(設定で向きは変更可) ポリゴンの向き • 頂点の順番で法線の向きを決定 – 例:表から見て時計回りの順序で頂点を与える – 法線が視点と反対を向いていれば描画しない (背面除去) 1 1 2 3 表 3 裏 2 描画データの入力 各ポリゴンごとに処理 各頂点ごとに処理 x y z 頂点座標 x y z 座標変換 ラスタライズ 描画 スクリーン座標 • 物体の情報を入力 – ポリゴンを構成する頂点の座標・法線・色・テク スチャ座標などを入力 • 表面の素材などを途中で変える場合は、適 宜設定を変更 座標変換&ライト計算 各ポリゴンごとに処理 各頂点ごとに処理 x y z 座標変換 x y z ラスタライズ 描画 頂点座標 スクリーン座標 (法線・色・テクスチャ座標) • 座標変換 – 面の法線をもとに背面除去 – 法線と光源情報から、頂点の色の変化を計算 • 環境光、拡散反射光、鏡面反射光を加算 ラスタライズ 各ポリゴンごとに処理 各頂点ごとに処理 x y z 頂点座標 座標変換 x y z ラスタライズ スクリーン座標 • ラスタライズ(ポリゴンを画面上に描画) – グローシェーディングを適用 – テクスチャマッピングを適用 – Zバッファを考慮 描画 ハードウェアサポート 各ポリゴンごとに処理 各頂点ごとに処理 x y z 座標変換 頂点座標 x y z ラスタライズ 描画 スクリーン座標 • ハードウェアによる処理 – 昔はラスタライズのみをサポート • 使用可能なテクスチャの種類・枚数などは増えている – 現在は、座標変換や光の計算もハードウェアサ ポートされている – 最近では、ハードウェア処理の方法を変更でき るようになっている(VertexShader, PixelShader) ダブルバッファリング • 画面表示の仕組み – ビデオメモリ(VRAM)上の画面データをディスプ レイ上に表示 – 描画途中の画面を表示するとちらついてしまう • 描画量が少ない場合は垂直同期(VSYNC)中に描 画すればちらつかない VRAM 描画処理 画面情報 ディスプレイ ダブルバッファリング • 2枚の画面を使用 – 表示用 – 描画用(+Zバッファ) • ダブルバッファリング 描画用の 画面 描画処理 表示用の 画面 ディスプレイ – 描画用の画面に対して描画 – 描画が完了したら、描画用の画面と表示用の画 面を切り替える(もしくは、描画用の画面を表示 用の画面にコピーする) 座標変換 次回説明 ラスタライズ ラスタライズ • クリッピング • 三角面の描画 – グローシェーディング – テクスチャマッピング – Zテスト ラスタライズ • ラスタライズ – スクリーン上にポリゴンを描画する処理 • ラスタライズの入力 – ポリゴンの各頂点のスクリーン座標(x, y, z)・ 色(r, g, b) – テクスチャマッピング時は、さらに、各頂点の テクスチャ座標 (t, v) クリッピング • クリッピング – ポリゴンの頂点が画面の外側に出ている時は、 画面内部の部分だけが残るように分割 三角形の描画 • 各ラインごとに描画 – 各ラインごとに両端のピクセルを計算 – 両端点の間にあるピクセルを描画 グローシェーディング • 光の効果の計算の時に頂点の色を決定 • 頂点の色を補間して各ピクセルの色を計算 テクスチャマッピング • 頂点ごとのテクスチャ座標が与えられる • テクスチャ座標を補間してピクセルごとのテ クスチャ座標を計算 – 奥行きの影響が加わるように考慮 – ピクセルがなめらかになるように補間 Zテスト • Zバッファ法によるレンダリング – それぞれの頂点はZ座標値を持つ – 頂点のZ値を補間してピクセルごとのZ値を計算 – 各ピクセルを描画時にZバッファのZ座標と比較 Zバッファ まとめ • マッピング – 表面の模様や特殊な効果を実現する技術 • レンダリング・パイプライン – Zバッファ法による描画の仕組み – 座標変換とラスタライズ 次回予告 • 座標変換 • プログラミング演習
© Copyright 2024 ExpyDoc