[—ATOC—] 1 [—AUTO_SECTION_NUMBER—] 1
レイトレーシング法とは何か
本実験ではレイトレーシング法という写実的な3DCGを生成する技術について学ぶ. レイトレーシング法(光線追跡法ともいう)は1980年にTurner Whittedによって提案された手法で,現在のより高度な3DCG生成技術の基礎となっている.
レイトレーシング法の特徴として,
- 実装がきわめて単純である
- 様々な幾何形状を扱うことができる
- 完全鏡面反射や屈折を扱うことができる
といった特徴がある.以下にレイトレーシング法によって生成した画像の作例を示す.
実験環境
本実験では,実験環境としてLinux(東京電機大学の演習室PCのUbuntu)を用いる. 少なくとも基本的なシェルコマンド(ファイル操作など)を学習していることを前提とする.
また,プログラミング言語はC言語(コンパイラはgcc)を用いる.受講対象者は, C言語の機能(変数,制御構造,配列,構造体,共用体,ポインタ,etc…)に一通り触れたことのある者を前提とする.
実験用ディレクトリ
本実験用にディレクトリを用意し,そこで全ての作業を行うことを推奨する.例えば各自のホームディレクトリ直下に RayTracingという名前のディレクトリを用意する.
レイトレーシング法のしくみ
我々が何らかの物体を「見る」までには,光は以下のような過程を経ている.
- 光源から光が発せられる
- 物体の表面で光が反射する.
- (あるいは光が物体に進入し屈折する.)
- 観察者の目に物体によって反射(あるいは屈折)した光が届く.
図1にその様子を示す.
レイトレーシング法は,光が光源から我々の目に届くまでの過程を目から光源に向かって 追跡しどのように見えるかを再現する手法である.
処理の手順は以下のようになる(図2).
- 観察者の視点位置と視線方向を決める.
- 視線方向で最も近い物体を探し,その物体との交点位置とその点での法線ベクトルを求める.
- 物体表面の光源の性質を使ってその点での色を決定する.
このため視線追跡法という呼び方をされることもある.また英単語のrayは光線という意味の他に半直線という意味もある. 以降では半直線の意味でレイという言葉を用いる.
アルゴリズム
前節では目→物体→光源の単一の追跡のみを説明したが,我々の視界は線ではなく広がりを持っている. そこで空間中に矩形のスクリーンを想定し,スクリーン上の各点に対して前節で説明したような視線の追跡を行う. このスクリーンは最終的な出力画像に対応する.
したがって処理手順は以下のようになる(図3).
- 視点の位置を決める
- スクリーン上の各点(x,y)について以下の処理を行う.
- 視点から点(x,y)に向かってレイを飛ばす.
- そのレイと交差する物体がないか調べる.
- (図3a) 交差する物体がない場合,次の点を処理する.
- (図3b) 物体の交点と光源の間に他の物体がないならば,シェーディングの処理を行う.
- (図3c) 物体の交点と光源の間に他の物体があるならば,影として扱う.
- スクリーン上の点(x,y)における色を決定する.
擬似コードとして表すと以下のようになる.
0 Comments.