シラバス参照

授業情報/Class Information

科目一覧へ戻る 2024/03/27 現在

基本情報/Basic Information

遠隔授業(授業回数全体の半分以上)の場合は、科目名の先頭に◆が付加されています(2023年度以降)
開講科目名
/Course
ゲームグラフィックス特論A/Advances in Game Graphics A
時間割コード
/Course Code
S2201070_S6
開講所属
/Course Offered by
システム工学研究科/Graduate School of Systems Engineering
ターム・学期
/Term・Semester
2024年度/Academic Year  第1クォーター/1Q
曜限
/Day, Period
火/Tue 2
開講区分
/Semester offered
第1クォーター/1Q
単位数
/Credits
1.0
学年
/Year
1,2
主担当教員
/Main Instructor
床井 浩平
科目区分
/Course Group
_ 
授業形態
/Lecture Form
講義
教室
/Classroom
北3号館B101/北3号館B101
開講形態
/Course Format
ディプロマポリシー情報
/Diploma Policy

担当教員情報/Instructor Information

教員名
/Instructor
教員所属名
/Affiliation
床井 浩平 システム工学部(教員)
授業の概要・ねらい
/Course Aims
3 次元コンピュータグラフィックスの理論と実装方法のうち、特 に 3D ビデオゲームなどのインタラクティブなアプリケーションを実現する上で必要になるリアルタイムレンダリングの技術やアニメーションの技術の学習を通して、現在の CG システムで用いられている各種の技術や考え方を理解し、それを応用したシステムを実装するための知識とノウハウを習得します。学部科目の「コンピュータグラフィックス」に続く発展的な内容であり、教科書的な内容にとどまらず現実のシステムで応用されている技術の具体的な内容の一端に触れることを目指します。ゲームグラフィックス特論Aではグラフィックスハードウェアの基本的な構造とコンピュータグラフィックスの基礎的な理論、およびそれらにもとづくグラフィックスプログラミングについて解説します。
到達目標
/Course Objectives
CGシステムの構成や座標変換・隠面消去・陰影付けなどの基本技術、およびそれらのグラフィックスハードウェアを用いた実装に対する理解をもって合格とします。  
成績評価の方法・基準
/Grading Policies/Criteria
宿題 40%, 小テスト 10%, 期末テスト 50% とします. 宿題は (未提出 - 0, 期限遅れ - 2, 出した - 3, 動いた - 4, 頑張った - 5) という評価を行います.   
教科書
/Textbook
特に指定しません. 講義資料を用意します.   
参考書・参考文献
/Reference Book
以下の参考書は講義内では使用しませんが、講義内容のベースとなるものです。
・Tomas Akenine-Moller, Eric Haines, Naty Hoffman, "Real-Time Rendering (4th. Ed.)," A K Peters/CRC Press ISBN 978-1138627000 17,443円
・Dave Shreiner, "OpenGL Programming Guide (9th. Ed.)," Addison Wesley, ISBN 978-0134495491 7,189円
・David Wolff, "OpenGL 4 Shading Language Cookbook (3rd. Ed.)," Packt Publishing, ISBN 978-1789342253 7,574円.
履修上の注意 ・メッセージ
/Notice for Students
数学にプログラミングを複合した内容であり, 多少難解な部分があるかも知れません. 自分で実装しなければ理解できない部分もあると思いますので, 講義で課す宿題を含め, 自分で積極的に試してみる必要があります. 使い物になる能力を身に付けることを目標にします.   
履修する上で必要な事項
/Prerequisite
毎回,講義内容に対する理解を問う小テストと実際にプログラミングを行う宿題を課して確認します.課題の内容は毎回の講義資料の最後に示しています.課題プログラムのひな型は GitHub 上に置いています。これをダウンロードし、修正ののち、Moodle にアップロードしてください。なお、プログラムの開発環境には以下のいずれかが必要です。
・Windows 10 以降で Visual Studio 19 以降 (Intel)
・macOS Big Sur 11.3 以降で Xcode 13 以降 (Intel / Apple Silicon)
・Ubuntu 20.04 以降相当 (g++, libopengl-dev, libglfw3-dev, libgtk-3-dev のパッケージが必要)
履修を推奨する関連科目
/Related Courses
特にありません(学部科目の「コンピュータグラフィックス」)
授業時間外学修についての指示
/Instructions for studying outside class hours
本授業の授業計画に沿って,毎回1.5時間の準備学習と3時間の復習および宿題を行ってください.宿題は実際にプログラミングを行うものを課します.自宅で学習する場合は,OpenGL 4.1 以降が動作するパソコンが必要になります.開発環境は,Windows 10 の場合は Visual Studio 2017 以降 (Community Edition で構いません) に「C++によるデスクトップ開発」ワークロードをインストールしたもの, macOS では 10.12 (Sierra) 以降で Xcode 10 以降をインストールしたもの,Linux では g++ 5.4 以降,GLFW 3.3 以降,および OpenGL (GLX) のドライバがインストールされている必要があります.詳しくは https://tokoik.github.io/GLFWdraft.pdf を参照してください.
その他連絡事項
/Other messages
講義 Web ページ https://tokoik.github.io/gg/
OpenGL 参考資料 https://tokoik.github.io/GLFWdraft.pdf
講義動画 (第3回)
https://web.microsoftstream.com/video/7d1062d4-f534-4e26-bd94-911f91a8631c
授業理解を深める方法
/How to deepen your understanding of classes
この講義では講義内容を理解し実際に活用できるようにするために,毎回プログラミングの宿題を課しています.プログラミングは授業を聞いたり本を読んだりするだけで身につくものではなく,考えていることをアルゴリズム化し,実際にコードを書くという作業を何度も繰り返し,期待した結果やより良い結果を得るために試行錯誤することをによって身につくものです.したがって,もしわからない・うまく動かないということがあっても,それを放置せず,積極的に質問してください.ソースソースコードは GitHub https://github.com/tokoik 上にありますから,そこで質問していただいても結構です.

