ゲーム数学をより詳しく
ゲーム数学の入門として紹介したゲーム開発のための数学・物理学入門の次に読みたい書籍です。
「ゲーム開発の~」は、どちらかと言うと、見た目の動きメイン(幾何学的)でしたが、本書は背景の理論も解説します。
また四元数(クォータニオン)を扱うのも特徴です。
数学世界へようこそ
3Dゲームプログラミングをする上で、数学は切っても切れない関係です。
なぜなら(多くの環境では)キャラを移動したり回転する時、確実に行列を使うからです。
またその際、これまた確実に行列をベクトルと掛け算します。
そんでもって、回転角度の調整には嫌でも三角関数を使います。
そんな理由から、この3つ(行列・ベクトル・三角関数)は必ず付いて回る…
みたいな事を「ゲーム開発の~」のレビューでも話しました。
本書は、こういった基本を、さらに数学的(数式的、代数的、幾何的)に解説します。
もっと分かりやすく言うと、興味深い特徴をたくさん教えてくれるって事です。
中にはゲームプログラミングで使わなそうな話もありますが…(面白いんだけどね)
色んな式を組め
(DirectXしかり、OpenGLしかり)最近のライブラリには、あらかじめ便利な数学命令が用意されています。
これらは、そのまま単体でも有能なんですが
背景にある理論を知っておくと、組み合わせのレパートリーが広がります。
もう少しカッコ良く言うと
色んな式を組めるようになる
わけです。
この式を組む能力が高まり、命令を組み合わせるコツが分かる。
これが、私が本書をお薦めする理由です。
また、数学命令を自力で実装するソースも付いてるので、理論をプログラムで確認できるのも嬉しいです。
第4の刺客 クォータニオン
「ゲーム開発の~」では基本の3つ(行列・ベクトル・三角関数)を扱いましたが、本書は加えてクォータニオン(四元数)にも踏み込みます。
いちおう基本の3つだけでも、就職作品のゲームなら十分作れます。
じゃあ何故クォータニオンを使うのか?
ゲームプログラミングの観点で言うと
キャラの姿勢制御がラクになる
これがデカい理由です。
具体的に言うと、車や戦闘機や宇宙船がギクシャクせずスムーズに動きます。
使わなくても力技で(ifの羅列とか)なんとか出来るケースもありますが、ソースが複雑になり変なバグが混入しかねません。
そこでクォータニオンを使うと、ソースが比較的シンプルになり見やすくなるわけです。
ジンバルロックとは
上でスムーズに動きますと書きましたが、もう少し詳しく言うとジンバルロックを防げるってことです。
ジンバルロックとは?
→ある条件を満たすと、回転できない方向が生まれちゃう困った現象です
→これが起こると敵に機首を向けられず、一方的にボコられます
→アポロ13っていう映画を見ると、その怖さが分かるよ
つまりジンバルロックが起きると、向きたい方向を向けない!
その結果、戦闘中に制御不能に陥ったり、ガクガクの不自然な動きになってしまいます。
以上すごいざっくりとした説明ですが、雰囲気だけでも伝われば嬉しいです。
正確を期すなら動画で説明すべきなんですが、面倒なので、もっと知りたい方はググって下さい(丸投げ)。
とにかくクォータニオンを使うと、この厄介なジンバルロックが予防できます。
ありがとう、ハミルトン先生
ちなみにクォータニオンを発見した数学者ウィリアム・ハミルトンは19世紀の人です。
100年以上経って、自分の研究がこんなこと(ゲーム、宇宙航空)に使われるとは思いもしなかったでしょう。
ハミルトンの晩年は不遇で悲惨だっただけに、ぜひ今の様子を見せてあげたかったですね。
こういう事があるから、科学って面白いと思います。
「数学って何の役にも立たないじゃん。」
って偉そうに言ってるやつには、プレステを取り上げて、回らない方向へ首を回してやりたいですね。
数学ワールドの観光地
本書は広大過ぎる数学ワールドの中で、ゲームに関わるフィールドだけ詳しく解説してくれる「るるぶ」みたいな良書です。
私みたいな文系人間には嬉しい限りと言えます。
読むとゲーム数学ちほーの特徴が分かり、DirectXだろうとOpenGLだろうとUnityだろうとライブラリの威力を十二分に引き出せるでしょう。
また逆に、本書を基点にして、数学ワールド全体にも興味が湧きます。
数学はシンプルな論理の積み重ねです。
その事を実感できると…
数学嫌いが和らぎ、オイラーやハミルトンなど偉大な数学者に感謝できるようになりますよ。