コンピュータグラフックス特論U (ビジュアルコンピューティング論) 課題
下記のプログラミング課題2問を提出して下さい。
プログラミング課題
インタラクテイブ性のあるプログラムが理想であり、それを遠隔地でも評価するにはJavaで作成すると効果的であるの
で、可能な人はできるだけJavaを試みて下さい(この場合画像サイズは300x300以下でもよい)。 X-WindowあるいはOpenGLを用い
てスクリーン上に表示する方法でもよい。この際、出力例がカラー画像の場合、それを評価して欲しい人は、自分のホ
ームページに画像を置いて見れるようにしても良い。
課題1 ラジオシティ法についてテストプログラムを作成せよ。
- 2次元の場合でプログラミングすればよい。図(a)のような簡単な室内をいくつかに分割して、各エレメント間のフォームファクタを計算し、それを用いてエネルギの授受を計算し、室内の光の分布を求めよ。
- 2次元の場合、下記のフォームファクタの定義式における分母の距離は2乗ではなく、1次となる。
- 解法としてガウスザイデル法を始め色々な方法があるので、各自が効率のよいと思う方法で解け。
たとえば、モンテカルロ法やプログレッシブリファインメント法(文献[1,4]参照)を利用してもよい。なお、ガウスザイデル法等の比較を加えてもよい。
- 障害物(図のように線分で表現してよい)を挿入し、その影響を調べる。各面での光の分布は、図(b)のようにグラフで表示してもよい。
- 各面の反射率は任意に与えて下さい。天井、壁、床、窓の各々の反射率を入力できるようにする。また各面の分割数(あるいは幅)も指定できるものとし、分割数による精度について比較検討できるとよい。
- 鏡面反射成分を効慮すると複雑になるので、拡散反射のみでよい。
- 光源は点光源とするか、分割した1つのエレメントを発光面とみなしてもよい。
課題2. エッジを表示するプログラムを作成せよ。
- 適当な多面体をZ-Buffer法等で表示し(文献[3]参照)、Depth Map画像とNormal Map画像を作成せよ。
- Depth Map画像とNormal Map画像から、それぞれのエッジ画像を作成し、合成する
- エッジ画像の作成は、配布資料[2]の7-14ページを参照すること。
- Normal Mapについては、RGB値別にエッジ画像を求め、それらを合成することで、Normal Mapのエッジ画像とすればよい。
- 3次元形状を表示できない人は下記のDepth Map画像、
Normal Map画像をダウンロードしてもよい(下図参照)。
Depth Map:/~mochi/lecture/depth.pgm
値は0から255の範囲で、背景は0、手前ほど大きな値になっている。
Normal Map:/~mochi/lecture/norm.ppm
RGBともに値は0から255の範囲で、背景は0である。
注: 2問中1問は自由課題に置き換えてもよいが、その場合ある程度完成度の高いものとする。
あるいは、プログラミングが困難な学生は相談に応じてレポート課題を提出すること。
参考
- C言語の場合;
これらの課題において、画像をセーブすることが必要になるが、保存の画像形式およびそのプログラムは下記を参考にして下さい。
/~nis/junk/ppm.html
- Java の場合;
- 参考資料
- [1] P.Shirley," Hybrid radiosity/Monte Carlo Methods" SIGGRAPH94 Course Note pp.11.1 - 11.23
- [2] A. Hertzmann "Introductioin to 3D Non-Photorealistic rendering; Silhouttes and Outlines" SIGGRAPH Course Note, pp.7.1- 8.17
- [3] 中前、西田 「3次元コンピュータグラフックス」昭晃堂
- [4] M.F.Cohen,"Radiosity and Realistic Image Synthesis", Academic Press Professional, p.112-125
締切: 2月16日(金曜)17時まで
結果は印字(ソースリストと表示結果)して情報科学科事務室(田村さん)に提出か、各自のホームページに置いてメイル連絡すること。
連絡先: email: nis@is.s.u-tokyo.ac.jp
電話:内線2-4106 (西田研究室)
/~nis/
本課題の公開URL:
/~nis/junk/VisRep01.html
本講義の公開URL:
/~nis/junk/cg_lectur.html