また,宿題で使っている「補助プログラム」は,それ自体で実験用のアプリケーションなどを開発できる簡単なフレームワークになっています.このドキュメントも GitHub Pages https://tokoik.github.io/gg/html/annotated.html 上に用意していますので,講義以外でも活用してくれると嬉しいです.

【「アクティブ・ラーニング」実施要項 ③発見学習・体験学習、⑥学生自らが実施する調査やトレーニングを必要とする学習、⑦発展的な課題に取り組むことを促す仕掛けをともなう学習】
オフィスアワー
/Office Hours
水曜日・第2時限,北1号館7階710号室
科目ナンバリング
/Course Numbering
S60095J10099T502
No. 回(日時)
/Time (date and time)
主題と位置付け(担当)
/Subjects and instructor's position
学習方法と内容
/Methods and contents
備考
/Notes
1 1. 概要説明,レンダリングパイプライン この授業の目的と概要を説明した後、ゲームグラフィックスの特徴や現代のハードウェアによるコンピュータグラフィックスの動向、グラフィックスライブラリ、レンダリング、そしてレンダリングパイプラインについて解説します。
2 2. GPU (Graphics Processing Unit) レンダリングパイプラインのハードウェア実装と言える GPU (Graphic Processing Unit) の基本的な構造と動作原理を説明した後、そのプログラム可能化について説明し、それによって実行されるプログラマブルシェーダの作成方法を説明します。
3 3. 変換 (1) - 同次座標による座標変換 同次座標による平行移動、回転、拡大縮小、せん断などの座標変換とそれらの逆変換について説明した後、直交投影、透視投影による投影変換と、それらのプログラマブルシェーダによる実装を行います。
4 4. 変換 (2) - 四元数による回転と補間 四元数について概説し、それを回転の座標変換に用いる手法について説明します。また剛体アニメーションについて説明し、そこで用いる線形補間やスプライン補間、および四元数を用いた球面線形補間について説明し、それらのプログラマブルシェーダによる実装を行います。
5 5. 変換 (3) - 座標値の生成とブレンディング 図形の座標を手続きによって決定する方法について説明した後、それを用いたモーフィングやスキニングなどの図形の変形方法とそのプログラマブルシェーダによる実装を行います。
6 6. 陰影付け (1) - 基本的な陰影付け方程式 陰影付けの考え方と古典的な陰影付けモデルについて説明し、そのプログラマブルシェーダによる実装を行います。
7 7. 陰影付け (2) - 物理ベースの反射モデル 物体の表面の材質の物理的な特性にもとづいた、物理的に正確な陰影付けモデルについて解説します。また異方性反射モデルについて説明し、そのプログラマブルシェーダによる実装を行います。
8 8. まとめと試験 これまでに学んだことの復習と、それを用いたプログラムの作成を試験に代えて課します。

科目一覧へ戻る