Unityによる3DCGプログラミング - 基本原理と実践 -

メディアテクノロジーシリーズ 12

Unityによる3DCGプログラミング - 基本原理と実践 -

CGの基本を理解し,Unityを通してアイデアを実装できるコーディング力を養う1冊

  • 口絵
ジャンル
発行年月日
2026/03/31
判型
A5
ページ数
236ページ
ISBN
978-4-339-01382-5
Unityによる3DCGプログラミング - 基本原理と実践 -
在庫あり
2営業日以内に出荷致します。

定価

3,960(本体3,600円+税)

カートに入れる

購入案内

  • 内容紹介
  • まえがき
  • 目次
  • レビュー
  • 著者紹介
  • 広告掲載情報

【書籍の特徴】
書籍にはUnityを利用したプログラム例を豊富に掲載し,下記Github上では,実際のコード,書籍内容の理解を深めるための難易度付きの演習問題と解答を公開した。
https://github.com/MediaTech-Unity3DCG/MediaTech-Unity3DCG
また,本webページ上には,関連資料として,口絵に掲載できなかったカラー図版や書籍内URLのリンク集を掲載している。
2章から5章の内容を順にこなしていけば3DCGの実際を体験でき,理論と実装を結び付けながら学ぶことができる。

【各章について】
1章では,コンピュータグラフィックスの基本となるレンダリングパイプラインとその構成要素を学び,レンダリングパイプライン全体の仕組みが把握できるよう解説する。他章に比べやや抽象度が高いが,残りの章の位置付けや相互の関係を俯瞰するためにも飛ばさずに読んでほしい。
2章では,メッシュを生成する方法を紹介する。まず3次元空間でポリゴンを扱うために必要な数学の基礎を簡単に説明した後,正方形メッシュの作り方を通じて基本的なメッシュの扱い方を紹介し,さらに具体的なモデル生成例を通じて,さまざまなモデルを作るために必要な要素を挙げていく。
3章では,まずメッシュデータをある視点から見た景色に変換するための行列の意味とその導出について学び,メッシュデータを画像に投影する過程への理解を深める。その後,3DCGにおけるカメラの特性を応用して,歪んだ画像を生成するカメラを配置し,特定の視点からのみ正投影に見える画像を作る。
4章では,マテリアルを通じて任意の材質を表現する方法について理解することを目的として,まずは一般的なマテリアルの基礎的な概念を示し,Unityにおけるマテリアルを概説する。その後,マテリアルを記述するうえで重要なシェーディングモデルを紹介するとともに,Unityにおける実装方法について学ぶ。さらに複雑なマテリアルを効率的に描画するための高速化手法を学ぶ。
5章では,ライティングとシャドウイングの基礎から応用までを体系的に学ぶ。まず,点光源,スポット光源,平行光源,面光源の特性を学び,それらのライティング計算式を導出する。その後,Unityを用いた実装方法を学び,シャドウマップの原理と実装,さらにレイトレーシングによる面光源ライティングを学ぶ。
6章では,Compute Shaderの基本的な使い方について学ぶ。また,GPUアーキテクチャをひもとくことで,Compute Shaderを記述する際に必要となる各種宣言がもつ意味についても理解を深める。最後に,粒子ベースの2次元流体シミュレーションへの応用例を学ぶ。

【編者からのメッセージ】
読者の方々が本書で得た知識と技術を活用し,より高度な3DCGの実装や新たな表現の創出に挑戦されることを期待する。

Unityは,ゲームなどのインタラクティブなコンテンツ制作に向けて利用普及が急速に進んでいる,3次元コンピュータグラフィックス(3DCG)による統合開発環境の一つです。スクリプトを記述するにはC#のプログラミングスキルを前提としますが,高品質でリアルタイムな描画の仕方が学びやすい環境として知られています。また,マルチプラットフォームに対応し,豊富なアセットが用意され,各種のVR/ARデバイス向けの開発サポートも充実しています。

