コンピュータグラフィックス論 課題(2012年度)
プログラミング課題
インタラクティブ性のあるプログラムが理想であり、言語はC++(+OpenGL)など何でもいいが、遠隔地でも評価するには Javaやenchant.jsで作成すると効果的である。
下記のプログラミング課題において5問中少なくとも3問を提出せよ。
課題1
多角形の走査変換(塗りつぶし)のプログラムを作成せよ。
- 走査線と多角形との交点計算は増分法を使用する。
- n多角形とし、対話的に頂点はマウスで入力するかファイルから読むこととする。
下記の課題に使用するために3角形に限ってもよい。
- 多角形内の色は次の2種とする。1)同一色,2)各頂点の色(輝度)を与え内部は線形補間する(補間にはスムーズシェーディング法を使用すること)。
3角形の場合、各頂点をR,G,Bの色を割り当てる。
課題2 Bezier曲線の描画プログラムを作成せよ。
- 任意の次数の曲線を描画する。参考;Bezier曲線の分割>を利用すると演算量がすくない。
- 複数の曲線をスムーズに結合して曲線形状を表現しなさい。
次数は3に制限してよいが、
例として、複数のBezier曲線を組み合わせて円(真円でなくてよい)
、アウトラインフォントなどを描画せよ。
課題 3 3次元フォーマットのファイルを読み込み、表示するプログラムを実装せよ。
wavefront(.obj), collada(.dae), Metasequoia(.mqo)などがわかりやすく他にもmaya(.mb)
lightwave(.lw), autodeskFBX(.fbx), MMD(.pmd)などのバイナリファイルなどに挑戦してみても良い。なお、OpenGLやDirectX、enchantjsの使用を推奨する。
【必須条件】
【任意条件】
- 光源を指定し、陰影が表示されていることを確認すること
- カメラ、もしくは物体を移動できるようにすること
- 色やテクスチャの読み込み
課題 4
レイトレーシングを実装し、球などの形状の描画をせよ。
【必須条件】
- 反射・屈折のすくなくとも一つを組み込むこと。
- 球自体が反射・屈折する必要はなく平面鏡などを設置してもよい。
【任意条件】
- 形状に関しては球・箱・任意形状のいずれでもよい。(球が一番簡単。課題3と組み合わせても良い)
- 屈折率は任意に変更できるようにすること。(外部ファイルでも引数でも対話的でもよい。)
課題 5
フラクタル(自己相似性)を用いた形状の表示をせよ。フラクタルについては教科書86P〜89Pを参考にすること。
- 面表示でもワイヤーフレーム表示でも良い。
- コッホ曲線や山岳形状、木構造の表示、リアス式海岸の表示など好きなものを選ぶこと。
- 山岳形状の場合には教科書pp.88〜89で紹介されている中点変位法を参考にせよ(下図は4辺形を4分割し、各辺の中点を変位させた例)。
- パラメータを対話的(UIを利用)に任意に変更できるとなおよい(オプション)。
参考文献
[1] 「コンピュータグラフィックス」、 CGARTS(画像情報教育振興協会)
[2]
/~nis/CG/cgtxt/index.htm
参照URL
Webでの本課題公開 : (訂正がある場合があるので、提出前に再度下記を見ること)
/~nis/junk/VisualProj12.html
本講義のサイト
/~nis/junk/visualj.htm
注:プログラミングが困難な学生は,下記のレポート課題を提出しても構いません。
課題1
3次元の座標変換に関し、点(1,2,1)を中心にx軸に関して30度回転した後、y軸に関して45度回転する変換マトリックスを求めよ。また、点(1,2,1)を中心に、y軸に関して45度回転した後、x軸に関して30度回転する変換マトリックスを求めよ。これらの2つの変換マトリックスは同じかどうか議論せよ。
課題2
直線Lとn次Bezier曲線との距離はn次Bzier曲線となることを示せ。また、Bezier曲線の各頂点への基底関数は合計すると常に1になることを示せ。
課題3
テクスチャーマッピングとソリッドテクスチャリングの違いについも説明せよ。
課題4
キーフレーム法について説明せよ。
課題5
下記の中から有用なCGの要素技術を2つを選びその技術内容を述べよ(可能なら開発者名も、計1ページ以上とする)。
フラクタル、NURBS,ボリュームレンダリング、Bスプライン曲線、ラジオシテイ法、バンプマッピング、マンデルブロー集合、サブサーフェススキャタリング、イメージベースレンダリング、レイキャスティング
締切: 8月17日(金曜)17:00!
(なお期限に遅れた人は9月14日(金曜)には提出のこと(ただし評価にハンディはある).
また enchant.jsを利用した課題に関しては、8月4日までに送ってください。優秀なものは米国での講演で紹介します。
課題はメールで提出とします。メールのタイトルは『【CG論課題】-学籍番号-名前-解いた問題の番号と使用言語(Library)』としてください
例『【CG論課題】-********-東大 花子-1(Java),2(C++),3(gl.enchant.js),4(ocaml),5(scheme)』
結果(プログラムソース、実行形式、結果画像、レポート)は、各自のホームページに置いて本文にリンクを貼る、もしくはメールにファイルを添付して送って下さい。
連絡先:email: nis@is.s.u-tokyo.ac.jp
/~nis/
メイルはTAの今井 etoile@nis-lab.is.s.u-tokyo.ac.jp にもccして下さい。