グラフィックス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
© Copyright 2024