Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
fredholm(rtcamp9)
yumcyawiz
0
84
フォトンマッピングをパス空間から考える
yumcyawiz
0
320
fredholm
yumcyawiz
0
210
Introduction to volume rendering
yumcyawiz
0
1.8k
OSK#p-ray2020年度講義: 古典的レイトレーサーの実装
yumcyawiz
0
240
Ray Tracing: Overview
yumcyawiz
7
1.2k
GLSLでパストレーシングしてコーネルボックスを出す
yumcyawiz
0
390
Pybind11でC++とPythonのいいとこ取りをする
yumcyawiz
0
830
Path Tracing in 5 minutes
yumcyawiz
1
300
Other Decks in Science
See All in Science
The Incredible Machine: Developer Productivity and the Impact of AI
tomzimmermann
0
330
統計的因果探索の方法
sshimizu2006
1
1.1k
いまAI組織が求める企画開発エンジニアとは?
roadroller
2
1.2k
DEIM2024 チュートリアル ~AWSで生成AIのRAGを使ったチャットボットを作ってみよう~
yamahiro
3
1.2k
Running llama.cpp on the CPU
ianozsvald
0
350
Survival Under Fire: How to Stay Whole During Adversity
arthurdoler
PRO
0
140
Direct Preference Optimization
zchenry
0
260
Snowflakeによる統合バイオインフォマティクス
ktatsuya
0
400
Science of Scienceおよび科学計量学に関する研究論文の俯瞰可視化_LT版
hayataka88
0
800
拡散モデルの原理紹介
brainpadpr
3
3.9k
Transformers are Universal in Context Learners
gpeyre
0
400
Machine Learning for Materials (Lecture 5)
aronwalsh
0
640
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
363
22k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.3k
We Have a Design System, Now What?
morganepeng
48
7.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
Testing 201, or: Great Expectations
jmmastey
36
7k
Thoughts on Productivity
jonyablonski
66
4.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
Side Projects
sachag
451
42k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
38
9.2k
The Pragmatic Product Professional
lauravandoore
31
6.2k
Raft: Consensus for Rubyists
vanstee
135
6.5k
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