第四週 3次元グラフィックス
計算機序論2,
www.kameda-lab.org
2004/10/24
実習にあたって
3次元の立体を操作するには, 3次元の座標変換が必要である.
また, それを表示するには, 2次元平面上へ投影する必要がある.
3次元グラフィックス変換と射影変換をマスターしよう.
- 3次元空間中に定義した多面体(何でも良い)のワイアフレームを,
順次グラフィックス変換し, それを透視投影変換して画面上に表示する
アニメーションを作成せよ.
- 図形のためのデータ構造は前回の演習で用いたものを使おう.
各線分はLINE構造体で,線分の集まりはFIGURE構造体で扱う.
今回からは,実際に3次元のデータを扱うため,
今まで,"仮の値"を埋めていた部分にも,
しっかりと考えて値を与える必要がある.
- 前回まで用いていた幾何変換のための関数群は
2次元グラフィックスのためのものであり,
3次元グラフィックスのために大幅に変える必要がある.
ただし,基本的な考え方は良く似ているので,
3x3行列を4x4行列に直したり,
今まで1つだったものを3つ用意する等の
機械的な操作で対応できる部分も多い.
- 3次元グラフィックスで初めて現れる「透視変換」については,
新しく関数を用意する必要がある.
サンプルプログラム
ヒント
-
perspective_projection()を完成させれば,(正しい動作ではないが),
とりあえず動くはずである.それをまず確かめよう.
-
次に,X軸回りの "ひねり" を入れてみよう.simple_rotation_x()の
不足部分を埋め,my_Animation()のコメントアウトされている部分を
有効に戻すことによって,できるはずである.
-
次に,自分の考えた図形に置き換えてみよう.
同じ動きをするだろうか?
-
その他の動きができるように,色々な変換行列を作る関数を入れよう.
これで,面白い動きが作れるはずである.
さらに先へ
ボーナス課題: 以下のどれかを取り入れると,格段に面白くなるはずである.
- 図形の形を時間的に変化させ,成長したり壊れたりする物体を
表現してみよう.[難易度★]
- 複数の図形を用意し,合体や分裂をさせてみよう.[難易度★★]
- ナレーション(文字)を入れてみよう.[難易度★]
Yoshinari Kameda: 2004/09/17-
Yuichi Nakamura: Tue Aug 12 00:41:10 JST 2003