FE EXAM

レイトレーシング(光線追跡法)

視点から光線を逆向きに追跡して陰影や反射を計算する描画手法。

INTERACTIVE VISUALIZATION
一次光線
影用光線
反射光線
フェーズ
idle
計算済みの画素
0 / 64
影の判定
シナリオ
ステップ1 / 7
STEP 1/7シーンを用意するまず描きたい3D空間(シーン)を用意します。今回は「球」「床」「光源(=照明)」があります。レイトレーシングは、このシーンを見たときに画面の各点(画素)が何色になるかを、光線をたどって計算する手法です。
光源視点画面(画素)
1画素を計算する手順
1. 視点 → 画素 → シーンへ光線を飛ばす(一次光線)
2. 最初にぶつかる物体(交差点)を探す
3. 交差点 → 光源へ光線を飛ばし、影かどうか判定
4. 表面が鏡なら反射光線を跳ね返して映り込みを調べる
5. 物体色 + 影 + 反射 を合成して画素の色を決める
解説

📌
レイトレーシングとは

視点画素物体

レイトレーシング(光線追跡法)とは、視点から光線(レイ)を逆向きにたどって、画面の各点(画素)の色を計算する描画手法のことです。リアルな陰影や反射を自然に表現できます。

身近な例で考えると、暗い部屋で懐中電灯を一筋ずつ向けて、その先に何が見えるかを確かめるのに似ています。違うのは光を「出す」のではなく、目から線を伸ばして「何が見えるか」を逆向きに調べる点です。

上のツールで▶ボタンを押すと、視点から1本の光線が飛び出して球に当たり、影や反射を調べて画素の色が決まる流れを確認できます。

🔦
光線追跡の仕組み

光源

光線追跡では、1つの画素について何種類かの光線をたどります。それぞれが別の役割を持っています。


一次光線:視点から画素を通して飛ばし、最初にぶつかる物体を探す光線
影用光線:ぶつかった点から光源へ飛ばし、途中で遮られれば影と判定する光線
反射光線:鏡のような表面で跳ね返り、映り込む景色を調べる光線

これらをたどって得た「物体の色」「影の有無」「反射先の色」を足し合わせ、画素の最終的な色が決まります。反射光線の先にまた別の鏡があれば、そこからさらに光線が枝分かれします。この枝分かれを繰り返すことで、ガラスや水面のような複雑な見え方も表現できるのです。

⏱️
計算コストの課題

全画素ごとに光線を追跡 → 計算量が膨大

レイトレーシングはリアルな絵が描ける反面、計算コスト(=処理にかかる手間)がとても大きいのが課題です。画面の画素1つ1つについて光線をたどるからです。

たとえばフルHDの画面は約207万画素あります。その1画素ごとに、一次光線・影用光線・反射光線……と何本もの光線を追跡し、しかも反射のたびに光線が枝分かれします。画素数 × 光線の本数 × 物体との交差判定という形で計算量が一気に膨らみます。

このため、映画のCGなどでは時間をかけてじっくり計算します(オフラインレンダリング)。一方、ゲームのようにリアルタイムで動かすには高速な計算が必要なため、近年はGPU(=画像処理に特化した装置)に専用の回路を載せて高速化する技術が使われています。上のツールでは8画素分しか描いていませんが、実際はこの何百万倍もの計算が行われていると想像してください。

練習問題

🎯
基本情報技術者 練習問題

Q1.レイトレーシングにおける光線追跡の方向として正しいものはどれか。
A.光源から物体を経て視点へ進む方向にたどる
B.視点から画素を通してシーンへ逆向きにたどる
C.物体の内部だけをたどる
D.光線はたどらず色を平均する
Q2.レイトレーシングで影(陰影)を求める方法として正しいものはどれか。
A.物体の色をそのまま暗くする
B.交差点から光源へ光線を飛ばし、遮るものがあるか調べる
C.画面全体を一律に暗くする
D.反射光線の本数を数える
Q3.レイトレーシングの主な課題として正しいものはどれか。
A.影や反射が表現できない
B.色数が少ない
C.画素ごとに光線を追跡するため計算コストが大きい
D.2Dの絵しか描けない

関連コンテンツ