本書は,慶應義塾大学理工学部情報工学科の藤代研究室で,2023年度から卒業研究に配属された学部4年生に対して,春学期(前期)に集中的に実施してきたUnityプログラミングゼミの内容に基づいています。講師は研究室に所属する大学院生たちで,各自が自身の研究を進める間に培ってきた3DCGプログラミングのコツをより広い読者層に伝授するために,そのゼミ資料を発展させ,本書を執筆しました。

実際,なにかCG研究のアイディアを思いついたとき,それが本当に実現可能かどうかを確かめるには,独自のプログラムを即座に組めなければなりません。そのためにはCGの基本的な仕組みを理解し,実装してみる最低限のコーディング力が必要となります。すでに,3DCGの理論書やプログラミング言語・アプリの指南書は多数出版されていますが,両者をブリッジし,今風のスタイルでコードを開発して自身の方針の良否を検証できるようになるためのコンパクトなコンパニオンはなかなか見つかりません。それが本書を出版した狙いです。本書はUnityをターゲットとしていますが,環境が替わっても3DCGの基本原理は共通するものと信じて執筆されています。

メディアテクノロジーシリーズとメディア学大系には,すでに7冊のCGに関連する書籍が出版され,今後も拡充される計画です。本書は,つぎの図に示すように,両シリーズの既刊書を補間する役割を担っているといえます。





本書は以下のように全6章から構成され,3DCGの基本であるモデリングからレンダリングまでをひととおり網羅しています。

1章 レンダリングパイプライン(青山)
2章 ポリゴンメッシュ(石飛)
3章 カメラ(徳永)
4章 マテリアル(杉田)
5章 ライティング(杉田)
6章 GPGPU(青山)

1章はモデリングからレンダリングまでの全体の処理の流れパイプラインについて説明しています。他章に比べやや抽象度が高いのですが,残りの章の位置付けや相互の関係を俯瞰するためにも飛ばさずに読んでほしいと思います。次章以降には,Unityを利用したプログラム例が豊富に掲載されています。2章から5章の内容を順にこなしていけば,3DCGの実際を体験できるはずです。さらに6章では,GPUの高速化機能をより幅広い関連処理に利活用するGUGPUの概念を紹介し,パーティクルを用いた流体のビジュアルシミュレーションを題材に適用事例が掲載されています。

なお,コロナ社の専用ページには,口絵に掲載しきれなかったカラー図版や演習問題(難易度付,正答あり)が掲載されています。本書に掲載されたプログラムは,Unity Version6.2を前提として開発され,Windows上での動作を確認しています。上記の専用ページには,実際のコードを公開するGithubへのリンクも掲載されており,読者がUnityプログラミングを自習する際の便宜を図っています。

最後に,本書を出版する契機を作ってくださった,メディアテクノロジーシリーズ編集委員長の近藤邦雄先生ならびに同シリーズ幹事の伊藤貴之先生に深謝いたします。また,原稿のとりまとめが予定よりも大幅に遅れたにもかかわらず,辛抱強く編集作業をご担当いただいたコロナ社の関係各位にも心からの謝意を伝えたいと思います。

本書が,読者の皆さんの3DCGプログラミングの入門に少しでも役立てば,編者としては望外の喜びです。

2026年2月
編者 藤代一成

1.レンダリングパイプライン
1.1 レンダリングパイプラインと本書の構成 
1.2 モデルデータ 
 1.2.1 サーフェスモデル 
 1.2.2 ソリッドモデル 
1.3 トポロジー 
 1.3.1 プリミティブ 
 1.3.2 頂点インデックスバッファ 
 1.3.3 プリミティブとトポロジー 
1.4 レンダリング 
 1.4.1 パイプライン 
 1.4.2 ティアリング 
 1.4.3 垂直同期 
 1.4.4 ダブルバッファリング 
1.5 レンダリングキュー 
 1.5.1 レンダーキュー 
 1.5.2 デプスソート 
 1.5.3 デプスバッファ 
 1.5.4 不透明メッシュ 
 1.5.5 半透明メッシュ 
 1.5.6 アルファブレンド 
