索引 / 001 JA
Fundamentals of Computer Graphics(コンピュータグラフィックスの基礎) cover

コンピュータサイエンス

コンピュータサイエンス

Fundamentals of Computer Graphics(コンピュータグラフィックスの基礎)

Steve Marschner; Peter Shirley

英語原題: Fundamentals of Computer Graphics

コンピュータグラフィックスの数学的・アルゴリズム的基礎を扱う標準的な学部向け教科書。必要な線形代数と幾何を組み込みながらレイトレーシングとラスタ化を基本原理から構築し、色、視覚知覚、コンピュータアニメーションなどの話題については寄稿された章を加えている。

前提知識: プログラミング能力と1年次の微積分および線形代数。必要な数学は本書内で復習されるが、進度は速い。

難易度レベル
中級
学術レベル
学部
computer graphicsrenderingray tracingrasterizationlinear algebra教科書

01 / 読書ガイド

読書ガイド

引用

Marschner, S., & Shirley, P. (2021). Fundamentals of Computer Graphics (5th ed.). A K Peters/CRC Press.

章の要約

第5版は716ページ、カラー図版514点で、23章からなる。第1〜14章は二人の主著者が執筆し、中核となる授業内容を構成する。第15〜23章は専門家による寄稿で、それぞれ一つのトピックを扱う。出版社は本書のアプローチを、幾何学的な直観を重視し、レイトレーシングとラスタライズという相補的な二つの方法を通じて、画像がどのように画面に現れるかを説明するものと述べている。この版では、シェーディング、レイトレーシング、物理ベースのレンダリング、数学、サンプリングの各章が大幅に改訂され、より自然な流れになるよういくつかの章が統合・再構成されたという。

第1〜3章:Introduction(序論);Miscellaneous Math(さまざまな数学);Raster Images(ラスター画像)

本書は、分野の概観、全体で使う数学をまとめた章(線形代数は後に独立した章がある)、そしてラスター画像の章で始まる。ラスター画像とは、本書のあらゆる手法が最終的に生み出すピクセルの格子である。

第4〜5章:Ray Tracing(レイトレーシング);Surface Shading(サーフェスシェーディング)

レイトレーシングは線形代数や変換より前、早い段階で登場する。画像を作る最初の完全な方法は、視点からシーンへ光線を追跡することである。第5章はサーフェスシェーディング、すなわち見えている表面の色を光と材質からどう計算するかを扱う。

第6〜8章:Linear Algebra(線形代数);Transformation Matrices(変換行列);Viewing(ビューイング)

二つ目の方法のための数学的な中核である。ベクトルと行列、物体を動かし配置するための変換行列、そして三次元のシーンを二次元の画像に写すビューイング変換を扱う。

第9章:The Graphics Pipeline(グラフィックスパイプライン)

二つの主要な方法のうち二つ目のラスタライズは、グラフィックスパイプライン、つまりグラフィックスハードウェアが幾何プリミティブをピクセルに変える一連の段階として示される。

第10〜11章:Signal Processing(信号処理);Texture Mapping(テクスチャマッピング)

第10章は画像のサンプリングとフィルタリングのための信号処理の背景を与え、第11章はそれをテクスチャマッピング、すなわち画像やその他のパターンを表面に貼り付けることに応用する。

第12〜14章:Data Structures for Graphics(グラフィックスのためのデータ構造);Sampling(サンプリング);Physics-Based Rendering(物理ベースのレンダリング)

これらの章は、より高度なレンダリングを支える。レンダリングを効率化する空間的なデータ構造などのデータ構造、サンプリング(この版で大幅に改訂された章の一つ)、そしてシェーディングを光の物理に結びつける物理ベースのレンダリングである。

第15〜17章:Curves(曲線);Computer Animation(コンピュータアニメーション);Using Graphics Hardware(グラフィックスハードウェアの利用)

寄稿章は、出版社の説明にあるスプラインを扱う曲線の章(Michael Gleicher)から始まり、コンピュータアニメーション(Michael Ashikhmin)、グラフィックスハードウェアの実践的なプログラミング(Peter Willemsen)と続く。

第18〜20章:Color(色);Visual Perception(視覚知覚);Tone Reproduction(トーン再現)

画像の人間の側に関する3章である。色(Erik ReinhardとGarrett Johnson)、視覚知覚(William B. Thompson)、そしてトーン再現、すなわち現実世界の幅広い明るさの範囲をディスプレイの限られた範囲に対応づけること(Erik Reinhard)である。

第21〜23章:Implicit Modeling(陰関数モデリング);Computer Graphics in Games(ゲームにおけるコンピュータグラフィックス);Visualization(可視化)

最後の寄稿章は、陰関数モデリング(Brian Wyvill)、ゲームにおけるグラフィックス(Naty Hoffman)、可視化(Tamara Munzner)を扱う。

主要概念

第1〜5章:画像とレイトレーシング

  • ラスター画像:ピクセル値の格子として保存された画像。
  • レイトレーシング:視点からシーンへ光線をたどり、見える表面を求めて画像を計算すること。
  • サーフェスシェーディング:光源と材質の性質から、表面上の点の色を計算すること。

