情報科学演習V 1期 課題
プログラミング課題
インタラクテイブ性のあるプログラムが理想であり、それを遠隔でも評価するにはJavaで作成すると効果的であるの
で、可能な人はできるだけJavaを試みて下さい(この場合画像サイズは300x300以下でもよい)。 OpenGLあるいはX-Windowを用い
てスクリーン上に表示する方法でもよい。この際、出力例がカラー画像の場合、それを評価して欲しい人は、自分のホ
ームページに画像を置いて見れるようにしても良い。
なお、課題3,4は選択してよい。
課題1 モンテカルロ法を用いて、面積をもつ光源の直射光による床の照度分布を表示するプログラムを作成せよ。
- 床面は10x10のサイズで、光源の位置は(0,0,5)を
中心とする正方形(一辺3)と半径1.5の円盤光源とする(図1参照)。
- 床面を100x100の格子とし、格子点での輝度を計算する
。
- 障害物は(0,0,3)を中心とする半径1.5の球とする。
- 床は完全拡散面(白色)とし、床面の輝度分布の平面画像を表示せよ(光源が2種類、影の有無と4ケースの画像)。
図1 位置関係
課題 2 課題1の結果の透視図を表示するプログラムを作成せよ。
- レイトレーシング法で描画せよ。レイと球(または多角形)との交差判定は教科書([1]のp.140-141)を参考のこと。
また、レトレーシングのプログラム例(C言語の場合)は下記を参照せよ。
/~nis/prog/raysph.c,
raysph_gl.h
- 画像(透視図)は図1と同じようになるように視点位置を設定せよ(光源は表示しなくてもよい。また、障害物上の輝度計算は省略して適当な一定値で表示していい)。
- 床の各画素での輝度を計算して描画してもいいし、課題1で求めた分布画像をテクスチャーとして床にマッピングしてもいい。
課題 3 課題2において障害物の球の鏡面反射を考慮して表示するプログラムを作成せよ。
- 球の反射特性は、PhongのBRDFを用いる。
- 鏡面反射率やnを変えて、ハイライトの異なるものを描画できるようにする。
課題 4 Path Tracingを用いて相互反射光まで考慮した画像を表示するプログラムを作成せよ。
- 光源は天井に配置した正方形とする(図2参照)。
- 部屋のサイズや壁面の反射率(1以下)は適当に決めてよい。
- 室内の壁面、球は拡散反射物体とする(壁の色は赤、白、青なのとしてもいい)。 相互反射も考慮した画像とする。
図2 path tracingによる室内の輝度分布の表示形式
参考
- Java の場合;
- C言語の場合;
これらの課題において、画像をセーブすることが必要になるが、保存の画像形式およびそのプログラムは下記を参考にして下さい。
/~nis/junk/ppm.html
- 参考資料
- [1] CGARTS,"CG標準テキストブック
- [2] 配布資料;"Direct Lighting via Monte Carlo Integration," SIGGRAPH2001 couce note
- [3] 中前、西田 「3次元コンピュータグラフックス」昭晃堂
締切: 6月6日(木曜)17時まで
結果(ソースリストと表示結果)は、メイルにファイルを添付、あるいは各自のホームページに置いてメイル連絡するか、または印字して提出のこと。
連絡先: email: nis@is.s.u-tokyo.ac.jp
電話:内線2-4106 (西田研究室)
/~nis/