グラフィックスII 履修上の注意と イントロダクション

グラフィックスII
履修上の注意と
イントロダクション
1
グラフィックスIIの目的と目標
—  目的
—  図形や形状情報をコンピュータで生成・処理・表示する方法を
学ぶ。
—  その中でも、特に写実的な3次元グラフィックスの要素技術を
理解することが、主たる目的である。
—  目標
—  CGに関する以下の要素技術を修得する
— 
— 
— 
— 
— 
座標変換(2次元、3次元、投影)
モデリング(形状の表現、曲面・曲線・3次元物体の記述)
レンダリング(隠面消去、シェーディング、照明モデル)
アニメーション
その他、ボリューデータの扱いや画像処理との融合技術
2
授業計画
— 
— 
— 
— 
— 
— 
— 
— 
— 
— 
— 
— 
— 
— 
第1回:イントロ
第2回:座標変換
第3回:投影とビューイングパイプライン
第4回:形状モデルと局所変形
第5回:曲線と曲面
第6回:ポリゴン曲面
第7回:さまざまな形状表現
第8回:写実的表現法と隠面消去
第9回:シェーディング
第10回:照明モデル
第11回:マッピング
第12回:アニメーション
第13回:視覚に訴えるグラフィックス
第14回:CGシステム
座標変換
モデリング
レンダリング
CG関連技術
3
教材
—  教科書:コンピュータグラフィックス、CG-ARTS協会
—  板書:授業内容を板書するので、ノートに書き写すこと。
—  教科書の補助資料として、これを解説するPDF資料を教員
のWebサイトにアップする(適時、修正する)。
http://www.cc.kyoto-su.ac.jp/~kano/course.html
—  授業中に小テストを行う。また、Moodleを使って課題の出
題、課題の提出、解答例の提供を行う。
—  フリーのCGソフトBlender(http://blender.jp/)を使って、
適時、デモを行う。必ずしも、各自のMacにインストールす
る必要はないが、これは高機能な3次元CGソフトで有用で
ある。
4
成績評価
—  授業中の小テスト、Moodleに提出する課題と期末テストの
成績から評価する。小テストと課題の提出内容30
期末テストの成績70 50%で総合評価する。
50%、
—  小テストと課題は提出の有無だけでなく、その内容によって
粗く点数化(⃝△×)する。他人のコピーや無意味であると
教員が判断した場合には0点あるいはマイナス点にするの
で注意すること。
—  出席確認システムの出席回数は評価に関係しないが、過
去の例では、出席回数が少ない学生は合格しない。
—  期末テストは「持ち込み物なし」。
5
CGの応用分野
—  映像分野(VFX: Visual Effects)
—  現実には存在しない物体や生物の表現
—  実写では困難なシーンの生成
—  設計分野(CAD: Computer Aided Design)
—  科学分野(ビジュアライゼーション)
—  ゲーム・アミューズメント
—  教育、医療(CT: Computed Tomographyなど)
—  建築分野、景観シミュレーション
—  インタラクティブアート、VR、拡張現実感
6
CGの利用シーン:ゲーム、映画(VFX)
書籍「ゲーム制作者になるための3Dグラフィックス技術」から
7
CGの利用シーン:CAD
http://ja.wikipedia.org/wiki/ファイル:CAD_Modeling.gif
8
CGの利用シーン:Visualization
http://sawadaspecial.com/mirror/metromap.jpg
9
CGの利用シーン:VR、AR、HI
http://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/VR-Helm.jpg/800px-VR-Helm.jpg
10
CGの歴史
—  教科書「コンピュータグラフィックス」(CG-ARTS協会)の
appendix(a-3)にCGの歴史が簡潔にまとめられている。
初期のCADシステム
11
1960年代初期、Sketchpadを操作するアイバン・サザーランド
12
13
代表的な3次元CGソフト Maya (2003年)
オゾンホールの可視化
14
イメージベーストライティングによるアニメの一こま
15
代表的なCGソフト
—  アプリケーション
—  Blender: オープンソースの3次元CGソフトウエア。モデリング、レン
ダリング、アニメーションが可能な統合CGソフト。
—  Pov-Ray: オープンソース。レイトレーシングによるレンダリングソフト。
—  市販品ではShade、Maya、3dsMaxなどが有名。
—  API: 3次元CGアプリを作るための関数群
—  OpenGL: Unix, Windows, Macなどパソコンで最も普及している
API.米国SGI社のグラフィックスライブラリGLがルーツ.
—  DirectX: マイクロソフトのゲーム・マルチメルチメディア向けAPIであ
る.この中に3次元CGを扱うDirect3Dを含む.
—  Java3D: サン・マイクロシステムズが提供するJava向けのAPI
—  Web3D: Web上での3次元CG技術。
16
直線の描画とDDA
—  DDA(Digital Differential Analyzer)は、ディスプレイに
直線や円を描画するためのアルゴリズムである。始点
(xs,ys)から終点(xe,ye)に傾き0≦m≦1の直線を描画すると
き、次のようなコードになる。
void Line(int xs, int ys, int xe, int ye) {
double dy = ye-ys;
double dx = xe-xs;
double m = dy/dx;
double y = ys;
for (int x = xs; x<=xe; x++) {
WritePixel(x, round(y));
y += m;
}
}
コメント: WritePixel(x,y)は座標(x,y)の画素をマークする
関数。round(y)はyを四捨五入する関数。
ピクセルグリッド
(xi+1,round(yi+m))
(xi,yi)
理想の直線
(xi+1,yi+m)
(xi,round(yi))
17
整数演算のみを使うDDA
—  Bresenham(ブレゼンハム)の方法はDDAを整数演算だけで実現した
有名なアルゴリズムである。さらに改良した中点線分スキャン変換アル
ゴリズムを示す。 void MidpointLine(int xs, int ys, int xe, int ye) {
int dx = xe-xs, dy = ye-ys;
int d = 2*dy-dx;
int incrE = 2*dy;
int incrNE = 2*(dy-dx);
int x = xs, y = ys;
WitePixel(x,y);
while(x<xe) {
if (d <= 0) {
d+=incrE;
x++
} else {
d+=incrNE;
x++;
y++;
}
WritePixel(x,y);
}
}
18
コンピュータとディスプレイへの表示
メインメモリ
ビデオメモリ
ディスプレイメモリ
フレームバッファ
Red
Green
CPU, GPU
Blue
各色
1920×1200×8ビット
のメモリ
ディスプレイ
(1920×1200
24ビット/カラー)
IOポート
マウス
キーボード
HDD
19