|
【著者紹介】
Eric Lengyelは,米カリフォルニア州サニーベールにあるTerathon Software社の最高技術責任者です。バージニア工科大学で理学修士号(数学)を取得し,Gamasutra.comなどの業界誌に記事を寄稿しています。Game Programming Gems 2のジオメトリ処理のセクション編集者も務めました。
【各CHAPTER紹介】
CHAPTER 1 ベクトル
ベクトルとその諸性質を徹底的に復習することから始めます。ベクトルは3Dコンピュータグラフィックスの研究の根幹をなす重要なものであり,内積や外積のような演算は本書全体にわたって広範囲に使用します。
CHAPTER 2 行列
行列を理解することは,3D ゲームプログラミングに欠かせないもう1つの基本要素です。この章では連立1 次方程式の行列表現のような初歩的な概念に加えて,固有ベクトルや対角化のような高度なトピックについても議論します。
CHAPTER 3 変換
Chapter 3では,平行移動,回転,スケーリングのような変換を行うためのツールとして,行列を詳細に調べます。ここで4 次元同次座標の概念を導入します。これは,異なる座標系間を行き来するために3D グラフィックスシステムで多用されています。四元数の諸性質とその変換ツールとしての有用性についても学びます。
CHAPTER 4 3Dエンジンの幾何学
ここからは,最初の3 つの章で紹介した内容を,3D ゲームプログラミングとコンピュータグラフィックスにおける実践的な用途に応用していきます。3 次元空間における直線と平面について分析したあと,視錐台を導入し,視錐台と仮想カメラとの関係を調べます。この章には,視野,透視補正補間,射影行列などのトピックが含まれます。
CHAPTER 5 レイトレーシング
レイトレーシング法はゲームプログラミングの多くの分野で有効であり,ライトマップの生成,視線検出,衝突検出などに利用できます。この章では,まず解析的および数値的な求解法について述べ,次に一般的な幾何オブジェクトに対するレイ交差判定の手法を紹介します。そして最後に,反射ベクトルと屈折ベクトルの計算について考察します。
CHAPTER 6 照明
Chapter 6では,照明とシェーディングに関係する各種トピックについて幅広く議論します。まず光源の種類を列挙し,単純な反射モデルに進みます。そして,テクスチャマップ,光沢マップ,バンプマップを用いて,レンダリングされたサーフェスにディテールを加える手法について検討します。最後に,クック・トランスの物理照明モデルを詳しく説明します。
CHAPTER 7 可視判定
3Dエンジンのパフォーマンスは,シーン内のどの部分が見えているかを判定する能力に大きく左右されます。この章では,各種の境界ボリュームを構築する方法と,視錐台に対してその境界ボリュームが見えるかどうかを判定する方法を紹介します。また,空間分割やポータルシステムの使用によって実現される大規模な可視判定についても考察します。
CHAPTER 8 衝突検出
衝突検出は,ゲーム世界内のさまざまなオブジェクト間の相互作用に不可欠です。この章では,動いているオブジェクトと静的な環境,あるいは動いているオブジェクト同士が衝突するかどうかを判定する一般的な手法を紹介します。
CHAPTER 9 ポリゴン技法
Chapter 9では,ポリゴンモデルの操作を含むいくつかの技法を紹介します。最初に扱うトピックは任意のサーフェスにデカールを貼り付ける方法であり,これに関連して頂点の深度をオフセットする手法も扱います。その他のトピックとしては,さまざまな特殊効果で利用されるビルボード技法,ステンシルバッファを用いたシャドウ生成,およびポリゴン削減技法が含まれます。
CHAPTER 10 並進運動の物理学
ここからの2 つの章では,古典物理学の各種トピックを概説します。物理学は,3D ゲーム内でオブジェクトがもっともらしい動きを見せるために欠かせません。Chapter 10 ではまず,2 階微分方程式の解としての位置関数について考察します。そして,真空中と抵抗のある媒質中での弾丸の運動を検討し,最後に摩擦力について調べます。
CHAPTER 11 回転運動の物理学
Chapter 11でも物理学を扱うが,ここではより高度な回転運動について説明します。まず,回転する環境下においてオブジェクトにはたらく力を調べます。次に,剛体運動について考察し,慣性テンソルを通じた角速度と角運動量の関係を導きます。ばねや振り子による振動運動についても議論します。
CHAPTER 12 流体シミュレーション
最後は,2 次元の波動方程式に基づいた流体運動の物理モデルで締めくくります。流体の表面を表す規則的なグリッド上の頂点の位置を計算する方法を作り出し,安定性を得るための必要条件について考察します。
APPENDIX A 複素数
広範囲ではないが,本書のいくつかの部分で複素数を用いています。ここでは複素数の概念を復習し,本書の他の部分で使われている諸性質について考察します。
APPENDIX B 三角関数の公式
Appendix B では三角関数について復習し,本書の至るところで用いている公式や恒等式を手早く導出します。
APPENDIX C 座標系
ここでは,円柱座標と球座標について簡単に説明します。これらの座標系は本書のいくつかの部分で用いらていますが,特にChapter 11で多用しています。
APPENDIX D テイラー級数
本書の至るところで,さまざまな関数のテイラー級数を利用しています。Appendix Dではテイラー級数を導き,よく使われる関数に対するベキ級数表現を調べます。
APPENDIX E 練習問題の解答
各章の終わりの練習問題のうち,計算が必要なものの解答を載せてあります。
【目次】
- はじめに
- 内容の概略
- 表記規則
訳者より
- CHAPTER 1 ベクトル1
- 1.1 ベクトルの性質
- 1.2 内積
- 1.3 外積
- 1.4 ベクトル空間
- まとめ
- 練習問題
- CHAPTER 2 行列
- 2.1 行列の性質
- 2.2 連立1 次方程式
- 2.3 逆行列
- 2.4 行列式
- 2.5 固有値と固有ベクトル
- 2.6 対角化
- まとめ
- 練習問題
- CHAPTER 3 変換
- 3.1 一般の変換
- 3.1.1 直交行列
- 3.1.2 掌性
- 3.2 スケーリング変換
- 3.3 回転変換
- 3.3.1 任意軸まわりの回転
- 3.4 同次座標
- 3.4.1 4 次元変換
- 3.4.2 点と方向
- 3.4.3 w 座標の幾何学的解釈
- 3.5 法線ベクトルの変換
- 3.6 四元数
- 3.6.1 四元数の数学
- 3.6.2 四元数による回転
- 3.6.3 球面線形補間
- まとめ
- 練習問題
- CHAPTER4 3Dエンジンの幾何学
- 4.1 3 次元空間における直線
- 4.1.1 点と直線の距離
- 4.1.2 2 つの直線の距離
- 4.2 3 次元空間における平面
- 4.2.1 直線と平面の交差
- 4.2.2 3 つの平面の交差
- 4.2.3 平面の変換
- 4.3 視錐台
- 4.3.1 視野
- 4.3.2 錐台平面
- 4.4 透視補正補間
- 4.4.1 深度の補間
- 4.4.2 頂点属性の補間
- 4.5 射影
- 4.5.1 透視射影
- 4.5.2 正射影
- 4.5.3 錐台平面の抽出
- まとめ
- 練習問題
- CHAPTER 5 レイトレーシング
- 5.1 求根
- 5.1.1 2 次多項式
- 5.1.2 3 次多項式
- 5.1.3 4 次多項式
- 5.1.4 ニュートン・ラフソン反復法
- 5.1.5 逆数と平方根の改良
- 5.2 交差
- 5.2.1 レイと三角形の交差
- 5.2.2 レイとボックスの交差
- 5.2.3 レイと球の交差
- 5.2.4 レイと円柱の交差
- 5.2.5 レイとトーラスの交差
- 5.3 法線ベクトルの計算
- 5.4 反射ベクトルと屈折ベクトル
- 5.4.1 反射ベクトルの計算
- 5.4.2 屈折ベクトルの計算
- まとめ
- 練習問題
- CHAPTER 6 照明
- 6.1 RGB カラー
- 6.2 光源
- 6.2.1 環境光
- 6.2.2 平行光源
- 6.2.3 点光源
- 6.2.4 スポットライト
- 6.3 拡散反射ライティング
- 6.4 テクスチャマッピング
- 6.4.1 標準的なテクスチャマッピング
- 6.4.2 射影テクスチャマッピング
- 6.4.3 キューブテクスチャマッピング
- 6.5 鏡面反射ライティング
- 6.6 発光
- 6.7 シェーディング
- 6.7.1 法線ベクトルの計算
- 6.7.2 グーローシェーディング
- 6.7.3 フォンシェーディング
- 6.8 バンプマッピング
- 6.8.1 バンプマップの構築
- 6.8.2 接空間
- 6.8.3 接線ベクトルの計算
- 6.8.4 実装
- 6.9 物理反射モデル
- 6.9.1 双方向反射率分布関数
- 6.9.2 クック・トランスの照明
- 6.9.3 フレネル係数
- 6.9.4 マイクロファセット分布関数
- 6.9.5 幾何減衰係数
- 6.9.6 実装
- まとめ
- 練習問題
- CHAPTER 7 可視判定
- 7.1 境界ボリュームの構築
- 7.1.1 主成分分析
- 7.1.2 境界ボックスの構築
- 7.1.3 境界球の構築
- 7.1.4 境界楕円体の構築
- 7.1.5 境界円柱の構築
- 7.2 境界ボリュームのテスト
- 7.2.1 境界球のテスト
- 7.2.2 境界楕円体のテスト
- 7.2.3 境界円柱のテスト
- 7.2.4 境界ボックスのテスト
- 7.3 空間分割
- 7.3.1 8 分木
- 7.3.2 2 分空間分割木
- 7.4 ポータルシステム
- 7.4.1 ポータルのクリッピング
- 7.4.2 縮小された視錐台
- まとめ
- 練習問題
- CHAPTER 8 衝突検出
- 8.1 環境との衝突
- 8.1.1 球と平面の衝突
- 8.1.2 ボックスと平面の衝突
- 8.1.3 空間分割
- 8.2 オブジェクト間の衝突
- 8.2.1 2 つの球の衝突
- 8.2.2 球とボックスの衝突
- 8.2.3 2 つのボックスの衝突
- まとめ
- 練習問題
- CHAPTER 9 ポリゴン技法
- 9.1 深度値のオフセット
- 9.1.1 射影行列の修正
- 9.1.2 オフセット値の選択
- 9.1.3 実装
- 9.2 デカールの貼り付け
- 9.2.1 デカールメッシュの構築
- 9.2.2 ポリゴンのクリッピング
- 9.3 ビルボード
- 9.3.1 無制約の四角形
- 9.3.2 制約された四角形
- 9.3.3 ポリライン四角形ストリップ
- 9.4 ステンシルシャドウ
- 9.4.1 エッジリストの構築
- 9.4.2 シャドウのレンダリング
- 9.4.3 実装
- 9.5 ポリゴンの削減
- まとめ
- 練習問題
- CHAPTER 10 並進運動の物理学
- 10.1 位置関数
- 10.2 2 階微分方程式
- 10.2.1 同次微分方程式
- 10.2.2 非同次微分方程式
- 10.2.3 初期条件
- 10.3 弾丸の運動
- 10.4 抵抗を受ける運動
- 10.5 摩擦
- まとめ
- 練習問題
- CHAPTER 11 回転運動の物理学
- 11.1 回転環境
- 11.1.1 角速度
- 11.1.2 遠心力
- 11.1.3 コリオリ力
- 11.2 剛体運動
- 11.2.1 重心
- 11.2.2 角運動量とトルク
- 11.2.3 慣性テンソル
- 11.2.4 慣性主軸
- 11.3 振動運動
- 11.3.1 ばねの運動
- 11.3.2 振り子の運動
- まとめ
- 練習問題
- CHAPTER 12 流体シミュレーション
- 12.1 波動方程式
- 12.2 導関数の近似
- 12.3 面変位量の評価
- 12.4 実装
- まとめ
- 練習問題
- APPENDIX A 複素数341
- A.1 定義
- A.2 加算と乗算
- A.3 共役と逆元
- A.4 オイラーの公式
- APPENDIX B 三角関数の公式
- B.1 関数の定義
- B.2 対称性と位相シフト
- B.3 ピタゴラスの定理
- B.4 加法定理
- B.5 逆関数
- B.6 正弦定理と余弦定理
- APPENDIX C 座標系
- C.1 円柱座標
- C.2 球座標
- APPENDIX D テイラー級数
- D.1 導出
- D.2 ベキ級数展開
- D.3 オイラーの公式
- APPENDIX E 練習問題の解答
- 参考文献
- 索引
ページの先頭に戻る
|