Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lens Tracing
Search
yumcyawiz
May 17, 2020
Science
0
120
Lens Tracing
LT slide for OSK May LT
yumcyawiz
May 17, 2020
Tweet
Share
More Decks by yumcyawiz
See All by yumcyawiz
rtcamp 10 (vk-illuminati)
yumcyawiz
1
260
ReSTIRの数理と実装 (rtcamp10)
yumcyawiz
1
740
fredholm(rtcamp9)
yumcyawiz
0
100
フォトンマッピングをパス空間から考える
yumcyawiz
0
360
fredholm
yumcyawiz
0
240
Introduction to volume rendering
yumcyawiz
0
1.9k
OSK#p-ray2020年度講義: 古典的レイトレーサーの実装
yumcyawiz
0
250
Ray Tracing: Overview
yumcyawiz
7
1.2k
GLSLでパストレーシングしてコーネルボックスを出す
yumcyawiz
0
430
Other Decks in Science
See All in Science
Science of Scienceおよび科学計量学に関する研究論文の俯瞰可視化_ポスター版
hayataka88
0
130
Pericarditis Comic
camkdraws
0
1.2k
山形とさくらんぼに関するレクチャー(YG-900)
07jp27
1
220
『データ可視化学入門』を PythonからRに翻訳した話
bob3bob3
1
500
【健康&筋肉と生産性向上の関連性】 【Google Cloudを企業で運用する際の知識】 をお届け
yasumuusan
0
350
インフラだけではない MLOps の話 @事例でわかるMLOps 機械学習の成果をスケールさせる処方箋 発売記念
icoxfog417
2
600
非同期コミュニケーションの構造 -チャットツールを用いた組織における情報の流れの設計について-
koisono
0
140
20240420 Global Azure 2024 | Azure Migrate でデータセンターのサーバーを評価&移行してみる
olivia_0707
2
910
作業領域内の障害物を回避可能なバイナリマニピュレータの設計 / Design of binary manipulator avoiding obstacles in workspace
konakalab
0
170
いまAI組織が求める企画開発エンジニアとは?
roadroller
2
1.3k
位相的データ解析とその応用例
brainpadpr
1
650
最適化超入門
tkm2261
14
3.3k
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Being A Developer After 40
akosma
87
590k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Building an army of robots
kneath
302
43k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Building Your Own Lightsaber
phodgson
103
6.1k
Producing Creativity
orderedlist
PRO
341
39k
Transcript
Lens Tracing レイトレで写真レンズを使う @yumcyawiz
Table of contents 1. Introduction 2. 幾何光学の基礎 3. 収差 4.
レンズトレーシング 5. フォーカシング 6. レイのサンプリング 7. レンダリング結果 1
Introduction
レンズトレーシング 複数枚のレンズで構成される光学系をレイトレすること Figure 1: 光路図 2
メリット 写真レンズで撮ったものとほぼ同じ描写が得られる Figure 2: レンダリング結果 3
幾何光学の基礎
薄レンズモデル 非常に薄い単レンズのモデル 収差は 0(現実にはあり得ない) p: 主点 f: 物側焦点 f′: 像側焦点
z y p f f′ 4
薄レンズモデル 焦点距離 l = f′ − p, 物面までの距離 a, 像面までの距離
b レンズの式 1 a + 1 b = 1 l z y a b p f f′ 5
厚レンズモデル 厚みを持った単レンズのモデル p: 物側主点, p′: 像側主点 H: 物側主平面, H′: 像側主平面
z y H H′ p p′ f f′ 6
厚レンズモデル レンズの式が同様に成り立つ 焦点距離 l = f′ − p′ z: 物平面位置,
z′: 像平面位置として 1 z − p − 1 z′ − p′ = 1 l z y H H′ p p′ f f′ 7
レンズ系 複数枚のレンズ系でも入射面、射出面のみに注目して p, f, p′, f′ が同 様に定義される z y
· · · p p′ f f′ 8
近軸近似 上記の議論はレンズを平面として見て行っていた。 レンズが球面の場合、これは z 軸 (光軸) に近い光線のみについて成 り立つので近軸近似と呼ばれる。 z y
9
収差
収差 収差とは結像のずれのことで、収差が存在するとピントを合わせて もボケた状態になる。 現実のレンズでは収差が必ず存在する。 z y 像面 横収差 縦収差 10
ザイデルの 5 収差 収差にはザイデルの 5 収差と呼ばれる次の 5 つがある。 • 球面収差
• コマ収差 • 非点収差 • 像面湾曲 • 歪曲収差 また、光の分散による色収差も存在する。 11
球面収差 レンズが球面であるために発生する収差 z y 像面 12
コマ収差 軸外から来る光が一点に収束しない収差 彗星の尾のような形に見えるためそう呼ばれる z y 像面 13
非点収差 軸外から来る光に対し、X 方向と Y 方向で焦点距離にずれがあること で起こる収差 14
像面湾曲 像面が平面とならず、湾曲してしまっていること z y 像面 15
歪曲収差 撮影した物体が歪んだ形になってしまうこと 16
色収差 波長による屈折率の違いから発生する収差 z y 像面 17
レンズトレーシング
レンズの種類 レンズには以下の 2 種類がある • 球面レンズ • 非球面レンズ ここでは球面レンズのみについて考える 以下では特定の波長ごとにレンズトレーシングすることを考える
18
レンズの表現 r: 曲率半径 (curvature radius) h: 開口半径 (aperture radius) d:
次の要素までの距離 (thickness) z y 像面 第 1 面 第 2 面 r1 c1 h1 d1 r2 c2 h2 d2 19
レンズ系の表現 レンズ系は次のような表形式データとして表現できる Index r h ior d 0 29.475 25.2
1.67 3.76 1 84.83 25.2 1 0.12 2 19.275 23 1.67 4.025 . . . . . . . . . . . . . . . Table 1: レンズ系の表現 r = 0 のときは絞りとする 20
レンズ系の表現 Figure 3: ダブルガウス型レンズ 21
レンズトレーシング レンズトレーシングは次のような処理を繰り返すことで行われる 1. レンズとの衝突位置を計算 2. 衝突位置が範囲外なら終了 3. フレネル反射率を計算し、ロシアンルーレットで反射か屈折か 決める 4.
反射なら反射方向を計算し, 次のレイを生成 5. 屈折なら屈折方向を計算し, 次のレイを生成 (全反射なら反射さ せる) 22
レンズとの衝突位置の計算 球面とレイの衝突計算を行えばよい. ∥⃗ o + t⃗ d −⃗ c∥2 =
r2 を t について解く. 得られた t で衝突位置 ⃗ p = ⃗ o + t⃗ d を計算する. p2 x + p2 y ≤ h2 であればレンズ面上に衝突点がある. 23
波長ごとの屈折率の計算 Sellmeier の式を用いて計算できる n2 = 1 + ∑ i Biλ2
λ2 − Ci ある光学ガラスに対応する係数 Bi, Ci の値 がhttps://refractiveindex.info/にたくさんある 24
フレネル反射率の計算 Schlick の近似式を計算 F(θ) = F0 + (1 − F0)(1
− cos θ)5 F0 = ( n1 − n2 n1 + n2 )2 25
屈折方向の計算 お馴染みだと思うので省略 実装する上では前面の ior を何らかの方法で覚えておく必要がある 26
フォーカシング
フォーカシング レンズ系を z = zf にピント合わせすることを考える. ピント合わせはレンズ系全体を δ だけ動かすことで行う. 27
フォーカシング 厚レンズ近似で考えると, レンズの式で z = zf , z′ = 0
として 1 zf − p + δ + 1 −p′ + δ = 1 l これを解いて δ = 1 2(p − zf + p′ − √ (p − zf − p′ )(p − zf − 4l − p′ ) 28
主要点の計算 p, f, p′ , f′ は微小な y で光軸に平行な光線を入射し、レンズトレーシ ングを行って得られる出射光線から計算できる
29
レイのサンプリング
レイのサンプリング レイトレでレンズ系を使うために、像面から物空間に出ていくレイ をサンプリングする方法について考える 30
射出瞳 像面から見た絞りの像を射出瞳という z y 像面 射出瞳 31
射出瞳の計算 最後尾にあるレンズ面全体をグリッド分割して、各グリッドに飛ば したレイがレンズ系を通過できるかどうか調べればよい. これは計算量が多いので事前計算しておく. z y 像面 32
射出瞳の計算 射出瞳の形は厳密に求める必要はなく, Bounding Box で覆えれば十 分 33
射出瞳の計算 射出瞳は像面上の点一つ一つについて形が変わる. しかしレンズ系が軸対称なので全部を計算する必要はない. 対角線上の射出瞳のみを計算しておけば, 他のものはそこから選んで くることができる. 34
レイのサンプリング 次のような手順でレイをサンプリングする 1. 像面上の位置に対応する射出瞳の Bounding Box を選ぶ 2. Bounding Box
から点をサンプリングする 3. サンプリングした点に向ってレイを飛ばす 35
p.d.f. の計算 面積 A のバウンディングボックスから一様にサンプリングすると, 面 積に関する p.d.f. は pA
= 1 A 像面からサンプリング点までの距離を r, 生成したレイと z 軸のなす 角を θ とすると, 立体角に関する p.d.f. は p σ = r2 cos θ pA 36
像面への寄与の計算 像面は放射束を測定しているので, サンプリングしたレイが持つ放射 輝度を L とすると, 加算する寄与 C は C
= L cos θ p σ = L cos θ r2 cos θ 1 A = LA cos2 θ r2 37
レンダリング結果
レンズ 焦点距離 22mm の広角レンズを使用 Figure 4: 22mm 広角レンズ 38
レンダリング結果 レンズフレア, 色収差あり Figure 5: レンダリング結果 39
色収差の比較 (a) 色収差なし (b) 色収差あり 40
レンズフレアの比較 (c) レンズフレアなし (d) レンズフレアあり 41
50mm ダブルガウス 焦点距離 50mm のダウブルガウス型レンズ Figure 6: 50mm ダブルガウス型レンズ 42
レンダリング結果 色収差あり, レンズフレアなし Figure 7: レンダリング結果 43
10mm 魚眼 焦点距離 10mm の魚眼レンズ Figure 8: 10mm 魚眼レンズ 44
レンダリング結果 色収差あり, レンズフレアなし Figure 9: レンダリング結果 45
Reference References LTD CYBERNET SYSTEMS CO. 光学総合サイト. url: https://www.cybernet.co.jp/optical/. Wenzel
Jakob Matt Pharr and Greg Humphreys. Physically Based Rendering: From Theory To Implementation. url: http://www.pbr-book.org/. 松居 吉哉. レンズ設計法. 共立出版, 2018. isbn: 978-4-320-03607-9. 46
The End Thank you for listening. 47