スライド タイトルなし

動的環境マッピングと
リアルタイムモーションブラー
川瀬正樹
http://www.daionet.gr.jp/~masa/
清水亮
株式会社ドワンゴ
動的環境マッピング
• 環境マッピングとは
– 周囲の映りこみをテクスチャによって擬似的に
表現
• 原理
①周囲の背景を描いた環境マップを作成
②環境マップをテクスチャとし、視線の反射方向
からテクスチャ座標を決定
問題点およびその解決方法
• 問題点
– 基本的に静的であり、周囲のオブジェクトの変
化にリアルタイムに対応できない
• 解決方法
– 環境マップを動的に作成
環境マップの座標系
• Sphereマップ
– リアルタイムでは一般的
– 球状の鏡を無限遠から撮影した画像
– 円形部分に360度全景が映りこむ
前
上
後
斜め後
環境マップ
反射した視線の方向ベクトルか
ら(u,v)の計算
m  2 x  y  (z  1 )
2
x
u   0.5
m
y
v   0.5
m
2
2
動的環境マップの作成
• 環境マップの作成
①周囲のオブジェクトの位置から、各頂点の方
向ベクトルを計算
②方向ベクトルから環境マップ上の座標(u,v)を
計算
③(u,v)を元に環境マップに描画
• 実際の描画
作成した環境マップをテクスチャに設定して実際
の描画
環境マップとレンダリング結果
作成した環境マップ
最終レンダリング結果
動的環境マップの考察
• 作成した環境マップをテクスチャにセットす
る部分がネックとなり、速度が遅い
• テクスチャへの直接レンダリングがサポー
トされることにより解決
Cubic Environment Mapping
立方環境マッピングについて
Sphere環境マップの問題点
• 歪みが大きい
• 直線をレンダリングする際に彎曲させなく
てはならない
リアルタイムな環境マップ生成に関して障害
キューブ環境マップ
TOP
TOP
LEFT
FRONT
RIGHT
BACK
RIGHT
FRONT
BOTTOM
展開図
環境立方体
キューブ環境マッピングによる
動的環境マップ実現の手順
1. あるメッシュについて、
重心を中心とした環境立方体を想定する
2. 環境立方体のそれぞれの面について、
レンダリングする
•
テクスチャに対するレンダリングを行う
3. キューブ環境マップを行う
キューブ環境マップの
長所と短所
• 長所
–
–
–
–
理解しやすい
歪みが少ない
特異点がない
ハードウェア化が容易
• 短所
– レンダリング時間が増加する
• 環境マップテクスチャをレンダリングするため
動作原理
1. 頂点ごとに、
反射ベクトルの各要素を計算する
2. 反射ベクトルの各要素から、
最も絶対値の大きい方向をもとめ、
使用するテクスチャを決定する
3. テクスチャが決定したら、残り二つの要素
からテクスチャ座標を求める。
モーションブラー
時間軸のアンチエイリアシング
モーションブラー
• 描画フレーム間の積分をレンダリング
• 描画フレームよりも
滑らかなアニメーションが可能
– 時間軸に対するアンチエイリアシング
残像とモーションブラー
• 残像
– 1フレーム前の映像が一様に薄くなって残る
– 1フレーム前の画像をαブレンディングすること
で再現可能
• モーションブラー
– カメラのシャッターが開いている間、
フィルムに時間内の映像が全て撮影される
現象を再現したもの
残像とモーションブラー
• 残像
 0.5 a
n
n
n
6% 12.5% 25% 50%
現時
t(フレーム)
飛び飛びの映像をαブレンディング
• モーションブラー
1
na
n
n
現時
単位時間内の画像を補間
t(フレーム)
モーションブラーの表現手法
• 星など「点」のオブジェクト
線でモーション間を連結(色は線の長さの分だ
け暗く描画)
• 上記以外
時間軸に対しスーパーサンプリング(複数回の
レンダリング結果を平均化して表示)
スーパーサンプリングの方法
方法①1/n輝度でn回加算描画
16ビット程度のバッファでは画質が劣化(nが大
きくなるほど顕著)
方法②n回目はα値1/nでアルファブレン
ディング
比較的劣化が少ない
• ②の手法の方が優れている
陰面問題
• 背景など、実際問題としてz値が一定とみ
なせるものだけにブラーをかける場合
通常の描画でOK
• ポリゴンなど、陰面処理が必要になるもの
普通に描画すると、ポリゴンが重なった場合に
描画が破綻(奥にある、つまり最終的に陰面
消去されるポリゴンまで平均化の対象となる
ため)
陰面問題の解決方法
• 最終的に見えるポリゴン(ピクセル)だけを
描画できれば良い
①zバッファのみを先にレンダリング(深度イ
メージを先に完成)
②zイメージを作成後、カラーバッファへレン
ダリング
実際の描画手順
• 準備
カラーバッファをクリア
• 描画(n=1 ~ 任意の回数ループ)
①zバッファをクリア
②zバッファのみをレンダリング
③カラーバッファのみをα 値1/nでアルファブレ
ンディングしながらレンダリング
モーションブラーの考察
• 速度的に問題あり(zバッファとカラーバッ
ファへの2回描画がネック)
• テクスチャに直接レンダリングが可能かつ、テクス
チャのサイズがビューポート以上サポートしている
環境なら、このような二度手間は不用
• 大幅な速度アップが可能
• リフレッシュレート以上の描画フレームを保
てる速度になれば、非常に有効