2 レンダリング方程式 レンダリングの完全なモデル化

Similar documents
コンピュータグラフィックス第8回

Microsoft PowerPoint - 9.レンダリング2.pptx

CG

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生

Microsoft Word - 演習9.docx

Microsoft PowerPoint - CGによる画像生成.pptx

ゲームグラフィックス特論

ライティングの基本要素ライト ( 光源 ) の位置や種類 強さを決め モデルやシーンの見せ方を決めることをライティングとよぶ また モデルの表面での光の反射の度合いを調節することで ライティングの効果を変化させることができる 今回は ライティングの基本的な要素を解説し SketchUp のライティン

コンピュータグラフィックス第6回

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

コンピュータグラフィックスS 演習資料

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

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

vecrot

Microsoft Word - thesis.doc

画像処理工学

Chap3.key

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

ピクセル同期を利用した順不同半透明描画 (更新)

l l l

Microsoft PowerPoint - 10.pptx

PowerPoint プレゼンテーション

大域照明計算手法開発のためのレンダリングフレームワーク Lightmetrica: 拡張 検証に特化した研究開発のためレンダラ 図 1: Lightmetrica を用いてレンダリングした画像例 シーンは拡散反射面 光沢面を含み 複数の面光 源を用いて ピンホールカメラを用いてレンダリングを行った

Microsoft PowerPoint - pr_12_template-bs.pptx

Microsoft PowerPoint - 04.pptx

Fair Curve and Surface Design System Using Tangent Control

<4D F736F F D A815B B A B2E646F6378>

もう少し詳しい説明 1. アルゴリズムを構築するための 4 枚のサンプル画像を次々と読み込むここで重要なことは画像を順番に読み込むための文字列操作 for 文の番号 i を画像の番号として使用している strcpy は文字列のコピー,sprinf は整数を文字列に変換,strcat は文字列を繋げる

Microsoft Word - 201hyouka-tangen-1.doc

パソコンシミュレータの現状

コンピュータグラフィックス特論Ⅱ

コンピュータグラフィックス特論Ⅱ

学習指導要領

スライド 1

コンピュータグラフィックス特論Ⅱ

Sample 本テキストの作成環境は 次のとおりです Windows 7 Home Premium Microsoft Excel 2010( テキスト内では Excel と記述します ) 画面の設定( 解像度 ) ピクセル 本テキストは 次の環境でも利用可能です Windows

円筒面で利用可能なARマーカ

謗域・ュ逕ィppt

学力スタンダード(様式1)

コンピュータグラフィックス特論Ⅱ

