『ゲームプログラミングのための3Dグラフィックス数学』
3DCGのプログラミングで使う様々な数学的トピックスについて解説している書籍です。
とても分かりやすく、きれいに整理された数式で、数学的トピックスが解説されています。
今は主に趣味でCGプログラミングをするときに数学的なトピックスを調べるときに使っていますが、昔、CG関係のプログラムを書く仕事をしていたときに出会っていたらと思わせる良書です。
『ゲームプログラミングのための3Dグラフィックス数学』(Eric Lengyel、ボーンデジタル)
(原題:『Mathematics for 3D Game Programming & Computer Graphics』)
関連書籍
『3Dゲームプログラマーのための数学[基礎編]』(大川善邦、工学社)
プログラマのための数学の本が売れている
最近、アマゾンのプログラミング関係の技術書の売上で面白いことが起きています。
プログラマ向けの数学の本が結構売れているのです。数学を扱った本が、プログラミング関係の書籍の売上の中で5位以内に入ったり、アマゾンの書籍の全体の売上で1000位以内に入ったりします。
一番目立つのが『プログラマの数学』です。アマゾンの売り上げでも、1000位以内に入っていることが結構多いみたいです。
私は、この本を持っていないのでよく分からないのですが、どうも、文系の人にもわかるように、情報工学の数学的トピックスを分かりやすく解説した本みたいです。
情報工学や情報科学といったコンピュータサイエンスは、応用数学的な面があり、プログラミングがアルゴリズムを扱うこともあり、数学的な学問でもあります。
そんなわけで、理系の人が情報工学を勉強しているように、文系の人にも勉強してもらおうと思って、著者はこうした本を書いたのかもしれません。
筆者は、他にデザインパターンをJavaで理解するという内容の本も書いている超売れっ子の作家の1人でもあります。
この本を買っている人が他に買っている本を見ると、結構いろいろな人が買っているみたいだということが分かります。
特に、プログラマが一種の教養として買っているような感じもします。
その他にも、ゲーム関係のプログラミングに興味のある人も買っているようです。
あと売れているのが、『プログラミングのための線形代数』と『ゲーム開発のための数学・物理学入門』です。
両方とも、私も持っているのですが、残念ながら、どちらも読んでなく、積読状態です。
『プログラミングのための線形代数』はなかなかいい本です。私も以前にちょっとさわりだけ読んでみたのですが、コンピュータ関係の本というよりは、数学の分かりやすく、大切なことが書いてある本という感じがしました。
きっと、筆者が数学の知識がしっかりしていて、頭のいい方なのでしょう。
読者のレベルも少し高いみたいで、ゲーム関係のAIの本や画像処理の本と一緒に買う人も結構いるみたいです。
『ゲーム開発のための数学・物理学入門』は、どういう人が読んでいるか分かりやすい本です。
題名にもあるとおり、ゲームを開発している人やゲームの開発に興味のある人が読んでいるらしいことが分かります。
高校生でも分かるのではないかと思うくらい、簡単に分かりやすく書いある本で、ちょっとレベルが低すぎるのではないかとさえ思ってしまいますが、アマゾンのレビューを見ると、単なる数学の解説書ではなく、ゲームのどういう画面では、どういう数学や物理が必要になるのかが分かるのがいいということです。
まずは、この本から入り、この本が理解できたら、もっと本格的な数学や物理の本を読めばいいのかもしれません。
何で、今回、こんな風に、アマゾンでプログラマ向けの数学の本が売れていることが気になったかというと、実は、私が、最初に作った小冊子が、コンピュータグラフィックスの数学について分かりやすくまとめたものだったからです。
あの小冊子が、思った以上に売れたのも、アマゾンのちょっとした小さなブームと関係あるのかもしれません。
いずれにしても、プログラマ向けの数学の本というのは、例えばホームページの作り方とか、ワードの使い方のようには簡単には書けないので、あまりライバルがいないのかもしれません。
だから、ニーズの少ない小さな市場でも、読者が興味を持てば、それぞれの本は結構売れるのかもしれません。
![]()
![]()
![]()
![]()
![]()
![]()
『コンピュータゲームの数学』
『コンピュータゲームの数学 ― それでも数学が苦手な開発者のために』という本を買いました。
この本は、前半が、座標、ベクトル、行列といった3DCGで必要になる数学の解説、後半が、運動計算、衝突、追跡といった実際に3Dゲームを開発するときに必要となる具体的な数学的トピックスからなっています。
前半のベクトルや行列といった数学の解説は、副題にもあるように、数学の苦手な人でも分かるように、高校程度の数学の復習から入って、3DCGの基本的なプログラミングで必要になる数学を、数式を交えて解説しています。数式は、数学の苦手な人でも分かるような各座標ごとの具体的な式になっています。
また、後半は、ソースコードでの解説が中心です。前半と後半の間にプログラムの前提として、ベクトルやポリゴンを表す構造体の解説と、法線ベクトルの計算などの基本的なソースコードの解説があります。後半のソースコードはそれを踏まえてのソースコードとなります。ソースコードは、残念ながら、C++ではなく、C言語です。これも、初心者向けとしてはいいのかもしれません。
全体的な印象としては、初心者向けによくまとまっていると思います。特に、後半は図なども入れながら、分かりやすく書かれているため、初心者には結構お勧めかもしれません。取っ掛かりに読む本としてはいいのではないかと思います。ただし、トピックスも限られていますし、数学の得意な人には物足りなく感じるかもしれません。
ちなみに、値段は2,200円+消費税、CD-ROMなどの付録はありません。
『コンピュータゲームの数学 ― それでも数学が苦手な開発者のために』(山北 篤、新紀元社)
![]()
![]()
数学の本を楽しむ
いつも、数冊の本を持ち歩いて、通勤時などに気分で読み分けているのですが、今、その中に、簡単な数学の本があります。
『4次元以上の空間が見える』という本です。
題名の通り、4次元以上の空間を見れるようになろうという本です。
悪者に捕まり、倉庫の中に閉じ込められてしまった人が、タイムマシンを使って倉庫の外に出て、悪者の前に姿を現すことができるかという、簡単なクイズから始まり、そうしたことを、簡単な数式を交えながら説明していきます。
そして、私たちが、日常で、1次元、2次元、3次元の世界を見ているように、4次元以上の多次元の世界も数式を助けに想像して見てしまおうという本です。
とても、質素で、シンプルな本ですが、結構面白いです。
こうした数学の本などを読んでいると、まるでお勉強をしているように思われてしまいそうですが、お勉強の本とはまったく違い、純粋に数学を楽しむための本です。
数式なども、誰でもわかるように、簡単に書かれています。
実をいうと、私は、大学時代、4年生を2回やっています。
その1回目の4年生のときに、勉強をしていたのが、位相幾何学という分野でした。
数学科ではなく、情報関係の学科だったのですが、へそ曲がりな私は、数学の研究室に入りました。
しかし、結局、卒論も書けず、必要な単位も取れなかったので、1回では卒業できませんでした。
社会に出る不安や迷いもたくさんありました。それも、1回で卒業できなかった理由の1つでした。
今思えば、本当にたいしたことではないことに、本当に真剣で悩みました。
恥ずかしい話ですが、若かったので仕方がないかもしれません。
結局、2回目の4年生では、もう少し、簡単そうで、実社会でも役に立ちそうな統計学を勉強しました。
そして、とりあえず、仕事も決めて、えいやっ!という感じで社会に出ました。
そんな昔も思い出し、懐かしく思いながら、この本を楽しく読んでいます。
今は、卒論を書く必要も、難しい論文を読む必要もありません。
純粋に、4次元以上の世界を楽しんでいます。
うーん、でも、またチャンスがあれば挑戦してみたいですね。
位相幾何学…
『4次元以上の空間が見える』(小笠英志著、ペレ出版)
![]()
![]()
『Windowsゲームプログラミング』
仕事や学校の勉強でWindowsのグラフィックスプログラミングが必要になった人や、これからWindowsのグラフィックスプログラミングを学びたい人、学ぶ必要のある人にお勧めの本があります。
『Windowsゲームプログラミング』がお勧めです。
なぜかというと、理由は3つあります。
1つ目は、この本はゲームプログラミングというよりは、Win32APIとC言語を使ったWindowsのグラフィックスプログラミングを詳しく解説した本だからです。直線のような簡単な図形から、ポリラインやポリゴンのような複雑な図形まで描けるように、詳しく、分かりやすく解説されています。
2つ目は、作者の赤坂玲音さんが、信頼できるプログラミング書籍の作家で、アマゾンなどでのレビューでも高い評価を得ているからです。赤坂玲音さんはゲーム関係のプログラミング書籍を多数出されています。学生時代にプログラミングコンテストでも受賞した経験があり、技術的にも信頼できる人です。
3つ目は、2つ目の理由と重なりますが、全体に文章がとても分かりやすいからです。また、技術的なことも詳しく、大切なことをしっかりとおさえて理解しやすく書いています。例えば、ペンやブラシといったWindowsのグラフィックスプログラミングで必要となるオブジェクトの削除のタイミングもきちんと解説しています。また、ハンドルとはそもそも何なのかということもコラムを読むとちゃんと分かります。
ただし、ゲームの作り方そのものについては、あまり詳しくは、解説されていません。この本で取り上げた内容で書かれたことが、ゲームのどういうところで活きてくるのかはわかりますが、具体例はあまりありません。また、3Dグラフィックスについての解説はありません。
ゲームを作りたいという人は、この本で学んだ内容をもとに、他の本を読む必要があるでしょう。
この本をお勧めできるのは、ずばり、ゲームでも、ビジネスソフトでも、Windowsのグラフィックスプログラミングが必要だという人です。
![]()
![]()
神田三省堂で『OpenGLプログラミングガイド』を買いました
今日は、久しぶりに神田三省堂に行ってきました。
お目当ては、『OpenGLプログラミングガイド 原著第5版』。
最初、秋葉原のラオックスあたりで買おうと思ったのですが、久しぶりに、神田神保町に行ってみたくなり、三省堂で買うことにしました。
実は、神田神保町のあたりが大好きで、できることなら、将来住みたいと思っているくらいです。
今の収入と、フリーエンジニアの不安定さでは、ちょっと難しいところがあります。
でも、本気で探せば、今の収入でも住めるようなお手ごろ賃貸物件があるのかもしれませんが…
その場合は、かなり頑張って働いて、かなり節約もしないと厳しいとは思います。
さて、でも、それは将来の夢で、今日の目的は、神田三省堂で本を買うこと。
久しぶりに行った三省堂、なんか雰囲気が少し変わっていました。
何となく高級な感じになっていました。
目的の理工学書売り場に直行したのですが、売り場の配置も変わっていました。
営業時間も長くなったみたいです。
本当に久しぶりだったので…
お目当ての、『OpenGLプログラミングガイド 原著第5版』ですが、もちろんちゃんと売っていました。
中に少し目を通して、エイやで買いました。
こんなに高い本を買うのは、本当に久しぶりです。
しっかり、領収書もらいました。
一応、フリーエンジニアなので…
もう一つのお目当ては、洋書売り場で、洋書のコンピュータ書籍を物色すること。
売り場はそれほど大きくないですが、ちゃんといい本がそろっていて、中も目を通せるのがいいところ。
『OpenGL Superbible: Comprehensive Tutorial and Reference (OpenGL)』と『OpenGL Distilled』がかなり魅力的でした。
『OpenGL Superbible』は相変わらず、圧倒的なボリューム感と詳しさが魅力です。意外に安そうだったので、ちょっと迷いましたが、そう何冊も高い本を買うわけには行かないので、今日はちょっと我慢しました。
さて、もう1冊の『OpenGL Distilled』。
この本は、今日、初めて知ったのですが、なかなかよさそうな本でした。
コンパクトにOpenGLの機能をまとめていますし、ちゃんと各プラットフォームでのOpenGLの使い方にも触れられています。
ただ、ページ数の割りに高かったので、三省堂では、とりあえず我慢して、家に帰ってからアマゾンで買いました。
三省堂より、少しだけ安かったです。
もう少し、安かったら、本当に優れものの本だと思います。
洋書売り場で、なかなか面白そうな本を見つけました。
マグロウヒル・バイリンガルブック・ビジネスシリーズというもので、日経などから出ている、MBAシリーズみたいな本と同じような、ビジネスマン向けの書籍です。
見開き2ページの左が英語、右がその日本語訳になっています。
これなら、英語があまり得意でない人にもとっつきやすいし、仕事にも役立ちます。
いろいろな内容のものが出ていましたが、私は、『Getting Organized at Work(賢い仕事の「段取り力」)』というのを買いました。
英語も、内容も入門レベルです。
通勤途中に、趣味と実益を兼ねて、気軽に読んでもよさそうです。
本を買って、洋書の物色もしたあとは、神保町で外を眺めたり、買った本に目を通したりして、のんびりコーヒーを飲んでから帰ってきました。
さて、神田神保町に住めるのはいつのことやら…
『OpenGLプログラミングガイド 原著第5版』
![]()
![]()
『OpenGL Superbible: Comprehensive Tutorial and Reference (OpenGL)』
『OpenGL Distilled』
『Getting Organized at Work』
『基礎からわかる画像処理』
ちょっと前まで、『猫でもわかるC#プログラミング (猫でもわかるプログラミングシリーズ)』という本を読んでいましたが、それと平行して『基礎からわかる画像処理―画像処理のアルゴリズムを理解する 基礎ボケ画像ボケ補正画像逆光補正画像パノラマ画 (I/O BOOKS)』という本も読んでいました。
画像処理関係のプログラム開発の仕事がしたいというのが、その理由です。もちろん、3次元CGを使ったプログラムの開発が一番やりたいのですが、画像処理も、いろいろ応用すると面白そうなので、試しに、基礎的なことを勉強してみました。
今までも、画像処理関係の技術をまとめた本を読んだことがあるのですが、いつも、途中で挫折していました。
しかし、今回は、無事読み終わりました。
『基礎からわかる画像処理』は、本当に画像処理の基礎的なことしか書いてありませんが、様々な手法が、C#のサンプルコード付きで、コンパクトにまとめてあります。
まずは、基礎から勉強してみたいという方にはぴったりの本なのではないかと思います。
分量はそれほど多くないため、頑張れば、1日1章くらい読めてしまいます。
最近勉強したC#の実践的な使い方の勉強にもなり、とても参考になりました。
今度は、JPEGフォーマットを詳しく解説した本でも読んでみようかと思っています。
『基礎からわかる画像処理―画像処理のアルゴリズムを理解する 基礎ボケ画像ボケ補正画像逆光補正画像パノラマ画 (I/O BOOKS)』(工学社、田中 成典監修、西田 義人、吉村 智史編纂)
![]()
![]()
『DirectX9 DirectX Graphics』
やはり、できれば、3Dグラフィックス関係のプログラミングの仕事がしたいというのことあり、いろいろと勉強しています。最近は、新しい技術としてDirectXの勉強を始めました。
『DirectX9 DirectX Graphics (I・O BOOKS)』という本を読んでいます。
思っていた以上にわかりやすく、重宝しています。
この本には、DirectX Graphicsの関数などの解説が、詳しく、わかりやすく書かれています。
DirectXの関数は引数が多く、きめの細かい設定ができるのですが、その反面、そこがDirectXの難しさという気もします。
設定の仕方によってはエラーになる場合もあります。また、デフォルト値を設定すればいいところも結構あります。
そういった、細かい部分の情報ももらさず、この本では解説されています。
痒いところに手が届くような内容の本だと思います。
書いた人が、読者がどこでつまずきそうか、よく知っていて書いているという感じがします。
ただ、この本、一見、それほど分量がないように見えますが、結構読み応えがあります。
最初、慣れるまでは、なかなか読んでも進まないかもしれません。
それなりの覚悟が必要かもしれません。
DirectXは決して簡単ではないということでしょうか。
他の本でも、これは同じだと思います。
この本の作者は、この本を発行している工学社の、編集部の方のようです。
一日中、CG関係の本を書いたりできるなんて、ちょっとうらやましい気もします。
こんなことを書いたら、ちょっと失礼かもしれませんが…
『DirectX9 DirectX Graphics (I・O BOOKS)』(NRTTKR著、工学社)
『GLUTによるOpenGL入門2 テクスチャマッピング』
本は10冊同時に読めという内容の本を見かけましたが、自分もDirectXの本や自己啓発書と平行して、この本を読んでいます。
この本は、まるまる1冊、OpenGLのテクスチャマッピングの技術を扱った、他に類書のないCG技術の本です。
テクスチャマッピングの解説は、さっと済ませて、テクスチャ行列の使い方や、スフィアマッピングやキューブマッピングといった環境マッピングや、テクスチャマッピングを応用した様々なエフェクト技術を、その数学的な意味とあわせて、詳しく扱っています。
さらには、GLSL(OpenGL Shading Lanuage)の解説も行っています。
このように、この本は、テクスチャマッピングを中心に、いろいろなエフェクト技術を詳しく扱っていますが、かなり深い内容なので、正直言うと、少し難しいと感じます。
ちゃんと理解するには、数学的なロジックも追って読んでいかないといけません。
どちらかというと、中級者、上級者向けで、OpenGLの基本をある程度理解した人向けです。
OpenGLの基本を理解したい人には、同じ著者の前作、『GLUTによるOpenGL入門―「OpenGL Utility Toolkit」で簡単3Dプログラミング! (I・O BOOKS)』の方をお勧めします。
また、画像ファイルの読み込みなどは、著者お得意の手抜きでさっと済まされているため、これについては、他の書籍やネット上の情報を参考にしなければならないと思います。
私は、正直言うと、テクスチャマッピングは今ひとつ苦手で、その価値も軽く見ていましたが、この本を読み始めて、その奥の深さや、できることの範囲の広さ、面白さを知ることができるようになりました。
是非、この本を読んで、理解してしまおうと思っています。
この本は、CGを学んでいる人、仕事で使っている人には、一読の価値のある、優れものだと思います。
『GLUTによるOpenGL入門2 テクスチャマッピング [CD-ROM付]』(床井 浩平 著、工学社)
![]()
![]()
『DirectX9 DirectX Graphics』その後
ブログのアップはサボっていますが、DirectX9の本、『DirectX9 DirectX Graphics (I・O BOOKS)』は読み続けています。
今日、サンプルフレームワークのところを読み終わるところで、3次元の数学の章は先に読んでしまったので、大体半分が読み終わったことになります。
章の内容の、得意、不得意にもよりますが、大体、1日30分くらい、この本を読むのに使って、1週間に1章は読み終わることができます。
本の内容は、今まで読んだ内容では、DirectX Graphicsの初期化、2Dグラフィックス、サンプルフレームワーク、3Dグラフィックスの数学などについて、主に、DirectX Graphicsやサンプルフレームワークの関数の解説が中心に書かれています。
そして、関数の使い方を示す簡潔で短いサンプルコード、関数を使う上での注意事項が書かれています。全体のサンプルコードは、付属CD-ROMに譲るという形になっています。
こちらも、解説した技術だけを使ったものにしぼられているようなので、余計なコードに惑わされることはなさそうです。
これから、いよいよ、3Dグラフィックスの解説に入っていきます。とても、楽しみにしています。
是非、これから、DirectX9、特に、DirectX Graphicsを勉強してみたいという人は、読んでみてください。なかなかお勧めです。
『DirectX9 DirectX Graphics (I・O BOOKS)』(NRTTKR著、工学社)