コンピュータグラフックス特論T (ビジュアルコンピューティング論) 課題
下記のプログラミング課題の3問中少なくとも2問を選択し提出せよ。
なお、プログラミングができないものについてはレポート課題を提出せよ。
T プログラミング課題
インタラクテイブ性のあるプログラムが理想であり、それを遠隔地でも評価するにはJavaで作成すると効果的であるの
で、可能な人はできるだけJavaを試みて下さい(この場合画像サイズは300x300以下でもよい)。 X-WindowあるいはOpenGLを用い
てスクリーン上に表示する方法でもよい。この際、出力例がカラー画像の場合、それを評価して欲しい人は、自分のホ
ームページに画像を置いて見れるようにしても良い。
課題1 Bezier曲面を表示するプログラムを作成せよ。
課題 2 ボリューム表現された単純な立体の可視化プログラムを作成せよ。
- 図(a)のように,3次元配列でデータは記述する。例として球や楕円などを定義する。
これらの図形の内部は1,外部は0として記憶する。
簡単な立体でいいので、配列サイズは64x64x64程度でよい。
- 隠面消去はレイキャスティングにより行う。
まず、レイと境界箱との交点Pを算出し、そのから次々にボクセルを移動し、物体に交差するまで進む。
- 図(b)にボクセルの進み方を示す。図はボクセルとレイとの交点のx成分についての説明である。図中の交点P1と次の層(y方向に一ボクセル進む)の交点P2の差を考えると、この差を加算することで次の層との交点が算出できる。このように単純な加算で交差するボクセルの位置が算出できる。
- 交点での明るさを計算するには、面の法線と光りの方向が必要である。法線は交点を含むボクセルに隣接するボクセルの密度から計算できる。簡単のため、ボクセルの交点を持つ面の法線(x、y、z軸のいずれかに平行)で代用してもよい
(
計算例参照)。
- 余裕があれば、半透明表示してもよい。
- 本課題のJavaでの例は下記を参照のこと。
/~nis/javaexampl/newJava/volume/volume.html
課題 3 ボクセル表現を多角形化して表示するプログラムを作成せよ。
U レポート課題
- n次のBezier曲線とm次のBezier曲線を乗じるとBezier曲線になることを証明せよ。また、何次の曲線になるか?
- 直線Lとn次Bezier曲線との距離はn次Bzier曲線となることを示せ。
- ボクセルデータを多角形化する方法として代表的な方法にマーチンキュ−ブ法があるが、この方法には多角形間に隙間を生じることがある欠点がある。これはどんな場合に生じるかについて説明せよ。
参考
- C言語の場合;
これらの課題において、画像をセーブすることが必要になるが、保存の画像形式およびそのプログラムは下記を参考にして下さい。
/~nis/junk/ppm.html
- Java の場合;
- 参考資料
- [1] "Computer Aided Geometric Design" by Sederberg
- [2] "Volume Rendering Techniques" (A.Watt, "3D Computer Graphics",Addison Wesley, p.297-321 )
- [3] 中前、西田 「3次元コンピュータグラフックス」昭晃堂
締切: 2月10日(木曜)17時まで
結果は印字(ソースリストと表示結果)して情報科学科事務室(田村さん)に提出か、各自のホームページに置いてメイル連絡すること。
連絡先: email: nis@is.s.u-tokyo.ac.jp
電話:内線2-4106 (西田研究室)
/~nis/
本課題の公開URL:
/~nis/junk/VisRep00.html
本講義の公開URL:
/~nis/junk/cg_lectur.html