HaskellでRayTracerを作りはじめました。
はじめに
RayTracerには以前から興味はあったのですが、なかなかきっかけがなくはじめる事ができていませんでした。が、3D描画の基礎の復習とHaskellの勉強を兼ねて作りはじめました。
現状、球が一つ、ポイントライトが一つ置かれたシーンを、
直接光による照明で描画できるだけです。
実装に関して以下のサイト、ソースを参考にさせていただきました。
http://boegel.kejo.be/ELIS/Haskell/HRay/
http://www.t-pot.com/program/92_RayTraceSphere/index.html
http://www.t-pot.com/program/94_RayTraceLighting/index.html
実装
カメラから全ピクセルへ向けてレイを飛し、球に当れば照明計算、
当らなければ背景色として幅×高さ分の色を求めてBMP化しています。
カメラ周りの処理がいい加減なので、行列型の追加とあわせて修正したいです。
現状描画できる画像例
[640x640, bmp, rendering time 1 sec.]
実行環境
OS : Mac OS X Version 10.6.7
CPU : 2.26 GHz Intel Core 2 Duo
Memory : 2GB 1067 MHz DDR3
今後
次はカメラ処理の修正、モデルデータの読み取り、光線追跡法の実装をしてみようかと思います。
将来的にはPhoton Mappingの実装ができればいいかなと思っています。