実例で学ぶゲーム 3D 数学

ジツレイ デ マナブ ゲーム スリーディー スウガク

実例で学ぶゲーム 3D 数学の表紙
デザイン / グラフィックス
著者:
フレッチャー・ダン / イアン・パーベリー(ダン, フレッチャー / パーベリー, イアン)
出版社:
オーム社
出版日:
2008年10月
ISBN:
9784873113777
在庫:
在庫あり
5(3 件 / 楽天ブックス)
中級者向け
3D グラフィックスデザイン・グラフィックスゲーム開発3DCG数学線型代数ベクトル行列座標変換衝突判定幾何形状プリミティブ

なぜ注目されているか

言及数
320位
総合755位 ↑ 2 ランクアップ 言及 11 件・うち記事 9 件を掲載
01220222023202420252026

書籍紹介

近年のゲーム開発では 3DCG や物理シミュレーションなどの技術が多用されているため、その基盤である数学についての理解なしに商業ベースのゲーム開発はありえません。本書では、ゲーム開発や 3DCG で用いられる数学的な要素ーデカルト座標系、ベクトル、行列、線型代数、オイラー角、四元数、座標変換 (平行移動、回転、拡大縮小)、幾何形状プリミティブの種類と構造体、プリミティブの可視性と衝突判定といった 3D 数学、さらにはグラフィックス用の 3D 数学ーについてサンプルを多用しながらわかりやすく解説します。

技書の森解説

『実例で学ぶゲーム 3D 数学』 (Fletcher Dunn、Ian Parberry 著、松田 晃一 訳、オライリー・ジャパン、2008 年 10 月 3 日発行) は、原書 3D Math Primer for Graphics and Game Development の日本語版で、ゲーム開発や 3DCG で用いられる数学を、サンプルを多用しながら解説する書籍です。版元の紹介文が挙げる範囲は、デカルト座標系、ベクトル、行列、線型代数、オイラー角、四元数、座標変換 (平行移動、回転、拡大縮小)、幾何形状プリミティブ、プリミティブの可視性と衝突判定、そしてグラフィックス用の 3D 数学です。

全 15 章と付録 3 本の構成、座標系から可視性の決定まで

第 1 章「デカルト座標系」と第 2 章「複数の座標空間」は、2D から 3D への座標の考え方、左手座標系と右手座標系の違い、ワールド空間、オブジェクト空間、カメラ空間、慣性空間といった座標空間の使い分けを整理します。第 3 章「ベクトル」と第 4 章「ベクトルの演算」で内積と外積までを押さえ、第 5 章「簡単な 3D ベクトルクラス」で実装上の設計判断に移ります。第 6 章「行列入門」から第 8 章「より詳しい行列の説明」までは、回転、スケーリング、正投影、リフレクション、せん断といった線型変換と、行列式、逆行列、直交行列、4×4 の同次座標行列を使った透視投影を扱います。

第 9 章「3D における方向と角変位」は、方向を表す行列形式、オイラー角、四元数を長所と短所から比べ、slerp と呼ばれる四元数の補間や表現どうしの変換までを扱い、第 10 章「C++ による座標変換」でそれらをクラスとして組み立てます。続く第 11 章「幾何形状プリミティブ」、第 12 章「幾何テスト」、第 13 章「三角形メッシュ」、第 14 章「グラフィックス用の 3D 数学」、第 15 章「可視性の決定」では、光線と平面、球、AABB、三角形との交差テスト、グラフィックスパイプラインとライティング、視錐台に対するテスト、四分木と八分木、BSP ツリー、ポータルテクニックまでが並びます。巻末には付録 A「数学の復習」、付録 B「ゲーム開発者のための確率・統計入門」、付録 C「参考文献」が付き、版元ページでは練習問題の答えとサンプルコードが関連ファイルとして公開されています。

方向の表し方が 3 通りある理由と、実装で確かめる学び方

ゲームの 3D 数学でつまずきやすいのは、物体の向きを表す方法が一つではない点です。回転行列はベクトルの変換にそのまま使えますが 9 つの数を持ち、計算の誤差が積み重なると直交性が崩れます。オイラー角は 3 つの角度で直感的に扱えますが、回転の順序によっては 2 つの軸が重なって自由度を失うジンバルロックが起き、2 つの向きの間をなめらかにつなぐ補間も苦手です。四元数は 4 つの数で回転を表し、補間や合成に強い一方、値を見ても向きを想像しにくいという弱点があります。カメラやキャラクターの向きを扱う ゲームの開発現場 では、補間には四元数、ベクトルの変換には行列、編集画面での入力にはオイラー角というように、場面ごとに表現を使い分けるのが一般的で、第 9 章が 3 つを並べて比べる構成はこの実務の必要とよく対応しています。

本書の実装例は C++ で書かれたクラス として示されます。第 5 章は Vector3 クラスを題材に、浮動小数点の精度の選び方や演算子のオーバーロードの是非、仮想関数を使わない理由といった設計上の決定を節ごとに説明しており、数式がそのままコードに落ちるまでの距離を具体的に確かめられます。数式だけの教科書で線型代数を学んだものの、ゲームのコードでどう使うのかが結びつかなかった人にとって、この往復は理解の助けになります。

2008 年刊の前提と、ゲームの数学を土台から固めたい人への向き

刊行は 2008 年で、第 14 章のグラフィックスパイプラインの説明には、頂点のライティングやフラットシェーディングとグーローシェーディングといった項目が並びます。目次にシェーダーの語は無く、GPU 上で光の計算を自由に書く手法を学びたい場合は、別の本で補う必要があります。また、版元の紹介文は物理シミュレーションをゲーム開発で多用される技術として挙げていますが、物理演算そのものを扱う章は目次にありません。特定のゲームエンジンの使い方を知りたい人にも、目的の違う本です。

一方で、座標空間やベクトル、行列、四元数といった考え方は、エンジンや描画の仕組みが変わっても使われ続ける土台です。三角関数や総和の記号に不安があれば付録 A で復習でき、各手法の背後にある数学を、交差テストや可視性の判定という具体的な処理につなげて理解したいゲームプログラマーや学生にとって、本書は一冊で土台をまとめて固められる選択肢です。

言及した記事 (9 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: