Mobile Game Math Unity

by ryukbk
+

( Updated 20 minutes ago )

# ゲームアプリの数学 サンプルコード

本gitレポジトリーは『ゲームアプリの数学 Unityで学ぶ基礎からシェーダーまで 』(久富木 隆一 著/SBクリエイティブ 刊)のためのサンプルコードならびに著者により更新されるサポート情報を保持します。

上記書籍は、本サンプルコードへの必要十分な注釈を含んでいます。書籍を手元に置いて参照しつつ、Unityで本サンプルコードを動かしたり、あるいは自由に改変したりして、動作結果を視覚的に確認することにより、書籍の内容を直感的に理解し応用につなげることができます。

本ページと合わせ、正誤表他の情報が記載されたSBクリエイティブ社サポートページも参照ください。

動作環境

ダウンロード

最新のサンプルコードは本gitレポジトリーのmasterブランチに収録されています。

以下のいずれかの方法でサンプルコードを取得してください。

  • 本レポジトリーのメニュー内の"Download ZIP"ボタンから一括ダウンロード
  • gitクライアントでローカルPCへ本レポジトリーをclone
  • githubアカウント所持者であれば、本レポジトリーを自己レポジトリーへfork

ファイル構成

  • sampleフォルダー内にサンプルコードのUnityプロジェクトが存在し、中のAssetsフォルダーにプロジェクトを構成するファイル群が含まれます。
    • Editor: Unity Editor拡張
    • Meshes: インポート元3Dメッシュ
    • Resources: マテリアル
    • Scenes: Unityシーン
    • Scripts: C#スクリプトコンポーネント
    • Shader: GLSLシェーダープログラム

実行方法

Unityで、Unityプロジェクトとしてsampleフォルダーを開き、シーン再生ボタンを押下してください。

正誤表

書籍出版後に判明した本文中の誤記とその訂正は、SBクリエイティブ社サポートページ正誤情報に掲載しておりますので、お問い合わせ前にご確認ください。

補遺

  • 前書き
    • 代表的なDCCツールとしてAutodesk Mayaを挙げていますが、他に、無料でオープンソースの3DモデリングツールとしてBlenderが有名です。
  • 第6章
    • 単位クォータニオンの逆数を与えて回転すると、元のクォータニオンによる回転の逆回転となります。サンプルコード中のQuaternion.Inverseは、引数として与えた単位クォータニオンの逆数を返します。
  • 第8章
    • TBDRのメリット/デメリットについては、同じ章で後に存在するグラフィックスパイプライン解説の読後に再度読んでみてください。
    • 遅延シェーディングは、第9章で触れているマルチパスレンダリングを行っており、Gバッファーの作成までがpass 1、Gバッファーを用いて行われる(pass 1ではあえて行わずに次のpassまで遅延された)照明計算がpass 2です。
  • 第9章
    • 4次元ベクトルを表す型vec4はx、y、z、wの4つのメンバー変数を持つ構造体であり、packednormalはビットマップの1ピクセルを表すvec4で、RGBA各チャンネルを各メンバー変数に格納しています。つまりpackednormal.wにA(アルファ)が、packednormal.yにG(緑)が入っているので、スウィズル演算子wyを使い、wとyをvec2として抜き出して展開します。
    • サンプルコードのChapter09シーンに以下2点の仕様を追加
      1. シーン再生時に光源を回転
      2. 有名な3Dモデルである、Utar teapotと、スタンフォード大学のHappy Buddhaを、Blenderにインポート。Blender上で以下改変を適用してWavefront objフォーマットでエクスポートし、Unityのシーン内に配置
        • オリジナルのマテリアルを削除
        • サブメッシュをjoin
        • メッシュ内の三角形の数が16ビットで表現できない数値(65535)以上であるとUnityでのインポート時にサブメッシュに分割されるため、Decimate ModifierでFace Countを65534以下に削減

FAQ

  • 随時更新

著者講演資料

ライセンス

本サンプルコードはCC BY-SA/Creative Commons Attribution Share Alike 4.0でライセンスされています。

著者連絡先

更新履歴

  • 2015-12-18 著者講演資料追加
  • 2015-12-18 Unity 5.3サポート(Unity 5.3.0f4)
  • 2015-12-18 Unity 5.2向けブランチ追加(Unity_5.2)(Unity 5.2.4f1)
  • 2015-09-29 補遺追加
  • 2015-09-26 補遺追加
  • 2015-09-22 補遺追加
  • 2015-09-19 初版