1.6 まとめ 

2.ポリゴンメッシュ
2.1 3次元空間に関する数学的基礎 
 2.1.1 直交座標系 
 2.1.2 面の方向 
2.2 メッシュの基本的な生成方法 
 2.2.1 Meshクラス 
コラム:レンダリングパイプラインと描画命令
 2.2.2 ジオメトリ情報の設定 
 2.2.3 トポロジー情報の設定 
 2.2.4 メッシュの描画 
 2.2.5 属性情報の設定 
2.3 ループ処理の利用 
 2.3.1 ジオメトリ情報の設定 
 2.3.2 トポロジー情報の設定 
 2.3.3 属性情報の設定 
 2.3.4 頂点移動による変形 
2.4 折れ曲がった面の表現 
 2.4.1 上面・底面の作成 
 2.4.2 側面の作成 
 2.4.3 法線の設定 
2.5 再帰処理の利用 
 2.5.1 L-System 
 2.5.2 再帰処理 
 2.5.3 タートルの定義 
 2.5.4 線による枝の描画 
 2.5.5 メッシュによる枝の描画 
2.6 まとめ 

3.カメラ
3.1 実世界のカメラ 
 3.1.1 ピンホールカメラ 
 3.1.2 レンズカメラ 
 3.1.3 投影手法 
3.2 座標変換の基礎 
 3.2.1 同次座標系 
 3.2.2 アフィン変換 
3.3 座標系の必要性 
 3.3.1 カメラの役割 
 3.3.2 座標変換の流れ 
3.4 各座標系の意味 
 3.4.1 ローカル座標系 
 3.4.2 ワールド座標系 
 3.4.3 ビュー座標系 
 3.4.4 クリップ座標系・NDC系 
3.5 座標変換と行列 
 3.5.1 ローカル座標系からワールド座標系への変換 
コラム:モデル行列の見方
 3.5.2 ワールド座標系からビュー座標系への変換 
 3.5.3 ビュー座標系からクリップ座標系・NDC系への変換 
コラム:NDC系?NDC座標系?
 3.5.4 投影行列の導出 
3.6 カメラ行列の編集と応用:立体映像 
 3.6.1 RenderTexture 
 3.6.2 アナモルフォーシス 
 3.6.3 投影行列の操作 
 3.6.4 立体的に見える画像の生成 
 3.6.5 立体的に見える映像の生成 
3.7 まとめ 

4.マテリアル
4.1 マテリアルの基本的な概念 
 4.1.1 属性 
 4.1.2 シェーディングモデル 
4.2 Unityのマテリアル 
 4.2.1 シェーダ 
 4.2.2 プロパティ 
 4.2.3 レンダリングパス 
コラム:CGPROGRAMとHLSLPROGRAMの違い
4.3 代表的なシェーディングモデルと実装 
 4.3.1 基本コードの作成 
コラム:Unityの標準シェーダライブラリ
 4.3.2 完全鏡面 
 4.3.3 拡散反射 
コラム:接空間の連続性
 4.3.4 フォン反射 
 4.3.5 GGX(Ground Glass Unknown) 
4.4 マテリアルの効率的な描画手法 
 4.4.1 プレフィルタリング 
 4.4.2 拡散反射におけるプレフィルタリング 
 4.4.3 GGXにおけるプレフィルタリング 
4.5 まとめ 

5.ライティング
5.1 光源の種類と特性 
 5.1.1 光源の分類 
 5.1.2 光源の照明特性 
5.2 照明計算の理論的取扱い 
 5.2.1 点光源 
 5.2.2 平行光源 
 5.2.3 スポット光源 
5.3 基本的なライティング手法の実装 
 5.3.1 ライティング計算の基本コード 
 5.3.2 平行光源のライティング 
 5.3.3 点光源のライティング 
 5.3.4 スポット光源のライティング 
5.4 シャドウイング 
 5.4.1 シャドウイングとは 
 5.4.2 カメラと光源の双対性 
 5.4.3 シャドウマッピング 
 5.4.4 シャドウマッピングの実装 
