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

ゲーム数学をより詳しく

ゲーム数学の入門として紹介したゲーム開発のための数学・物理学入門の次に読みたい書籍です。

「ゲーム開発の~」は、どちらかと言うと、見た目の動きメイン(幾何学的)でしたが、本書は背景の理論も解説します。

また四元数(クォータニオン)を扱うのも特徴です。

数学世界へようこそ

3Dゲームプログラミングをする上で、数学は切っても切れない関係です。

なぜなら(多くの環境では)キャラを移動したり回転する時、確実に行列を使うからです。

またその際、これまた確実に行列をベクトルと掛け算します。

そんでもって、回転角度の調整には嫌でも三角関数を使います。

そんな理由から、この3つ(行列・ベクトル・三角関数)は必ず付いて回る…
みたいな事を「ゲーム開発の~」のレビューでも話しました。

本書は、こういった基本を、さらに数学的(数式的、代数的、幾何的)に解説します。

もっと分かりやすく言うと、興味深い特徴をたくさん教えてくれるって事です。

中にはゲームプログラミングで使わなそうな話もありますが…(面白いんだけどね)

色んな式を組め

(DirectXしかり、OpenGLしかり)最近のライブラリには、あらかじめ便利な数学命令が用意されています。

これらは、そのまま単体でも有能なんですが
背景にある理論を知っておくと、組み合わせのレパートリーが広がります。

もう少しカッコ良く言うと

色んな式を組めるようになる

わけです。

この式を組む能力が高まり、命令を組み合わせるコツが分かる。

これが、私が本書をお薦めする理由です。

また、数学命令を自力で実装するソースも付いてるので、理論をプログラムで確認できるのも嬉しいです。

第4の刺客 クォータニオン

「ゲーム開発の~」では基本の3つ(行列・ベクトル・三角関数)を扱いましたが、本書は加えてクォータニオン(四元数)にも踏み込みます。

いちおう基本の3つだけでも、就職作品のゲームなら十分作れます。

じゃあ何故クォータニオンを使うのか?

ゲームプログラミングの観点で言うと

キャラの姿勢制御がラクになる

これがデカい理由です。

具体的に言うと、車や戦闘機や宇宙船がギクシャクせずスムーズに動きます

使わなくても力技で(ifの羅列とか)なんとか出来るケースもありますが、ソースが複雑になり変なバグが混入しかねません。

そこでクォータニオンを使うと、ソースが比較的シンプルになり見やすくなるわけです。

ジンバルロックとは

上でスムーズに動きますと書きましたが、もう少し詳しく言うとジンバルロックを防げるってことです。

ジンバルロックとは?
→ある条件を満たすと、回転できない方向が生まれちゃう困った現象です
→これが起こると敵に機首を向けられず、一方的にボコられます
アポロ13っていう映画を見ると、その怖さが分かるよ

つまりジンバルロックが起きると、向きたい方向を向けない!
その結果、戦闘中に制御不能に陥ったり、ガクガクの不自然な動きになってしまいます。

以上すごいざっくりとした説明ですが、雰囲気だけでも伝われば嬉しいです。

正確を期すなら動画で説明すべきなんですが、面倒なので、もっと知りたい方はググって下さい(丸投げ)。

とにかくクォータニオンを使うと、この厄介なジンバルロックが予防できます。

ありがとう、ハミルトン先生

ちなみにクォータニオンを発見した数学者ウィリアム・ハミルトンは19世紀の人です。
100年以上経って、自分の研究がこんなこと(ゲーム、宇宙航空)に使われるとは思いもしなかったでしょう。

ウィリアム・ハミルトン
誰が見てもかわいい

ハミルトンの晩年は不遇で悲惨だっただけに、ぜひ今の様子を見せてあげたかったですね。

こういう事があるから、科学って面白いと思います。

「数学って何の役にも立たないじゃん。」
って偉そうに言ってるやつには、プレステを取り上げて、回らない方向へ首を回してやりたいですね。

数学ワールドの観光地

本書は広大過ぎる数学ワールドの中で、ゲームに関わるフィールドだけ詳しく解説してくれる「るるぶ」みたいな良書です。

私みたいな文系人間には嬉しい限りと言えます。

「るるぶ」の表紙です。 るるぶ北海道。サロベツ原野とかオススメ。

読むとゲーム数学ちほーの特徴が分かり、DirectXだろうとOpenGLだろうとUnityだろうとライブラリの威力を十二分に引き出せるでしょう。

また逆に、本書を基点にして、数学ワールド全体にも興味が湧きます。

数学はシンプルな論理の積み重ねです。

その事を実感できると…
数学嫌いが和らぎ、オイラーやハミルトンなど偉大な数学者に感謝できるようになりますよ。

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

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

分かりやすさ

9.4/10

情報量

9.8/10

コストパフォーマンス

10.0/10

実用性

9.6/10

Points

  • ゲームと数学の関係が分かる
  • クォータニオンの基本が学べる
  • 数学命令をもっと使いこなせる
  • ゲームに関わる分野だけピンポイントで解説

Notes

  • 行列はDirectX形式(行優先)です
  • 同次座標(4x4)行列の解説が申し訳程度です…

もっと知りたい?
C言語_初級 | C言語_中上級 | C++_初級 | C++_中上級 | C#_初級 | C#_中上級 | Java_初級 | Java_中上級 | コンピュータ_サイエンス | アルゴリズム_ | ゲーム_プログラミング | DirectX_ | Unity_ | ゲーム_デザイン | ゲームのしくみ_ | 数学_ | プログラミング_テクニック | 歴史_偉人 | ソフトウェア工学_ | 読み物_エッセー | 人生_生き方 | 創造_発想 | 雑誌_ | 漫画_小説_映画 | メルマガのバックナンバー_

Kuniaki Ebata 登録者

プログラマーで現役のスキー国体選手です。
頭脳と体を動かすのが大好きなフレンズなんだね。専門学校で先生もやってます。

教え子をゲーム会社にどんどん送り込み、世界を面白くする野望を実現中。

プログラミングが上達するメルマガやってます。

ここを見たゲーム業界の卒業生へ
新作が出たら、連絡するか現物を送ってくれると嬉しいです。
ただし18禁・CERO-Dの場合は、厳重に梱包の上、品名をパソコン部品にて送る事(だいじ)。