映像制作に役立つCG理論と物理・数学の基礎

- 著者:株式会社オー・エル・エム・デジタル 研究開発部門
曽良 洋介、Marc Salvati、四倉 達夫 - 定価:5,500円(本体5,000円+税10%)
- ISBN:978-4-86246-161-2
- サイズ:B5変形(182 x 235 mm)
- 総ページ数:384ページ
発売日:2012年03月上旬

※書店でお買い求めの際には、予め在庫をご確認ください。≫取扱い店舗
※PDF書籍に関しては書店販売を行っておりません。
祝!CEDEC AWARDS 2012 著述賞受賞
オー・エル・エム・デジタルのアーティスト向け社内講座を再編
「いかに高品質な映像を効率的につくるか」が求められる時代の人材像
テクニカルアーティストへの第1歩を踏み出してみませんか?
ありそうでどこにもなかった、CGの基礎理論と実践の間を埋めるテキストです。理論を学んだ後は、MayaやAfter Effectsを使った演習問題で知識をしっかり身につけます。
「テクニカルアーティスト」とは、CGの科学的・技術的背景を理解し、映像制作に活用できるアーティスト、あるいはアーティストとエンジニアとの間をつなぐ役割を果たす方々を指しています。本書では、テクニカルアーティストを目指すCGクリエイターに不足がちだと思われる知識や、比較的すぐに効果が出る分野を厳選し的を絞って解説しています。
学校の授業をちょっとサボってしまった方でも大丈夫です。初歩的な数学や物理の説明も含まれています。また、読むだけでなく実際にスクリプトを組み、動作を理解できるように練習課題も用意しています。練習課題を行うことで、本文の説明と実際の作業の関連性が実感できます。
ソフトウェアの裏側をほんの少し理解するだけでも、新たな可能性と表現力・アートの発想が生まれてきます。さらにそれが発展し、これまでにない映像表現へとつながれば、これほど嬉しいことはありません。この本で勉強を始めてテクニカルアーティストへの第一歩を踏み出してみませんか?
対応ソフトウェア
- Autodesk Maya 2010 以降
- After Effects CS3 以降
- Chapter 1: カメラと座標系
- Chapter 2: プロシージャ
- Chapter 3: カラーモデル
- Chapter 4: シャドウとローカルシェーディング
- Chapter 5: テクスチャ
- Chapter 6: パーティクル
- Chapter 7: NURBS
- Chapter 8: イメージ/ムービーフォーマット
Chapter 1 カメラと座標系
- 1.1 カメラ
- 1.1.1 カメラの構造
- 1.1.2 CGのカメラの仕組み・特徴
- 1.1.3 カメラパラメータの画像への影響
- 1.2 座標系
- 1.2.1 座標系とは
- 1.2.2 さまざまな座標系
- 1.2.3 右手系と左手系
- 1.2.4 座標系の階層関係
- 1.2.5 CGで使われるさまざまな座標系
- 1.3 まとめ
■練習課題
- 課題1 カメラの画角ぴったりのプレーン
- 課題2 モーションブラーの制御
- 課題3 座標系の変換
- 課題4 ニア/ファークリッピングプレーン
Chapter 2 プロシージャ
- 2.1 プロシージャ
- 2.2 関数
- 2.2.1 関数って役に立つの? 導関数とは?
- 2.2.2 関数とは?
- 2.2.3 逆関数とは?
- 2.2.4 関数の形
- 2.2.5 簡単な関数で勉強: 直線
- 2.2.6 関数の例
- 2.2.7 ベクトルとポイント
- 2.2.8 ちょっとしたパーティクルの制御の例
- 2.3 2D/3Dの入力と出力
- 2.3.1 ハイトフィールド(入力: 2D、出力: 1D)
- 2.3.2 密度(入力: 3D、出力: 1D)
- 2.3.3 出力の次元が上がると?
- 2.4 もう少し複雑な関数
- 2.4.1 ランダム関数とノイズ関数
- 2.4.2 フラクタル
- 2.4.3 L-System
- 2.5 プロシージャルテクスチャ
- 2.5.1 普通のテクスチャと何が違うの?
- 2.5.2 プロシージャルテクスチャの長所と短所
- 2.6 プロシージャルシェーディング
- 2.6.1 Mayaのプロシージャルシェーダ
- 2.6.2 RenderManのプロシージャルシェーダ
- 2.7 まとめ
■練習課題
- 課題1 パーティクルの制御(Maya)
- 課題2 パーティクルの制御(After Effects)
- 課題3 ランダムとノイズの違い(Maya)
- 課題4 地面に沿ってオブジェクトを動かす(Maya)
- 課題5 ヒルベルトの曲線
- 課題6 フラクタルの練習
- 課題7 L-System
- 課題8 簡単なトゥーンシェーダの作成(Maya)
- 課題9 RenderManで簡単なトゥーンシェーダを作ってみましょう
Chapter 3 カラーモデル
- 3.1 カラーモデル
- 3.1.1 人間は色をどうやって見ているの?
- 3.1.2 色の単位・基準
- 3.1.3 色空間とRGB・CMYカラーモデル
- 3.1.4 表色系とは
- 3.2 カラーマネジメント
- 3.2.1 RGB 色空間の規格
- 3.2.2 白色とは? 白色点と色温度
- 3.2.5 ハイダイナミックレンジ(HDR)
- 3.3 まとめ
■練習課題
- 課題1 HDRの作成
Chapter 4 シャドウとローカルシェーディング
- 4.1 ローカルシェーディング
- 4.1.1 良いシェーディングのためには
- 4.2 ライト
- 4.2.1 ライトの種類と特徴
- 4.2.2 CGのライト特有の性質
- 4.3 物理とローカルシェーディング
- 4.3.1 実世界における現象
- 4.3.2 シェーディングモデルの基本
- 4.4 よく使われているローカルシェーディングモデル
- 4.4.1 アンビエント/環境光成分とその反射モデル
- 4.4.2 ディフューズ/拡散反射成分とその計算モデル
- 4.4.3 スペキュラー/鏡面反射成分とその計算モデル
- 4.5 影
- 4.5.1 影の種類
- 4.5.2 影の作成手法
- 4.5.3 Mayaのシャドウのパラメータ: デプスマップ、レイトレースに共通
- 4.5.4 Mayaのシャドウのパラメータ: デプスマップシャドウに特有
- 4.5.5 Mayaのシャドウのパラメータ: レイトレースシャドウに特有
- 4.5.6 アンビエントオクルージョン
- 4.6 まとめ
■練習課題
- 課題1 Blinn、Phong、異方性シェーダの共通点と相違点
- 課題2 スペキュラーだけライトに反応するマテリアルの作成
- 課題3 ランプシェーダと同じようなトゥーンシェーダの作成
- 課題4 Oren-Nayar(っぽい)シェーダの作成
- 課題5 白い影の作成
Chapter 5 テクスチャ
- 5.1 テクスチャリングとは
- 5.1.1 2Dテクスチャ
- 5.1.2 3Dテクスチャ
- 5.2 マッピング
- 5.2.1 UVで2Dテクスチャマッピング
- 5.2.2 プロシージャルUVで2Dテクスチャマッピング
- 5.2.3 投影で2Dテクスチャマッピング
- 5.2.4 3Dテクスチャマッピング
- 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.4.5 バンプマップ
- 5.4.6 法線(ノーマル)マップ
- 5.4.7 デプスマップ
- 5.4.8 カスタムマップ
- 5.5 補間
- 5.6 まとめ
■練習課題
- 課題1 投影
- 課題2 環境マップ
- 課題3 法線マップ
- 課題4 プロシージャルUV
- 課題5 デプスマップシャドウのバイアス
- 課題6 ディスプレイスメントのエイリアシング
- 課題7 トゥーンシェーダの シャドウの形
Chapter 6 パーティクル
- 6.1 力学: 運動とは
- 6.1.1 速さ・時間・距離
- 6.1.2 スカラー量とベクトル量
- 6.1.3 等速直線運動と加速度、 等加速度運動
- 6.1.4 微分・積分と物理との関係
- 6.1.5 相対速度
- 6.1.6 自由落下運動・鉛直上方(下方)投射
- 6.1.7 水平投射・斜方投射
- 6.1.8 円運動
- 6.2 Maya パーティクル基礎1
- 6.2.1 パーティクルツール
- 6.2.2 パーティクルのアトリビュート
- 6.2.3 エミッタノード
- 6.2.4 パーティクルのアニメーション
- 6.3 力学: 力とは
- 6.3.1 力の合成・分解
- 6.3.2 力の単位
- 6.3.3 運動の三法則
- 6.3.4 さまざまな力
- 6.4 Maya パーティクル基礎2
- 6.4.1 フィールドノード
- 6.4.2 パーティクルによるインスタンス化
- 6.5 Mayaケーススタディ
- 6.5.1 パーティクルとランダム
- 6.5.2 パーティクルインスタンスの回転
- 6.5.3 フィールドを使ったパーティクルアニメーション
- 6.6 まとめ
■練習課題
- 課題1 オブジェクトの自由落下と斜方投射(Maya)
- 課題2 レイヤの自由落下と斜方投射(After Effects)
- 課題3 パーティクルで自由落下(Maya)
- 課題4 摩擦のシミュレーション(After Effects)
Chapter 7 NURBS
- 7.1 陽関数とパラメータ形式の関数
- 7.1.1 陽関数とその限界
- 7.1.2 パラメータ形式の関数
- 7.2 スプライン
- 7.2.1 制御点
- 7.2.2 スプラインの数式
- 7.2.3 ベジェ曲線
- 7.2.4 B –スプライン曲線
- 7.2.5 NURBS
- 7.2.6 ノット列の値: パラメトリゼーション
- 7.2.7 その他のスプライン: 補間
- 7.3 MayaにおけるNURBSカーブ
- 7.3.1 制御点
- 7.3.2 スパン
- 7.3.3 エディットポイント
- 7.3.4 次数
- 7.3.5 NURBSカーブの作成・編集
- 7.4 パラメータ曲面
- 7.4.1 NURBS 曲面
- 7.4.2 NURBSマッピング
- 7.4.3 ポリゴンとNURBSのパラメトリゼーション
- 7.4.4 NURBSのマッピングの例
- 7.5 NURBSサーフェスの作成・編集
- 7.5.1 リボルブ
- 7.5.2 ロフト
- 7.5.3 バイレイル
- 7.5.4 フィレット
- 7.5.5 リビルド
- 7.5.6 ステッチ
- 7.6 NURBSのテッセレーション
- 7.6.1 NURBSテッセレーション設定
- 7.7 NURBSワークフロー
- 7.7.1 NURBSのみ
- 7.7.2 NURBSからポリゴンとサブディビジョンメッシュへ
- 7.7.3 サブディビジョンメッシュとは
- 7.8 まとめ
■練習課題
- 課題1 ベジェ曲線を表計算ソフトを使って描いてみましょう
- 課題2 モーションパスを使ってパラメータの分布の違いを体験しましょう
- 課題3 NURBSのレンダリングパラメータを調整してみましょう
Chapter 8 イメージ/ムービーフォーマット
- 8.1 ファイルフォーマットの基礎
- 8.1.1 アスキーファイルとバイナリファイル
- 8.1.2 テキストエンコーディング
- 8.1.3 エンディアン
- 8.1.4 バイナリにおける数の表し方
- 8.1.5 データの圧縮
- 8.2 主要なイメージフォーマットとその特徴
- 8.2.1 ベクトルイメージとラスタイメージ
- 8.2.2 SVG 形式: ベクトルイメージ
- 8.2.3 TGA 形式
- 8.2.4 JPEG 形式
- 8.2.5 GIF 形式
- 8.2.6 TIFF 形式
- 8.2.7 PNG 形式
- 8.2.8 CIN、DPX 形式
- 8.2.9 Open EXR 形式
- 8.2.10 その他
- 8.3 主要なムービーフォーマットとその特徴
- 8.3.1 クロマサブサンプリング
- 8.3.2 圧縮方式の分類
- 8.3.3 コンテナフォーマット
- 8.4 まとめ
索引
※書店でお買い求めの際には、予め在庫をご確認ください。≫取扱い店舗
※PDF書籍に関しては書店販売を行っておりません。
正誤表 / ダウンロード
正誤表
「テクニカルアーティストスタートキット」出荷後に誤植等がみつかり、訂正の必要であることがわかりました。お客様には、ご迷惑をおかけしたことを深くお詫び申し上げ、誤植等、正誤内容を下記のとおりご案内させていただきます。
80ページ (c) バウンス間隔の改善 手順4
■記述されているエクスプレッションコードに以下の赤字部分(3行)を追加してください。
float $z = particleShape1.particleId*0.01;
float $x = 0;
int $bounce = $z/3.14;
float $damp = `pow 0.2 $bounce`;
float $y = abs(5*sin($z))*$damp;
float $i = 0;
float $inBounce = $z – $bounce*3.14;
float $bounceSize = 3.14/($bounce+1);
float $beginBounce = 0;
for ($i = 0; $i < $bounce; $i++){
$beginBounce = $beginBounce+ 3.14/($i+1);
}
$z = $beginBounce + $inBounce *($bounceSize/3.14);
particleShape1.position = <<$x,$y,$z>>;
本書をより良く理解するための Q&A
P.43 逆関数について
Q: P.43 「逆関数とは?」で述べられている関係式の意味がよくわかりませんでした。また逆関数は必ず存在するのでしょうか?
A: ある関数fの「逆」関数gというのは、次の2つの条件を満たします。
- 値aをfで写してf(a)という値になったとき、さらにgを施すと元に戻る。つまり、g(f(a)) = aが成り立つ。
- 値bをgで写してg(b)という値になったとき、さらにfを施すと元に戻る。つまり、f(g(b)) = bが成り立つ。
注:本文ではこのgのことをf^(-1)と記しました。
ただここで注意することは、上記のaやbは、関数が定義されている範囲の中で動いても成り立つ、ということです。ちなみにこの関数が定義されている範囲のことを定義域と呼びます。
そうすると、どんな関数でもいつも逆関数があるとは限りませんね。いつも定義域を考えてみる必要があります。たとえば、f(a) = a^2という関数を考えます。g(b) = √bという関数はその逆関数のようにみえます。aが正の数なら、実際g(f(a)) = aですね。しかし、a = -1とするとf(a) = (-1)^2 = 1なのでg(f(a)) = h(1) = √1 = 1です。この場合、h(f(-1)) = 1となって条件1が成り立ちませんね。fの定義域を正の数だけに限定すると、このgはfの逆関数です。ただしgの定義域も正の数だけを考えます。
P.123 ローカルシェーディングについて
Q: P.123 「透明、屈折は、ローカルモデルで扱えない」となっていますが、実際ローカルシェーディングで透明、屈折を計算するという説明も聞いたことがあります。本書でのローカルモデルの範囲はどのように考えたら良いのでしょうか?
A: 本書では説明を分かりやすくするために、以下のように定義しています。
ローカルシェーディングとは局所的なシェーディングで、周囲の情報を考慮せず、ある点における情報のみを用いるシェーディング計算を指します。「ある点における情報」には、その点の位置、法線、接線や入ってくるライトの強さ、方向などが挙げられます。
すなわち、ある点の陰影計算に、直接光のみを考慮して、つまりその点に光源から直接届いた光のみを考慮して計算することを本書ではローカルシェーディングモデルと呼んでいます。
ローカルシェーディングの計算結果を組み合わせることにより、「透明、屈折」も計算することは可能です。
ダウンロード
各章の演習で使用するファイルは、以下のリンクよりダウンロードしてご利用ください。データは、ZIP形式で圧縮されています。ご使用のコンピュータに標準の解凍機能を使用するか、WinZip(Windows)などのアプリケーションで解凍してご使用ください。
ご使用上の注意
- ダウンロードファイルに含まれるコンテンツファイルの著作権は、株式会社 オー・エル・エム・デジタルおよび、株式会社 ボーンデジタルに帰属します。
- ダウンロードファイルに含まれる全てのファイルは、本書利用者に独占的な使用を認めるものではありません。本書のレッスンを学習する場合にのみ、使用することができます。
- 著作権者の書面による了解なしに、一部または全デーファイルを、無償有償に関わらず、第三者へ配布をすることはできません。全てのデータは、本書のレッスンを学習する目的以外で使用することはできません。
- データファイルを使用することによって生じた偶発的または間接的な損害について、出版社ならびにデータファイル制作者は、いかなる責任も負いません。