5.5 レイトレーシングによる面光源ライティング 
 5.5.1 面光源における照明計算 
 5.5.2 レイトレーシングの基礎知識 
 5.5.3 Unityにおけるレイトレーシング 
 5.5.4 レイトレーシングによる面光源ライティングの実装 
コラム:GPUレイトレーシングの歴史
5.6 まとめ 

6.GPGPU
6.1 本章の前提 
6.2 スレッドとワープ 
6.3 Compute Shaderの使い方 
 6.3.1 Compute Shaderの書き方 
 6.3.2 Compute Shaderの実行 
 6.3.3 サンプルコードの実行 
6.4 GPUアーキテクチャ 
 6.4.1 GPCとTPC 
 6.4.2 SM 
 6.4.3 メモリ構造 
6.5 排他制御 
 6.5.1 基本概念 
 6.5.2 アトミック操作 
 6.5.3 GPUのアトミック操作 
 6.5.4 Shared Memory 
6.6 コマンドバッファ 
6.7 2D流体シミュレーションへの応用 
 6.7.1 流体シミュレーション 
 6.7.2 Compute Shader 
 6.7.3 C#による制御 
 6.7.4 計算結果の描画 
 6.7.5 結果 
6.8 まとめ 

引用・参考文献
索引

読者モニターレビュー【 MasaTam 様(業界・専門分野:Robotics/AI/Software Engineering)】

Unityで3DCGプログラミングということで、大学院時代のOpenGLでのCGとShaderの授業を思い出しながら楽しんで読みました。Unityですが、単純にゲームのCGと言うよりは、その名の通り、CGがどう作られてるか、また、レンダリングパイプラインに始まり、モデルのメッシュ、カメラやライティングの技法などをUnityというツールを使い面倒な部分のアシストを使いながら基礎から実践まで学べるような一冊です。最後まで読むとGPUを用いて流体のシミュレーションなど粒子の流れを高速で操るようなプログラムまで学べます。この本を理解すれば、3DCGをより深く柔軟に使えるようになると思います。

読者モニターレビュー【 Mizu 様(業界・専門分野:組み込み)】

本書はポリゴンの基礎からレイトレーシング、シェーディングまでを
実コードと併せて解説する入門書となっている。

実行環境にはUnityを用いており、プラットフォーム依存の下回りなどの複雑な部分は隠しつつ、3DCGの基礎はコード・数式で理解できるように工夫されている。

個人的に面白かった部分をいくつか挙げたい。
まず4章のシェーディングでは物理ベースレンダリングのひとつGGXが取り上げられている。
GGXの式を完全に理解することは原論文などを参照する必要があるが、実際の結果を見ることでその有用性を認識することができると思う。

また6章ではGPGPUの基礎が丁寧に解説されており、最後に流体シミュレーションとしてSPHが挙げられている。
この方法はPS5の『アストロボット』にも使用されており、本書の内容が机上のものだけでないことが分かる。

上記以外にも、様々な事項がコード・数式で説明されており、理論と実装の隙間を埋めるのに最適である。
本書単体での使用、理論を深く解説した書籍と併せた使用、両方をお勧めできる良き書籍だと、自信をもって推薦できる。

読者モニターレビュー【 いたち 様(業界・専門分野:評価装置メーカー)】

本書籍は分かりやすく3DCGと2次元間の処理が学べると思います。
内容として、Unityでの処理に対して、各章で分けながら、ひとつずつ解説してくれるため、私のような画像処理系初心者の方でも安心して読める1冊だと思います。
これから学ぶ方や、専攻となる方におすすめの1冊です。
教科書のようなものですと、解説がある程度省かれて分かりづらかったりするのですが、本書籍では多彩なイラスト付きで一つ一つ説明しているため、読者に対してだいぶ考慮してくれた1冊だと思います。

読者モニターレビュー【 松岡 大輔 様(業界・専門分野:プログラマー)】

