このプロジェクトについて
Graphics Foundationsは、コンピュータグラフィックス基礎のための自己完結型のトピック別学習リソースであり、数学、レンダリングパイプライン、リアルタイムおよびレイトレーシング画像の背後にあるアルゴリズムをカバーしています。UCLAのCS 174A(コンピュータグラフィックス入門、2019〜2021年)の6クォーターにわたるディスカッションセクションから生まれ、独立したリソースとして書き直されました。著者は公式のコース教材ではないと述べています。
教材は、順番に読むことを想定した13章(0〜12番)の学習パスとして構成されています。各章は、学習内容を明示し、図で説明し、デモへのリンクを提供し、最後に自己確認問題と隠された回答を用意しています。
- 第0章:グラフィックスのためのセットアップとJavaScript(ツール、モジュール、クラス、クロージャ、型付き配列、フレームループ)
- 第1章:レンダリングパイプラインとGLSL(頂点/フラグメントシェーダ、ラスタライゼーション、クリップ空間)
- 第2章:点、ベクトル、座標系(アフィン空間、同次座標と重心座標、ドット積とクロス積)
- 第3章:三角形による形状のモデリング(離散化、インデックス付きメッシュ、ストリップ、ワインディング、フラット法線とスムーズ法線)
- 第4章:変換(平行移動、回転、スケール、シアー、リフレクト;順序;階層;アニメーション)
- 第5章:基底の変更(フレーム、座標変換、カメラとしてのフレーム)
- 第6章:ビューイングと投影(look-at、正投影と透視投影の導出、クリッピング、zバッファ)
- 第7章:ライティングとシェーディング(PhongとBlinn–Phong、光源の種類、フラット/グーロー/Phongシェーディング、法線行列)
- 第8章:テクスチャマッピング(uvマッピング、フィルタリング、ミップマップ、透視補正補間、バンプ/ノーマル/ディスプレイスメント)
- 第9章:衝突検出(境界ボリューム、分離軸定理、ブロードフェーズ、タイムステッピング)
- 第10章:影、鏡、透明性(シャドウマッピング、平面ミラー、アルファブレンディング、乗算済みアルファ)
- 第11章:レイトレーシング(レイ生成、交差判定、再帰レイ、レイツリー、高速化)
- 第12章:インタラクティブなグラフィックスプロジェクトの構築(計画、タイミングとステートマシン、パーティクル、スカイボックス、ピッキング、合成、色)
ノートには2つの練習問題集が付属しています:Problems I(基礎、変換、ビューイング)とProblems II(ライティング、テクスチャ、衝突、レイトレーシング)で、それぞれ完全な解答解説付きです。前提条件は、任意の言語でのプログラミングと、ベクトル、行列、ドット積、クロス積のレベルの線形代数です。必要なJavaScriptは第0章でカバーされています。
章に付随する7つのインタラクティブなブラウザデモが、ライブGitHub Pagesサイトからリンクされています:hello triangle(素のWebGL)、変換、カメラと投影、ライティングとシェーディング、テクスチャマッピング、レイトレーシング、境界ボリュームです。デモ02〜07は、Garett Ridgeによる小さな教育用ライブラリTinyGraphics.jsの上に構築されており、ベンダーコピーではなく公開されたコピーから読み込まれます。デモはWebGL 2対応のデスクトップブラウザを想定しています。ローカルサーバースクリプト(node tools/serve.mjs)が提供され、TinyGraphics.jsのローカルクローンを使って開発するオプションもあります。
リポジトリは、notes/、exercises/、figures/(tools/figures.pyによって生成されたSVG図)、demos/(デモごとに1つのHTMLファイルと共有ヘルパー)、tools/で構成されています。特筆すべきは、ノートがコードと同様にテストされていることです:スクリプトがノートと演習内のすべての計算値を再計算し、リンク、アンカー、図の独自性、コース運営に関する記載がないことをチェックし、各デモをヘッドレスChromiumで読み込んで全コントロールを押しながらスクリーンショットを撮り、github.com上での数式のレンダリングを監査します。fix_math.pyスクリプトは、GitHub上でネイティブMathMLとして正しくレンダリングされないLaTeX構文(\mathbf、\boxed、\tag、\operatornameなど)を書き換えます。デモチェックにはローカルのWebGL 2対応Chromiumが必要で、人間によるレビューのためのスクリーンショットを書き出します。
ノートはUCLA CS 174Aのディスカッションセクション用教材として始まり、Asish Law教授とDemetri Terzopoulos教授が担当したコースを補助するものでした。トピックの選択と順序はそれらのコースに従っています。講義スライド、教科書の図、課題は含まれていません。元の毎週のディスカッション教材は、アーカイブタグと四半期ごとのリポジトリで引き続き入手できます。ノート、演習、図、デモはYunqi Guoの著作物であり、CC BY-NC-ND 4.0の下でライセンスされています:クレジットを明示して非営利目的で未改変のコピーを読む、勉強する、共有することは許可されていますが、改変版の配布や商用利用は許可されていません。TinyGraphics.jsは独自の条件を持つ別プロジェクトです。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.