2009 年 11 月 16 日版 ( 久家 ) 遠地 P 波の変位波形の作成 遠地 P 波の変位波形 ( 変位の時間関数 ) は 波線理論をもとに P U () t = S()* t E()* t P() t で近似的に計算できる * は畳み込み積分 (convolution) を表す ( 付録

XAML Do-It-Yourself シリーズ 第 12 回 3D グラフィックス -1-

WebGL Safari WebGL Kageyama (Kobe Univ.) Visualization / 55

学習指導要領

Microsoft Word - povray.docx

Microsoft PowerPoint - H22制御工学I-10回.ppt

Microsoft Word - BentleyV8XM_GoogleEarth.docx

Taro-解答例NO3放物運動H16

Microsoft Word - 1B2011.doc

しずおかアプリ部 なるほど 3D グラフィック描画の仕組み いろんな職業の が る資料なので説明を簡単にしてある部分があります 正確には本来の意味と違いますが上記理由のためです ご了承ください monolizm LLC

PowerPoint プレゼンテーション

07年1級_CG記述解答-3.indd

微分方程式 モデリングとシミュレーション

相関係数と偏差ベクトル

WebGL Kageyama (Kobe Univ.) Visualization / 39

スライド 1

モデリングとは

Microsoft PowerPoint - H21生物計算化学2.ppt

Microsoft PowerPoint - H22制御工学I-2回.ppt

PowerPoint Presentation

memo

コンピュータグラフィックス特論Ⅱ

Microsoft Word - 92.doc

学習指導要領

Microsoft Word - NumericalComputation.docx

2017年度 長崎大・医系数学

8. 自由曲線と曲面の概要 陽関数 陰関数 f x f x x y y y f f x y z g x y z パラメータ表現された 次元曲線 パラメータ表現は xyx 毎のパラメータによる陽関数表現 形状普遍性 座標独立性 曲線上の点を直接に計算可能 多価の曲線も表現可能 gx 低次の多項式は 計

Microsoft Word - Chap17

PowerPoint プレゼンテーション

3次元CAD PYTHA新機能紹介マニュアル

Microsoft PowerPoint - 9.pptx

平成 年 月 7 日 ( 土 第 75 回数学教育実践研究会アスティ 45 ビル F セミナールーム A 札幌医科大学 年 P ab, を正の定数とする 平面上において ( a, を中心とする円 Q 4 C と (, b を中心とする円 C が 原点 O で外接している また P を円 C 上の点と

反射係数

Microsoft PowerPoint - 9.pptx

行列、ベクトル

Microsoft Word - CMS_Colorgraphy_Color_Space_Calc.doc

測量試補 重要事項

2008 年度下期未踏 IT 人材発掘 育成事業採択案件評価書 1. 担当 PM 田中二郎 PM ( 筑波大学大学院システム情報工学研究科教授 ) 2. 採択者氏名チーフクリエータ : 矢口裕明 ( 東京大学大学院情報理工学系研究科創造情報学専攻博士課程三年次学生 ) コクリエータ : なし 3.

Microsoft PowerPoint - algo ppt [互換モード]

補足 中学で学習したフレミング左手の法則 ( 電 磁 力 ) と関連付けると覚えやすい 電磁力は電流と磁界の外積で表される 力 F 磁 電磁力 F li 右ねじの回転の向き電 li ( l は導線の長さ ) 補足 有向線分とベクトル有向線分 : 矢印の位

tc15_tutorial02

(Microsoft PowerPoint -

CG

Computer Graphics

学習指導要領

物理演習問題

簡単な図面を書いてみよう 『 3D編 』

2014年度 センター試験・数学ⅡB

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

情報処理学会研究報告 IPSJ SIG Technical Report Vol.2013-CG-150 No /2/18 Perlin noise を用いた短繊維生成法による埃の高速描画手法 安達翔平宇梶弘晃小坂昂大森島繁生 埃の表現は, 物体の経年変化の描画を写実的に行う重要な要素で

データ科学2.pptx

学習指導要領

SPring-8ワークショップ_リガク伊藤

Microsoft PowerPoint - 10.pptx

演算増幅器

一方, 物体色 ( 色や光を反射して色刺激を起こすもの, つまり印刷物 ) の表現には, 減法混色 (CMY) が用いられる CMY の C はシアン (Cyn),M はマゼンタ (Mgent),Y はイエロー (Yellow) であり, これらは色の 3 原色と呼ばれるものである なお, 同じシア

英語                                    英-1

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

ARToolKit プログラムの仕組み 1: ヘッダファイルのインクルード 2: Main 関数 3: Main Loop 関数 4: マウス入力処理関数 5: キーボード入力処理関数 6: 終了処理関数 3: Main Loop 関数 1カメラ画像の取得 2カメラ画像の描画 3マーカの検出と認識

三者ミーティング

Transcription:

ゲームグラフィックス特論 第 11 回影

2 レンダリング方程式 レンダリングの完全なモデル化

3 レンダリング スクリーン上の 1 点を通して視点に届く光の強さを求める 陰影付け 隠面消去処理 影付け処理 映り込み 透過 屈折 隠面消去処理 不透明の物体に対して光の反射位置を求める 物体が半透明なら ボリュームレンダリング

4 反射方程式 L i (p, l): 面上の点 p における l 方向から入射する放射輝度 f (l, v): l 方向からの入射光が v 方向に反射する際の BRDF L o (p, v): 面上の点 p から視点方法 v に向かう放射輝度 Ω L o (p,v) n θ i l L i (p,l) dω i v p L o (p, v) = Z f(l, v) L i (p, l) cos i d! i

5 レンダリング方程式 Kajiya のレンダリング方程式の別形式 Z L o (p, v) =L e (p, v)+ f(l, v) L o (r(p, l), L e (p, v): 面上の点 p から視点方法 v に向かう自己放射輝度 面上の点 p における l 方向からの入射光の放射輝度 L i (p, l) =L o (r(p, l), l) 他の点の l の逆方向 l に出発する放射輝度に等しい r(p, l): p から l 方向にある面上の点 l p L i (p,l) l) cos i d! i L o (r(p,l), l) l r(p,l)

6 レンダリング方程式の意味 点 p の陰影 その点の自己放射輝度 L e と反射光の放射輝度 L o (p,v) の和 反射光は点 p から視点方向 v に向かう 反射光の放射輝度 L o (p,v) は, その点に入射する別の点の放射輝度 L o (r(p,l), l) によって決まる 再帰的 ある点の放射輝度 そこに入射する他の点の放射輝度が決まらないと決まらない 他の点の放射輝度 更に他の点の放射輝度が決まらないと決まらない 更に他の点がめぐりめぐってもとの点だったりする 無限ループ

7 レンダリング方程式の解法 レンダリング方式を厳密に解くことは困難 計算が終わらない 何らかの近似を行う 局所照明モデル 直接光しか取り扱わない 光源と受光面だけが陰影計算 ( 照明計算 ) に関与する 間接光は環境光として定数で表現する リアリティの低下を招く 大域照明モデル 間接光も取り扱う 陰影計算に光源と受光面以外の存在も考慮する リアリティが向上する 計算時間が長くなる リアリティとのトレードオフは他に何を考慮するか ( 近似のレベル ) で決まる

8 影 第三の物体による影響

9 影 影の意味 光源と受光面の他に影を落とす遮蔽物 (occluder) の存在を考慮する 影の効果 シーンのリアリティの向上 観測者が物体の配置を知覚するための手がかり 影の生成手法 非常に多くの手法が存在する 決定的な手法が存在しない

10 影処理に関連する用語 本影 (umbra) 光源からの光がまったく届かない領域 半影 (penumbra) 面積を持った光源の一部が遮られた領域

11 ハードシャドウとソフトシャドウ ハードシャドウ 点光源によるシャープな影 ソフトシャドウ 面積を持つ光源によるソフトな影 ( 実は点光源をいっぱい置いた )

12 丸影 遮蔽物の真下の地面に円を描く方向 影の形に遮蔽物の形は反映されない 受光面は平面のみ 円形のオブジェクトを描く 投影テクスチャマッピング

13 Projection Shadows 受光面が y = 0 の平面のとき p x l x = l y, p x = l yv x l x v y v x l x l y v y l y v y y l Z 軸についても同様にして求めて M = 0 B @ ステップ 1: オブジェクトを通常の方法で投影する ステップ 2: l y l x 0 0 0 0 0 0 0 l z l y 0 0 1 0 l y 1 C A 同じオブジェクトを M を使って投影する O p v y = 0

14 一般の平面への Projection Shadows 一般的な平面において p = l M = n 0 B @ d + n l (v l) n (v l) d + n l l x n x l x n y l x n z l x d l y n x d + n l l y n y l y n z l y d l z n x l z n y d + n l l z n z l z d n x n y n z n l l 1 C A v p n x + d = 0

15 Projection Shadows の欠点 反射 ( 映り込み ) と衝突してしまう 影のポリゴンにも映り込みの処理が必要 影が受光面からはみ出てしまう ステンシルバッファを使って削り取る 不透明の物体の影しか処理できない 半透明の物体を取り扱うには特別な処理が必要 凸形状の物体なら影のポリゴンは常に 2 枚重なる 背面ポリゴンを除去するなら 1 枚 凹部をもつ物体はこの性質が保障されない 半透明の影がおかしくなる ステンシルバッファを使って各ポリゴンを 1 回だけ描くようにする

16 Antishadow と False shadow Anti-shadow 光源と遮蔽物の反対側の面に影が落ちてしまう False Shadow 遮蔽物が受光面の反対側にあるときにも影が落ちてしまう いずれも光源と受光面を含む空間をクリッピングして対処 正しい影 Anti-shadow False shadow

17 ソフトシャドウ ソフトシャドウは光源が面積を持っているときに発生する 光源の領域内に複数の点光源を置いて近似することができる 個々の点光源による影をアキュムレーションバッファに積算し, 平均を求めればソフトシャドウが得られる ハードシャドウを求めるいかなるアルゴリズムを用いても, この手法により半影を生成することが可能 メモリの制限などにより一般的な実装は難しい

y = 0 b b+e x b+e x +e y b+e y a w = 0 x = 0 y = w Heckbert と Herf のアルゴリズム = = = = = = = = a n b n b n M e n e n e n e e n e e n e e n a b e w w wz w wy w wx w v v vz u vy u vx u u u uz u uy u ux u w w w y v v x u u x y w w x v y w u w q n q n q n q q n q n q n q q n q n q n q q q q 1 0 0 0 1 1 1 面光源面光源上の点光源受光面 18

19 Heckbert と Herf のアルゴリズム w > 1 w < 0 a w = 0 b (0, 0) z = z = z = z = far near

20 Heckbert と Herf のアルゴリズム 手順 光源上の個々のサンプル点を点光源に用いる 最初に受光面をひとつのサンプル点でレンダリングする M を使って四角錐の内側にある物体をすべてレンダリングする 影なので黒色でレンダリングする デプスバッファ, テクスチャリング, ライティングは off 影の画像はアキュムレーションバッファに積算して平均値を求めれば影のテクスチャが得られる

21 Gooch らのアルゴリズム 受光面を上下させる

22 Gooch らのアルゴリズムの特徴 生成される影が入れ子になっている 一般的に見かけがよいので少ないサンプル数ですむ 物体が受光面と接しているときは影を正しく再現できない 暗さ が物体の下から外にはみ出てしまう 低い面だけで影のレンダリングや平均を求めれば解消される 影のリアリティは損なわれるが, はみ出しは阻止できる

23 Hains の方法 円形のエリアライトを対象にして 1 パスでソフトシャドウを生成する ハードシャドウと同様な手法で求めた影の外形 ( シルエットエッジ ) に沿って, 中央から外周に向かってグラデーションをつけた円を描く

24 曲面に落ちる影 シャドウテクスチャ 平面に落ちる影を求めてテクスチャとして物体表面に投影する 平面に落ちる影は, 光源の位置から遮蔽物をレンダリングして, そのシルエットを求めればよい 何が遮蔽物で何が受光面なのかをモデリング時に決めておかなければならない

25 シャドウテクスチャの手順 シルエット画像 光源位置から見たシーン 完成シーン シルエット画像を物体にマッピング

シャドウボリューム 26

シャドウボリュームによる影の生成 27

28 ステンシルバッファ カラーバッファやデプスバッファと重なったもう一つのバッファ ポリゴンを描画する際 フラグメント単位に値を設定することができる デプステストの結果によって処理を変更できる 設定された値をもとにフラグメントの表示 非表示を制御できる 描画するポリゴンの 型抜き ができる

29 手順 シャドウポリゴンの生成 光が当たっていない状態でシーンを描画 影の部分の明るさを求める デプスバッファにシーンのデプス値を求める 前準備 視点側を向いたシャドウポリゴンを描画 ステンシルバッファをインクリメント 視点と反対側を向いたシャドウポリゴンを描画 ステンシルバッファをデクリメント 光が当たった状態でシーンを描画 ステンシルバッファが 0 の部分だけを描画

30 シャドウポリゴンの生成 (x l, y l, z l, 1) (x 1, y 1, z 1, 1) (x 2, y 2, z 2, 1) (x 1 -x l, y 1 -y l, z 1 -z l, 0) (x 2 -x l, y 2 -y l, z 2 -z l, 0)

31 光が当たっていない状態で描画する 光源強度の拡散反射光成分と鏡面反射光成分を0にする シーンをレンダリングする カラーバッファに光源の光が当たっていないシーンの画像を得る デプスバッファにシーンのデプス値を得る

32 前準備 シャドウポリゴンは表示しない カラーバッファへの書き込みを禁止する デプスバッファへの書き込みを禁止する 陰影付けを off にする ステンシルテストを有効にする ステンシルテストは常に成功するようにしておく デプステストが成功したときにステンシルバッファをインクリメントする

33 視点側を向いたシャドウポリゴンを描画 デプステストが成功したときにステンシルバッファをインクリメントする stenci++

34 反対側を向いたシャドウポリゴンを描画 デプステストが成功したときにステンシルバッファをデクリメントする stenci--

35 ステンシルバッファが 0 の部分を描画 ステンシルバッファが 0 のときステンシルテストが成功するようにする stencil=0 stencil=0 stencil=1

36 光が当たった状態でシーンを描画 光源強度の拡散反射光成分と鏡面反射光成分を 1 にする ライティングを有効にする シーンをレンダリングする カラーバッファのステンシルバッファが 0 の部分に光源の光が当たっているシーンの画像を得る

37 この方法の問題点 オブジェクトのポリゴン数の 3 倍 ( オブジェクトが三角形で構成されている場合 ) のシャドウポリゴンをレンダリングしなければならない. シルエットエッジに対してのみシャドウポリゴンを生成する 視点がシャドウボリュームの中に入ったときに正しく処理ができない. ステンシルバッファを 0 ではなく視点を含むシャドウボリュームの数で初期化する 前方面がシャドウボリュームと交差するときに正しく処理できない. Z-fail 法 (Carmack の方法 )

38 シャドウマッピング 光源位置に視点を置いて隠面消去処理を行い深度値 ( デプスマップ ) を作成する 視点側から隠面消去処理を行い可視点の位置を光源側に座標変換してデプスマップと比較する

39 シャドウマッピングの手順 1. 光源位置に視点を置いてデプスバッファ法による隠面消去処理を行う 2. 得られたデプスバッファの内容 ( デプスマップ ) をテクスチャメモリに転送する 3. 視点位置から見たシーンをレンダリングする 4. レンダリングした各画素において見えている物体表面上の点の位置を求める 各頂点のワールド座標値をテクスチャ座標に指定しておけばよい 5. その点の位置を光源から見たときの位置に座標変換する 光源位置に視点を置いた時の視野変換行列 投影変換行列を用いる 6. その座標値の (x, y) 成分でデプスマップをサンプリングする 7. その座標値の z 成分とサンプリングした値を比較する 8. 座標値の z 成分の方が大きければ, その点は影になる

40 シャドウマップの解像度の影響 シャドウマップの解像度が一様 影が拡大される部分でエリアシングが発生する 光源 シャドウマップ 視点 スクリーン 視点 スクリーン 光源 シャドウマップ

41 シャドウマップの補正 光源 視点 光源 視点 シャドウマップ スクリーン シャドウマップ スクリーン 視点 光源 視点 光源 スクリーン シャドウマップ スクリーン シャドウマップ

42 シャドウマップの透視変換 PSM Perspective Shadow Map 可視物体が視点からの透視変換結果に一致するよう光源の変換行列を設定する LiSPSM Light Space Perspective Shadow Map 光源の変換行列に透視変換を適用する TSM Trapezoidal Shadow Map 台形変換を用いる

43 シャドウマップ法のソフトシャドウ PCF (Percentage Closer Filtering) 可視点の周囲のデプスマップを複数個サンプリングして, サンプリング点の影日向の割合で影の濃さを調整する VSM (Variance Shadow Maps) 可視点の周囲のデプスマップの深度値の平均と分散から, その可視点が影になる確率の上限値で影の濃さを調整する

PCF (Percentage Closer Filtering) 44

45 VSM (Variance Shadow Maps) 深度値ではなく深度の平均値と µ その分散 σ 2 を用いる チェビシェフの不等式 P ( X µ k ) apple 1 k 2 P (X t) apple X の平均 µ と X との差が標準偏差 σ の k 倍以上になる確率は 1/k 2 以下 ある点が影になる確率の上限値を遮蔽度の近似値として用いる デプスマップ全体に関して 個々の画素について周囲の深度値の平均 E(X) = µ を求める 個々の画素について周囲の深度値の二乗の平均 E(X 2 ) を求める 画素のレンダリング時に σ 2 = E(X 2 ) E 2 (X) t 現在の深度として t > µ のとき P(X t) の上限を求めて影の濃さとする t µ なら本影 2 2 +(t µ) 2

46 宿題 影付け処理を実装してください 次のプログラムは非常に単純な丸影を実装したものです. https://github.com/tokoik/ggsample11 これを丸影以外の手法を用いて影付け処理を行うよう変更してください. 手法は任意です. 使用した影の手法の説明と変更したソースプログラムをメールに添付してください. 送り先 tokoi@sys.wakayama-u.ac.jp

47 宿題プログラムの生成画像例 投影テクスチャマッピング Projection Shadow

48 ヒント GgMatrix クラス クラス定義 http://www.wakayama-u.ac.jp/~tokoi/lecture/gg/html/classgg_1_1ggmatrix.html 用途 OpenGL で用いる変換行列を操作する メソッド いろいろあるので上記のドキュメントかソース gg.h/gg.cpp 読んで 演算 かけ算 (*, *=) だけ 関数 (GgMatrix) * (GgMatrix) (GgMatrix) * (GLfloat *) GLfloat 型の 16 要素の配列を直接かけられる gglookat(), ggperspective(), ggorthogonal(), ggtranslate(), ggrotate() それぞれ対応するメソッドによって生成された GgMatrix 型の値を返す