本書の特徴は、コンピュータグラフィックスの基本となるレンダリングパイプラインを大胆に4つのフェーズに分けた点にある。レンダリングとは「3次元空間に存在する物体を2次元画像へと変換する処理」(p.1)である。そのプロセスは複数の処理からなり、それらの処理を整理する観点として、理論的なものと実装的なものが考えられる。

本書は理論と実装の橋渡しとしての位置づけを自認しており、そのため、旧来の教科書的な理論的整理とはやや異なるレンダリングパイプラインを構成している。そして、それによって、レンダリングパイプラインの各フェーズがUnityの主要なクラスに明確に対応付けられている。Unityはコンポーネントシステムによってコンポーネントごとの独立性を保ちながら、保守性の高いソース管理ができる点にも特徴があるので、このようにレンダリングパイプラインをUnityのクラスと対応させる形で整理することで、実装の分業やファイル構成が明確化できるというメリットがある。

本書は基礎となる数理をある程度解説してから、その後はレンダリングパイプラインの各フェーズと対応するUnityのクラスを活用した具体的なソースコード例を用いて理論のリアライゼーションを試みる。いわば理論と実装の両面からの説明を試みているわけである。

このような書籍の構成によって、まず読者は、コンピュータグラフィックスに関するレンダリングパイプラインの全体像を、Unityのクラスと対応付けながら、理論と実装の両面から理解することができる。著者はUnityという環境を超えた基本原理の共通性を信じてこの書籍を執筆している(まえがき)。

ただし、Unityという選択の妥当性については多少の留保も必要である。他のエンジンとして、UnrealEngineやGodotも検討されるはずだが、UnityはC#の習得容易性とクラス構成の透明性という2点がこの教科書の目的に対して合理的な選択である。一方で、高品質グラフィックスの理論を扱う際の上限とライセンスリスクは留保として残る。

また、上記のようなレンダリングパイプラインの構成によるデメリットもある。たとえば、一般的な理論的観点からのレンダリングパイプラインで扱われるフェーズが一部暗黙のものとされていたり、本来独立したフェーズとして扱われないものが実装との対応のために独立したフェーズとして位置づけられていたりする。だが、これらに関しては、本書一冊で学習が完結するものではないと考えて、シリーズの他の書籍などを適宜参照していくことになるのだろう。

理論と実装をつなぐ位置づけ、という明確でありながら難しい課題を、Unityのクラスとの対応関係を軸にしながら大胆かつ具体的に解説してみせた点に、本書の面白さがあるように思う。

読者モニターレビュー【 しまむら 様(業界・専門分野:画像処理プログラミング)】

3DCGの基本的な原理をUnityでコード実行して視覚的に確認できる、という本です。
Unity等の開発環境でモデリングしたものが実際に画面に表示されるまでに、裏でどのような処理が実行されているかの概要が掴めます。
特に、実務(コーディング)から入らずに、まずは3DCGの基本原理と処理のおおまかな流れを知ることから学習を始めたいという方にはおすすめの本です。
ある程度実務経験のある方にとっても、レンダリングパイプラインやGPU構造を振り返る良い機会になります。
プログラミング言語の基本的な使い方の他に、並行処理プログラミング、同次変換行列、照明計算などは別途知識として持っておきながら読むとより理解が深まると思います。

レビュー,書籍紹介・書評掲載情報一覧

藤代 一成(フジシロ イッセイ)

石飛 晶啓(イシトビ アキノリ)

杉田 俊平(スギタ シュンペイ)

徳永 恵太(トクナガ ケイタ)

青山 昂平(アオヤマ コウヘイ)

掲載日:2026/04/15

情報処理学会誌2026年5月号

掲載日:2026/04/05

日本設計工学会誌2026年4月号

掲載日:2026/04/01

電子情報通信学会誌2026年4月号

掲載日:2026/03/09

電子情報通信学会2026年総合大会プログラム

★特設サイトはこちらから★

各書籍の詳細情報や今後の刊行予定,関連書籍などがご覧いただけます。

https://www.coronasha.co.jp/mediatech/