SlideShare a Scribd company logo
1 of 47
Download to read offline
RENDERING1H CAMP
Photon Mapping
2013/8/24 Shuichi HAYASHI
(c) Henrik Wann Jensen
※資料中の一部数式、図、画像について
2Photon Mapping. RENERING1H CAMP 2013/8/24
背景色がこの色 の図、数式、Henrik Wann Jensen先生のスライドにあったもの
を使用させていただいています。(数式の間違いと思われ部分は、多少修正し
ています。
元資料がみつからなくなってしまったので、リンクが示せませんが、
SIGGRAPH2012 Course State of the Art in Photon Density Estimation の
Photon Mapping Basics のスライドに同様の図があります。
http://users-cs.au.dk/toshiya/starpm2012/
アジェンダ
3Photon Mapping. RENERING1H CAMP 2013/8/24
1. 出自
2. 何ができるのか
3. BRDF & BSSRDF
4. 従来の手法と欠点
5. フォトンマッピングの利点
6. アルゴリズム
1. フォトントレーシングと勘違いしたポイント
2. 光の物理量
3. フォトンマップのデータ構造
4. 放射輝度推定
7. 可視化
1. シンプルな可視化
2. 実践的な可視化
1. 集光模様フォトンマップ
2. 影フォトンマップ
8. フォトンマッピングの欠点
9. リファレンス
出自
• 1995年頃
• Henrik Wann Jensen先生が考案
4Photon Mapping. RENERING1H CAMP 2013/8/24
何ができるのか
✤レンダリング方程式の解法
• 表面に置ける散乱(BRDF)
• 透明感や質感
✤ボリュームレンダリング方程式の解法
• 空間に置ける散乱(BSSRDF)
• この資料では説明していない
5Photon Mapping. RENERING1H CAMP 2013/8/24
BRDF & BSSRDF
6Photon Mapping. RENERING1H CAMP 2013/8/24
従来の手法と欠点
✤ 経路追跡法(パストレーシング)
➡ 拡散反射が苦手
多くの光線サンプルが必要
✤ ラジオシティ法
➡ 基本的に拡散反射しか扱えない
プリミティブ数の2乗に比例してデータ量と計算時間が増大
モデルの形状単純化と併用したいが、単純化自体も難しい
✤ 上記2つの併用
➡ ラジオシティ法のデメリットは残る
7Photon Mapping. RENERING1H CAMP 2013/8/24
フォトンマッピング:利点
8
• 任意の形状を扱える
• モデル記述に依存しない
• 雲の中や大理石の表面下のフォトン分布を
マップできる
• 任意のBRDFを扱える
• ノイズが低周波
• 省メモリ(ラジオシティ法に比べて)
• 統計的に安定(フォトンの出力は全部同じ)
Photon Mapping. RENERING1H CAMP 2013/8/24
フォトンマッピング:ノイズの出方
9
Path Tracing Photon Mapping
Photon Mapping. RENERING1H CAMP 2013/8/24
アルゴリズム
✤2段階アルゴリズム
1. フォトントレーシング
2. レイトレーシング + 放射輝度推定(Radiance Estimate)
10Photon Mapping. RENERING1H CAMP 2013/8/24
フォトントレーシング
11
光源からフォトンをばらまく
Photon Mapping. RENERING1H CAMP 2013/8/24
放射輝度推定
12
ある点の周りの一定半径、一定数のフォトンを集めて明るさを推定
Photon Mapping. RENERING1H CAMP 2013/8/24
Photon Tracing
13
• 光源ごとにフォトンを発射する方向や密度を制御
• 反射、屈折、 吸収は反射率に合わせロシアンルーレット
• BRDF(反射方向の分布)は任意に設定可能
Photon Mapping. RENERING1H CAMP 2013/8/24
Photon Tracing:フォトンの格納
14
• 入射する放射束を点集合として格納
• フォトンはkd-treeを構成
• 拡散面上でのみ格納(理由は後述)
Glossyな面でもPhotonMapを使えるが、鋭い反射であるほ
ど向いてない(反射方向のフォトンが集まらない)
Photon Mapping. RENERING1H CAMP 2013/8/24
Photon Tracing
15
光源の種類に従ってフォトン飛ばす
点光源 平面光源 複雑な光源
Photon Mapping. RENERING1H CAMP 2013/8/24
最初にぶつかった点でしか格納しない …ダメ×
Photon Tracing 勘違いしたポイント その1
16
 ➡直接光だけになってしまう
Photon Mapping. RENERING1H CAMP 2013/8/24
フォトンの出力に反射率を掛けて更にトレース …ダメ×
Photon Tracing 勘違いしたポイント その2
17Photon Mapping. RENERING1H CAMP 2013/8/24
 ➡フォトンの明るさにムラがあると、放射輝度推定で一定範囲または一定
数のフォトンを集めたとき、大きいフォトンがぎりぎり入る場合、入らな
い場合で推定値が大きく異なってしまい、ノイズになる。
➡
推定結果➡明るい
推定結果➡暗い
Photon Tracing 勘違いしたポイント その3
18
出力を分けたフォトンを2つ以上の方向にトレース …ダメ×
➡指数的にフォトンが増え、1回反射したフォトンより複数回反射した
暗いフォトンが圧倒的に多くなり、前ページと同様の問題が起こる
Photon Mapping. RENERING1H CAMP 2013/8/24
Photon Tracing 正解
19
反射の度に、ロシアンルーレットで更にトレースするか決定
 ➡反射率50%なら、50%の確率でトレースを継続する。
Photon Mapping. RENERING1H CAMP 2013/8/24
フォトンのデータ構造
struct photon
{
float x, y, z; // 位置
float power[3]; // 出力(単位:放射束,flux,Φ)
char phi, theta; // 入射方向
short flag; // kd-treeで使う分割面(XorYorZ)
}
20Photon Mapping. RENERING1H CAMP 2013/8/24
フォトンの格納: kd-tree
21
•非一様な分布のフォトンでもバランス処理すれば探索が高速 O(log n)
•n個のフォトンから近いフォトンk個を集める近傍探索が高速 O(k + log n)
Photon Mapping. RENERING1H CAMP 2013/8/24
From http://en.wikipedia.org/wiki/K-d_tree
From http://en.wikipedia.org/wiki/K-d_tree
拡散面上でのみ格納
22
• 鏡面は、鏡面反射方向から入ってくるフォトンが得られる可
能性が小さい(完全鏡面の場合ゼロ)ので、拡散面でのみ
フォトンマップを使用
• 鏡面は普通にレイトレで反射方向にトレースする
Photon Mapping. RENERING1H CAMP 2013/8/24
光の物理量
✤ 放射束(radiant flux) Φ = dQ/dt
• 時間あたりのエネルギー、単位はW(ワット)
• ある光源全体が発する明るさ等に使用
✤ 放射照度(irradiance) E(x) = dΦ/dA
• 単位面積あたりの位置xに入射する放射束
• ある点の色、ある点に色々な方向から入る光(放射輝度)の合計
✤ 放射輝度(radiance) L(x,ω) = d^2 Φ / cosθ dA dω
• 単位立体角あたり、単位面積あたりの放射束
• 空間中の1点における一方向から(一方向へ)の光の強さ
• パストレのレイが運ぶ光の量
23Photon Mapping. RENERING1H CAMP 2013/8/24
放射輝度推定
24
• 物体上のある位置において、近くのフォトンを使って、その位置か
らセンサー(スクリーンのピクセル)方向への明るさを推定する。
Photon Mapping. RENERING1H CAMP 2013/8/24
放射輝度推定: 手順
25
1. 出射放射輝度を推定したい位置の近くにあるフォトンを集める
• 一定半径以内
• 一定数まで
2. 集めた各フォトンの出力とBRDFを掛けたものを合計する
• フォトンの入射方向と推定する位置の法線を使って
裏側のフォトンを除外
3. 推定範囲の球を投影した円の面積で、2の結果を割る
➡出射放射輝度が求まる
Photon Mapping. RENERING1H CAMP 2013/8/24
radiance_estimate( x, ω', nml ) {
locate n nearest photons // n個(定数)の最近傍フォトンを見つける
r = distance to n th nearest photons // 一番遠いフォトンまでの距離
Σflux = 0
foreach(p in photons) {
pd = photon direction
Φp = photon power
Σflux += fr(x, ω', pd) * Φp // BRDFにフォトンの放射束を乗算
}
Lr = Σflux / (πr^2) // 投影円の面積で割る
return Lr;
}
放射輝度推定:コード
26Photon Mapping. RENERING1H CAMP 2013/8/24
レンダリング方程式
出射放射輝度 = 半球にわたり積分{ BRDF * 入射放射輝度 * cosθ’ }
θ’ = xにおける法線と入射方向の角度
放射輝度推定:理論
27Photon Mapping. RENERING1H CAMP 2013/8/24
入射放射輝度L’(x,ω’)を放射輝度の定義で置換
Φ(x,ω’)はPhotonが持っているPower。
放射輝度推定:理論
28Photon Mapping. RENERING1H CAMP 2013/8/24
放射輝度推定:理論
29Photon Mapping. RENERING1H CAMP 2013/8/24
cosθ’dωが約分で消える。
入射放射輝度L’(x,ω’)を
放射輝度の定義で置換。
レンダリング方程式。
離散化したサンプリングで
近似。dAは推定範囲を投影
した円の面積に置換。
radiance_estimate( x, ω', nml ) {
locate n nearest photons // n個(定数)の最近傍フォトンを見つける
r = distance to n th nearest photons // 一番遠いフォトンまでの距離
Σflux = 0
foreach(p in photons) {
pd = photon direction
Φp = photon power
Σflux += fr(x, ω', pd) * Φp // BRDFにフォトンの放射束を乗算
}
Lr = Σflux / (πr^2) // 投影円の面積で割る
return Lr;
}
放射輝度推定:コード(再掲)
30Photon Mapping. RENERING1H CAMP 2013/8/24
Radiance Estimate: 効率化
31
• 前ページのコードはループの中で毎回BRDFの評価をしており、効率が悪い。
そこで、BRDFを掛けずに、放射照度Eを先に求めて、最後に1回だけBRDFを
乗算して出射放射輝度Lを求める形に変更する。
• BRDF = dL / dE = (入射)放射照度に対する出射放射輝度
なので
dL = dE * BRDF
で放射照度から出射放射輝度を求められる。
Photon Mapping. RENERING1H CAMP 2013/8/24
irradiance_estimate( x, /*ω',*/ nml ) {
locate n nearest photons // n個(定数)の最近傍フォトンを見つける
r = distance to n th nearest photons // 一番遠いフォトンまでの距離
Σflux = 0
foreach(p in photons) {
pd = photon direction
Φp = photon power
if(dot(nml, pd)<0) Σflux += Φp // 裏側のフォトンを除外、BRDFは不要
}
E = Σflux / (πr^2) // 投影円の面積で割る
return E;
}
放射照度推定 (Lambert面の場合)
32Photon Mapping. RENERING1H CAMP 2013/8/24
➡呼び出し元で戻り値にBRDFをかけて、放射照度から出射放射輝度を求める
Radiance Estimate 品質改善
33
楕円範囲で推定: カドのダメなフォトンを集めないようにする
円錐フィルタ: 円の中心から遠い程、フォトンの寄与を小さくする
NG OK
➡
楕円化
Photon Mapping. RENERING1H CAMP 2013/8/24
Radiance Estimate 品質改善
34
工夫なし 円錐フィルタ
楕円範囲で推定 円錐フィルタ+楕円範囲
Photon Mapping. RENERING1H CAMP 2013/8/24
シンプルにレイトレで可視化
35
• 拡散面にはフォトンマップからの放射輝度推定
• 鏡面に対しては光線追跡法
Photon Mapping. RENERING1H CAMP 2013/8/24
シンプルにレイトレで可視化
36
• ノイジー
• フォトンの数を増やしてもノイズが残りがち
Photon Mapping. RENERING1H CAMP 2013/8/24
より実践的な可視化方法
37
Direct Specular
Caustics Indirect
+
+ +
=
Photon Mapping. RENERING1H CAMP 2013/8/24
より実践的な可視化方法
38
• 直接光の計算は高速に可能なのでフォトンマップから推定しない
• 間接光はフォトンマップから推定
• コースティクスは別途専用のフォトンマップを用意
Photon Mapping. RENERING1H CAMP 2013/8/24
より実践的な可視化方法
39
+
+ =
Photon Mapping. RENERING1H CAMP 2013/8/24
Direct Caustics
Indirect Final
この例ではSpeularはその他のイメージ
に含まれている
より実践的な可視化方法
40
• レンダリング方程式を4つに分解
• すべてのパスを網羅している
Photon Mapping. RENERING1H CAMP 2013/8/24
集光模様フォトンマップ
41
• フォトンの数を多くしたり、推定半径を
小さめにして、鋭い集光模様を描画可能
Photon Mapping. RENERING1H CAMP 2013/8/24
集光模様フォトンマップ
42
• 透過屈折のある物体のみに目がけてフォトンを飛ばすのがベスト
• グローバルフォトンマップを使った描画結果と組み合わせる
Photon Mapping. RENERING1H CAMP 2013/8/24
間接光には分散レイトレーシング
43
• 拡散反射面に対する間接光を複数のレイを飛ばして集める
• レイを飛ばした先はフォトンマップから放射輝度推定する
Photon Mapping. RENERING1H CAMP 2013/8/24
影フォトンマップ
44
影なし 完全に影 半影
• 物体を突き抜けてトレース
• 突き抜け後は負の出力を持つフォトン
をストア
• 範囲内の推定値が1なら影なし
• 範囲内の推定値が<0なら完全に影
• 範囲内の推定値が>0 && <1なら半影
• 半影部分のみシャドウレイをたくさん
飛ばす
Photon Mapping. RENERING1H CAMP 2013/8/24
影フォトンマップ 推定結果を可視化
45
• 白
➡遮 されてない
➡シャドウレイ飛ばさない
• 灰色
➡半端に遮 されている可能性がある
➡シャドウレイ飛ばす
• 黒
➡直接光は当たってない
➡シャドウレイ飛ばさない
Photon Mapping. RENERING1H CAMP 2013/8/24
Photon Mappingの欠点
46
• シーンに応じてパラメータの調整が必要
• ばらまくフォトンの数
• 放射輝度推定に使うフォトンの数
• 放射輝度推定でフォトンを集める範囲の半径
• 各種類のフォトンマップで設定が必要
• Progressive Photon Mappingで解決?
• Glossyな面
• レイを沢山飛ばすしかない(パストレと同じ処理)
Photon Mapping. RENERING1H CAMP 2013/8/24
References
• Henrik Wann Jensen’s HP
http://graphics.ucsd.edu/~henrik/
• Henrik Wann Jensen, 苗村 健 訳
Realistic Image Synthesis Using Photon Mapping
http://www.amazon.co.jp/dp/4274079503
• SIGGRAPH2012 Course
State of the Art in Photon Density Estimation
http://users-cs.au.dk/toshiya/starpm2012/
Photon Mapping. RENDERING1H CAMP 2013/8/24

More Related Content

What's hot

ガイデットフィルタとその周辺
ガイデットフィルタとその周辺ガイデットフィルタとその周辺
ガイデットフィルタとその周辺
Norishige Fukushima
 

What's hot (20)

Visual slam
Visual slamVisual slam
Visual slam
 
BRDFモデルの変遷
BRDFモデルの変遷BRDFモデルの変遷
BRDFモデルの変遷
 
【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields【メタサーベイ】Neural Fields
【メタサーベイ】Neural Fields
 
20190307 visualslam summary
20190307 visualslam summary20190307 visualslam summary
20190307 visualslam summary
 
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
 
ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...
ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...
ECCV読み会 "Materials for Masses: SVBRDF Acquisition with a Single Mobile Phone ...
 
SfM Learner系単眼深度推定手法について
SfM Learner系単眼深度推定手法についてSfM Learner系単眼深度推定手法について
SfM Learner系単眼深度推定手法について
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
低ランク性および平滑性を用いたテンソル補完 (Tensor Completion based on Low-rank and Smooth Structu...
低ランク性および平滑性を用いたテンソル補完 (Tensor Completion based on Low-rank and Smooth Structu...低ランク性および平滑性を用いたテンソル補完 (Tensor Completion based on Low-rank and Smooth Structu...
低ランク性および平滑性を用いたテンソル補完 (Tensor Completion based on Low-rank and Smooth Structu...
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
ディープラーニングで音ゲー譜面を自動作成!
ディープラーニングで音ゲー譜面を自動作成!ディープラーニングで音ゲー譜面を自動作成!
ディープラーニングで音ゲー譜面を自動作成!
 
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
[DL輪読会]Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images
 
ガイデットフィルタとその周辺
ガイデットフィルタとその周辺ガイデットフィルタとその周辺
ガイデットフィルタとその周辺
 
論文解説:スマホカメラを用いたBRDFパラメータ取得技術(非DNN)「Two-Shot SVBRDF Capture for Stationary Mat...
論文解説:スマホカメラを用いたBRDFパラメータ取得技術(非DNN)「Two-Shot SVBRDF Capture for Stationary Mat...論文解説:スマホカメラを用いたBRDFパラメータ取得技術(非DNN)「Two-Shot SVBRDF Capture for Stationary Mat...
論文解説:スマホカメラを用いたBRDFパラメータ取得技術(非DNN)「Two-Shot SVBRDF Capture for Stationary Mat...
 
Transformer メタサーベイ
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイ
 
20190825 vins mono
20190825 vins mono20190825 vins mono
20190825 vins mono
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 
Cvpr 2021 manydepth
Cvpr 2021 manydepthCvpr 2021 manydepth
Cvpr 2021 manydepth
 

Recently uploaded

Recently uploaded (12)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

フォトンマッピング入門