コンピューターグラフィックスS

コンピューターグラフィックス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バッファ法による描画の仕組み
– 座標変換とラスタライズ
次回予告
• 座標変換
• プログラミング演習