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

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

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

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

  • 口絵
ジャンル
発行予定日
2026/03/下旬
判型
A5
ページ数
236ページ
ISBN
978-4-339-01382-5
Unityによる3DCGプログラミング - 基本原理と実践 -
近刊出来次第出荷
発行出来次第どこよりも早くお届けいたします。予約受付中。

定価

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

カートに入れる

購入案内

  • 内容紹介
  • まえがき
  • 目次
  • 著者紹介

【書籍の特徴】
書籍にはUnityを利用したプログラム例を豊富に掲載し,専用のWebページには実際のコードを公開するGithubへのリンクのほか,カラー図版や章末問題も掲載した。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 まとめ 

引用・参考文献
索引

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

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

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

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

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

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

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

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