第6〜9章:変換とパイプライン

  • 変換行列:物体を回転・拡大縮小・平行移動させる行列で、一つの変換にまとめられる。
  • ビューイング:三次元シーンをスクリーン座標に写す一連の変換。
  • グラフィックスパイプライン:ラスタライズに基づくシステムがプリミティブをピクセルに変える段階の連なり。

第10〜14章:サンプリング、テクスチャ、高度なレンダリング

  • サンプリングとフィルタリング:信号処理の考え方を用いて、連続的な信号を標本で表し、エイリアシングを抑えること。
  • テクスチャマッピング:画像や関数から値を参照して、表面の性質を変化させること。
  • 空間データ構造:光線と物体の交差判定などの問い合わせを高速化する構造。
  • 物理ベースのレンダリング:光の輸送の物理に基づくレンダリング。

第15〜23章:寄稿によるトピック

  • スプラインと曲線:制御点によって定義される滑らかな曲線。
  • トーン再現:シーンの輝度をディスプレイの限られた範囲に対応づけること。
  • 陰関数モデリング:形状を関数の等値面として定義すること。
  • 可視化:理解を助けるためにデータをグラフィカルに表現すること。

批判的分析

長所

  • 二つの方法を並べて示す。 レイトレーシング(第4章)をパイプライン(第9章)より前に置くことで、学生は単純で完結したアルゴリズムから早い段階で画像を作り、その後でラスタライズを同じ問いへの別の答えとして見ることができる。出版社は幾何学的な直観の重視を強調している。
  • 数学が自己完結している。 本書は、さまざまな数学、線形代数、信号処理について独自の章を持つ。出版社が引用するFernando Berzal(グラナダ大学)は、この理由から本書を異例なほど自己完結した教科書と評している。
  • 専門家による寄稿章。 色、知覚、トーン再現、アニメーション、ゲーム、可視化の章は専門家が執筆しており、Berzalはこれを標準的な教科書には珍しい特徴だと述べている。これらの章によって、授業をレンダリングの外の隣接分野へ広げることができる。
  • 改訂された中核部分。 第5版は、多くの授業が依拠するシェーディング、レイトレーシング、物理ベースのレンダリング、数学、サンプリングの章を大幅に更新したとしている。

短所

  • 中核部分にプログラミングインターフェースがない。 目次には特定のグラフィックスAPIを軸にした章がなく、ハードウェアのプログラミングを扱うのは寄稿章の中にあるUsing Graphics Hardware(第17章)だけである。OpenGL、WebGL、Vulkanのコードを書く必要がある学生は、別の教材が必要になる。
  • 寄稿章のばらつき。 第15〜23章は異なる著者による単一トピックの章なので、それぞれが完全な解説ではなく入門にとどまり、連続した流れも形づくらない。
  • 深さより幅。 700ページを超え23章ある本書は、一つの授業で扱える量をはるかに超えている。数学的な背景は少数の章(第2、6、10章)に凝縮されているので、線形代数が弱い学生はそこに余分な時間をかける覚悟が必要である。

コースにおける位置づけ

このコースのグラフィックスの本の中で、本書は原理を優先する主教科書である。Gambettaの Computer Graphics from Scratch ははるかに短い入門書で、読者は第一原理からレイトレーサーとラスタライザを擬似コードで書いていく。本書の第4章と第9章への穏やかな準備になる。AngelとShreinerの Interactive Computer Graphics は似た基礎を逆の順序で扱う。シェーダーを使った対話的なWebGLアプリケーションのプログラミングから始め、パイプライン内部のアルゴリズムは後から開いて見せる。最初の週から学生に実際のAPIでコードを書かせたい授業では、AngelとShreinerを主教科書にし、本書を数学と理論の参考書として使う方法もある。

さらに学ぶには、Akenine-Möllerらの Real-Time Rendering が、ゲームや対話的アプリケーションのためのGPUレンダリングの包括的な参考書として第9章と第17章を発展させる。Pharr、Jakob、Humphreysの Physically Based Rendering は、完全なフォトリアリスティック・レンダラーを文芸的プログラミングの形式で示し、第4、13、14章を発展させる。Rogers、Sharp、Preeceの Interaction Design はコースのヒューマン・コンピュータ・インタラクションの側に属し、本書の内容とは重ならない。

本書の使い方

本書は、プログラミングができ、微積分と多少の線形代数に触れたことのある学部生に適している。本書自身の数学の章は、最初の授業ではなく復習として役立つ。

  • 中核の流れ(1学期): 第1〜9章を順に読み、必要に応じて第2章と第6章を参照する。第4〜5章を読みながら基本的なレイトレーサーを実装し、第7〜9章では簡単なラスタライザやパイプラインのプログラムを書く。
  • 第2のまとまり: サンプリング、フィルタリング、テクスチャには第10〜11章。続いて加速構造と物理ベースのレンダリングには第12〜14章で、これらはより進んだ授業や2つ目の授業に向いている。
  • 寄稿章: 関心に応じて選ぶ。モデリングとアニメーションには第15〜16章、色と画像には第18〜20章、リアルタイムの作業には第17章と第22章、可視化には第23章。いずれも中核部分の後なら単独で読める。

プログラミングは欠かせない。本書は原理を説明する本なので、授業が選んだ言語とグラフィックスAPIによるプロジェクトと組み合わせ、シェーディングからテクスチャのフィルタリングまで、それぞれの考え方を実装して確かめるとよい。