紙と鉛筆で作る写真レンズ ~レイを飛ばすその前に~

レイトレ合宿4!?アドベントカレンダー第1週目の記事です。
(公開後も定期的に数回に分けて更新します)


レンズトレーサー

最近、レンズトレースが一部で流行っています。実際にレイトレ合宿では、レンズトレーサーが入っていたレイトレーサーはこれまで3つあり、pbrtでもv3からレンズトレースが入るようになりました

レンズトレースをすると、カメラレンズに基づく現象(サイデル5収差、色収差、ビネッティング…)の尤もらしい結果を得ることができます。 単純なレンズトレースそのものはとても実装が容易で、レンズデータも色んなところで手に入ります。もうレンズトレーサーを作らない手はありません。

しかし闇雲にレンズトレースをしても、それが本当に正しい結果なのかがわからなかったり、そもそも作りたいレンズがあった時に途方に暮れてしまいます。レンズトレーサーにレンズデータを入れる前に、手計算できることはたくさんあります。ここでは、紙と鉛筆だけでシンプルな光学系を作る方法について書こうと思います。

スネルの法則

屈折率がそれぞれ$N_A$、$N_B$の面を光が通過するとき屈折(と反射)が発生します。このときの入射角$\theta_A$と出射角$\theta_B$は次のように簡単な関係になります。

これは「境界面」に対して式であることに注意してください。「レンズ」に対しての式ではありません。実際、レンズ設計ソフトでは、レンズの枚数ではなく境界面の数を設定します。これは同じ曲率を持つレンズ面同士を重ねる張り合わせレンズや、F値を下げる(開口数を上げる)ために物体側に油や水を注入する液浸レンズなど、必ずしもレンズの両側が同じ屈折率になっていない事は実際にありえるシチュエーションだからです。

余談ですが、1621年発見のスネルの法則の発見よりもずっと前の1590年辺りに望遠鏡は誕生しているそうです。徳川家康に望遠鏡が献上されたのが1613年なので、さらにそれよりも後だということになります。根本となる基本的な原理がよくわかってないにも関わらず、恐らくとてもアドホックな方法で制作されたものが割と民生まで行けてしまった感があってこの話は好きです。
※ このパラグラフはいろいろ諸説あり。

レンズメーカーの式

レンズトレースは、スネルの法則さえわかれば出来てしまいます。しかしこれだけでは、非常に取り回しが悪いです。レンズがどのように結像させるかがさっぱりわからないからです。ここでスネルの法則のみから導かれた便利な公式があります。レンズメーカーの式です。

$ \cfrac{1}{f} = (n-1)\left(\cfrac{1}{r_1} - \cfrac{1}{r_2}\right) + \cfrac{d(n-1)^2}{n r_1 r_2} $

$f$が焦点距離、$n$が絶対屈折率(レンズの両面とも屈折率1の媒質に浸っていることが前提です)、$r_1$と$r_2$がレンズの左右の面の曲率半径、$d$がレンズの厚みを表します。ここで曲率半径は符号付の半径になっていることに注意が必要です。よくある両凸レンズであれば、$r_2$は負の数をとります。この公式の導出は教科書などを参照して欲しいのですが、肝心な点はこの式が「$\theta$は十分に小さい」こと、つまり$\sin{\theta} \simeq \theta$を仮定して導出されている点です。入射角と出射角がほぼ0と仮定できる場合のみを考慮しているということです。これはつまり光軸(レンズの中心をつないだ直線)から極めて近い部分のみに着目した場合の近似式です。このように光軸の近く(近軸)のみを考慮したものを__ガウス光学(近軸近似)__といいます。

このレンズメーカーの式の最後の項は、レンズの厚みをレンズの曲率半径の二乗で割っていますが、普通の写真レンズであれば、曲率半径の方が厚みよりもずっと大きく、さらに二乗がかかっているので、ほぼ無視することができ(薄肉レンズの近似)、次のような簡略化した式としても表されます。

$ \cfrac{1}{f} = (n-1)\left(\cfrac{1}{r_1} - \cfrac{1}{r_2}\right) $

例えば、曲率半径が250mmの両凸レンズで、屈折率が1.5のフリントガラスを使ったと考えます。このとき焦点距離は250mmということがわかりました。屈折率が1.5のときは曲率半径の調和平均がそのまま焦点距離になります。

(続く)