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の実装ができればいいかなと思っています。