1. はじめに:CGとCGエンジニア検定

グラフィックス理論シリーズへようこそ。
グラフィックスプログラミングの為の線型代数シリーズでは、ベクトル、行列、座標空間、投影といった数学を学びました。
此のシリーズは、グラフィックスの世界で其の数学をどう使うかについてです。
コンピュータは三角形の山をどうやって1枚の絵に変えるのでしょうか?
影や反射や柔らかい光は何故あんなに重いのでしょうか?
曲線、キャラクター、カメラ、色は、どの様に数値で表されるのでしょうか?

此のシリーズは、CG-ARTSが実施しているCGエンジニア検定 エキスパートの出題範囲に沿って進みます。
其の為、検定の勉強の副読本としても使えます。
でも、検定を受けなくても全く問題ありません。
ゲームや映画やデザインソフトの画像がどうやって作られているのか気になった事があれば、此のシリーズは貴方の為の物でもあります。

此の章では、CGとは何か、CGの画像が最初から最後までどう作られるか、CGエンジニア検定とは何か、そして此のシリーズが出題範囲とどう対応しているかを見ていきます。
其の後、シリーズの構成と、全ての章で使う規約を説明します。
数学は未だ殆ど出てきません。
本格的な計算は第2章から始めます。

注:此のシリーズはCGエンジニア検定の為のコミュニティによる補助教材です。
公式テキストの代わりになる物ではなく、CG-ARTSとは無関係で、CG-ARTSの承認を受けた物でもありません。
クレジットと免責事項の全文は1.4節にあります。

1.1 コンピュータグラフィックスとは?

コンピュータグラフィックス(CG)とは、コンピュータで画像を生成する事です。
入力はシーンの記述で、形状、材質、光源、カメラ、そして場合によっては物の動き方です。
出力は1枚の画像、又は画像の列(動画)です。
記述から画像を作る処理をレンダリングと呼びます。

短い定義ですが、其の範囲はとても広いです。
ゲーム機の上で1秒に60回、数ミリ秒で描かれるCGもあります。
長編映画の為に、何百台ものコンピュータで1枚に何時間も掛けるCGもあります。
写真と見分けが付かない事を目指すCGもあれば、水彩画や図面の様に見せるCGもあります。
其の全てが同じ理論の上に成り立っていて、其の理論が此のシリーズのテーマです。

CGが使われる分野

CGが毎日の様に使われている主な分野は次の通りです:

  • ゲーム:リアルタイムの3D及び2Dグラフィックス。プレイ中に毎フレーム計算されます。
  • 映画とVFX:実写映像に馴染ませる視覚効果(VFX)、デジタルダブル、爆発、丸ごとCGのセット。
  • アニメーション:フルCGのアニメ映画やシリーズ。3Dの背景・群衆・乗り物を使う2Dアニメも含みます。
  • デザインとCAD:製品・自動車・機械の設計。CAD(コンピュータ支援設計)では正確な形状と図面が必要です。
  • 建築:建つ前の建物の可視化、ウォークスルー、採光の検討。
  • 医療と科学:CTやMRIのボリュームの3D表示、シミュレーション、直接見えないデータの可視化。
  • VRとAR:VRのヘッドセットや、カメラ映像の上にCGを重ねるARソフトウェア。
  • ユーザーインターフェース:スマホやPCのフォント、アイコン、ウィンドウ、地図、グラフも全てCGです。

最後の物は忘れられがちです。
今読んでいる文字の一つ一つも、曲線の記述からラスタライザーによって画素に変換された物です。
CGは3Dだけではありません。

CG・画像処理・コンピュータビジョン

画像を扱う分野は3つあり、何が入って何が出るかで区別すると分かり易いです:

CGはモデルから画像を、コンピュータビジョンは画像からモデルや意味を、画像処理は画像から別の画像を作る

  • コンピュータグラフィックス:モデル → 画像。シーンを記述し、カメラに何が写るかを計算します。
  • 画像処理:画像 → 画像。鮮鋭化、ぼかし、色補正、拡大縮小、圧縮等。
  • コンピュータビジョン:画像 → モデル又は意味。顔や文字の認識、写真からの物体の3次元形状の計測、カメラの動きの追跡等。

或る意味で、コンピュータビジョンはCGを逆向きに辿る物です。
CGはシーンから絵へ、ビジョンは絵からシーンへ向かいます。
実際には、此の3つは常に出会います。
VFXのショットでは、実写映像から本物のカメラの動きを追跡し(ビジョン)、其のカメラでCGの要素をレンダリングし(グラフィックス)、全てを合成して色を整えます(画像処理)。
テクスチャは写真から作られる事が多く、3Dスキャナーは画像からモデルを作ります。
検定の出題範囲の最初の分野は「CGとディジタルカメラモデル」で、其の中の「CGと画像処理」という項目は正に此の関係についてです。
詳しくは第2章で扱います。

1.2 CGの画像はどう作られるか:大きなパイプライン

CG、特に3Dアニメーションのショットを作る作業は、段階の連鎖です。
各段階は前の段階の結果を受け取り、何かを付け加えます。
全体像と、各段階を扱う此のシリーズの章は次の通りです:

CG制作の大きなパイプライン:モデリング、レイアウトとカメラ、アニメーション、レンダリング、合成・画像処理、出力と、其れぞれを扱う章

  • モデリング:形を作ります。ポリゴンメッシュ、曲線と曲面、ソリッド、ボリューム。第7〜9章。
  • レイアウトとカメラ:物体、光源、カメラをシーンに配置します。此処で座標変換が登場します。物体は其れぞれ自分の座標系を持ち、行列で座標系の間を移動します。第2章でカメラモデルを紹介し、第4〜6章で変換、投影、ビューイングパイプラインを扱います。
  • アニメーション:時間と共にシーンを変えます。キーフレーム、骨格とキャラクター、物理シミュレーション、手続き型の動き。第13〜14章。
  • レンダリング:カメラに写る画像を計算します。どの面が見えるか(隠面消去)、どれだけ明るく何色か(シェーディング)、影、テクスチャ、反射、間接光。三角形が画素になる仕組みは第6章、其の他は第10〜12章。
  • 合成・画像処理:レンダリングしたレイヤー同士や実写映像を組み合わせ、最終的な画像を調整します。第14〜16章。
  • 出力:結果を表示又は保存します。ディスプレイ、動画ファイル、プリンタ、3Dプリンタまで。ディスプレイの色は第3章、装置と記録メディアは第17章。

アニメーションとレンダリングはループで繋がっています。
動画は静止画の列で、各静止画ごとに、其の瞬間の状態にシーンを動かしてからレンダリングします。
此のシリーズでは(多くの講座と同じく)アニメーションより先にレンダリングを学びます。
1秒に24枚の絵を作る前に、1枚の絵の作り方を知る必要があるからです。
実際の制作では、作業は大体上の図の順番で進み、何度も行ったり来たりします。

1つの段階に属さない話題も幾つかあります。
其れらは制作全体に関わる物です。
色と其の見え方(第3章、知覚については第18章でも)、写実的ではないNPRと可視化(第16章)、CGシステムのハードウェアとソフトウェア(第17章)、そして知的財産権とCGの歴史(第18章)です。

リアルタイムレンダリングとオフラインレンダリング

レンダリングには全く異なる2つの世界があり、違いは時間です。

リアルタイムレンダリングは、ユーザーが見て操作している間に各画像を計算します。
ゲーム、VR、CADのビューア、UI等です。
1秒あたりの画像の枚数をフレームレートと呼び、fps(frames per second)又はHz(ヘルツ)で表します。
或るフレームレートで1フレームに使える時間(フレームの予算)は次の通りです:

tframe=1000fpsms

よく使われるフレームレートで計算してみましょう:

100030≈33.3 ms,100060≈16.7 ms,100090≈11.1 ms

つまり60fpsのゲームは、アニメーション、物理、全ての物体の描画という1フレーム分の全てを17ミリ秒未満で終わらせなければなりません。
VRのヘッドセットは90Hz以上で更新する事が多く、残るのは約11ミリ秒だけです。
其の為、リアルタイムのレンダラーは主にGPU上のラスタライズ(第6章)を使い、沢山の巧妙な近似と事前計算したデータで補います。
2018年頃からは一般向けのGPUにもレイトレーシングのハードウェア支援が載り、ゲームでは両者を組み合わせる事が増えています。

オフラインレンダリング(プリレンダリングとも呼びます)は、画像を前もって計算します。
誰もリアルタイムでフレームを待っていません。
映画やハイエンドのアニメーションで使われます。
レンダラーは1フレームに数分から数時間を掛け、パストレーシング(第12章)の様な物理ベースの光輸送を計算出来ます。
其れでも何故沢山のコンピュータが必要なのか見てみましょう。
24fpsで90分の映画のフレーム数は:

90×60×24=129600 フレーム

1フレームに1台で1時間掛かるとすると、映画全体で129,600台時間です:

12960024×365≈14.8 年

1,000台のコンピュータで並列に計算するレンダーファームなら129.6時間、つまり約5.4日です。
しかも此れは全ショットを1回ずつレンダリングした場合で、実際の制作ではアーティストが調整する度に何度もレンダリングします。

リアルタイムレンダリング オフラインレンダリング
1フレームの時間 数ミリ秒〜約33ミリ秒 数分〜数時間
主な手法 GPUでのラスタライズ、レイトレーシングとの併用が増加中 レイトレーシング/パストレーシング、CPU又はGPUのレンダーファーム
主な用途 ゲーム、VR/AR、CADビューア、UI 映画、VFX、高品質な静止画や製品画像
優先する事 速度と安定したフレームレート 画質と物理的な正確さ

理論はどちらも同じです。
隠面消去、シェーディング、影、大域照明は、ゲームエンジンでも映画のレンダラーでも同じ考え方で、違うのは品質と時間の兼ね合いだけです。

1.3 CGエンジニア検定

CG-ARTS

CG-ARTSは、公益財団法人画像情報教育振興協会の略称です(ウェブサイト上の英語名は「Computer Graphic Arts Society」)。
画像情報分野の教育の振興を目的とした財団で、テキストの発行や、CG-ARTS検定と呼ばれる一連の検定の実施等を行っています。
執筆時点では、CGクリエイター検定、CGエンジニア検定、Webデザイナー検定、画像処理エンジニア検定、マルチメディア検定があります。

CGエンジニア検定:ベーシックとエキスパート

CGエンジニア検定は、CG分野のソフトウェアやシステムの開発・設計を行うエンジニアやプログラマ向けの検定です。
CGプログラマ、ゲームプログラマ、テクニカルディレクタ、ソフトウェアエンジニア、CADエンジニア等が想定されています。
特定のツールの使い方ではなく、アニメーション、映画、ゲーム、AR/VR等を支える知識を問う検定です。
レベルは2つあります:

  • ベーシック:CGの技術に関する基本的な理解と、其の知識をプログラミング等に利用する能力。
  • エキスパート:CGの技術に関する専門的な理解と、其の知識をソフトウェア、ハードウェア、システムの開発に応用する能力。

此のシリーズはエキスパートの出題範囲に沿っています。
ベーシックには独自の出題範囲があり、多くの同じ話題をより基礎的なレベルで、違う構成で扱っています。
ベーシックを目指す場合も此のシリーズは役に立ちますが、公式のベーシックの出題範囲と下の表を見比べて、どの部分に重点を置くか確認して下さい。

出題範囲と此のシリーズ

エキスパートの出題範囲は公式サイトでPDFとして公開されています:CGエンジニア検定 出題範囲。
9つの分野で構成されていて、最後の分野が「関連知識」です(下の表の番号は、参照し易い様にあたしが振った物です)。
次の表は、各分野と其の項目、そして此のシリーズの第1部の何処で扱うかを示しています:

出題範囲の分野 項目 章
1. CGとディジタルカメラモデル ディジタルカメラモデル、ディジタル画像の基礎、CGと画像処理 2、3
2. 座標変換とパイプライン 2次元座標変換、3次元変換、投影、ビューイングパイプライン、描画パイプライン 4、5、6
3. モデリング 形状モデル、ソリッドモデルの形状表現、境界表現のデータ構造と局所変形、曲線・曲面、ポリゴン曲面の表現、ボリュームを用いた形状表現、そのほかの形状表現法 7、8、9
4. レンダリング 写実的表現法、隠面消去、シェーディング、影付け、マッピング、イメージベーストレンダリング、大域照明計算 10、11、12
5. アニメーション CGアニメーションの構成、物理ベースアニメーション、キーフレームアニメーション、リアルタイムアニメーション、手続き型アニメーション、実写映像との合成、キャラクタのアニメーション 13、14
6. 画像処理 ディジタル画像の表現、2次元画像の生成と描画、画素ごとの濃淡変換と色変換、領域に基づく画像変換(空間フィルタリング)、画像の幾何学的変換、画像の編集 15(基礎は第2・3章)
7. 視覚に訴えるグラフィックス コンピュテーショナルフォトグラフィ、ノンフォトリアリスティックレンダリング、可視化 16
8. CGシステム CGシステム、CG用ソフトウェア、リアルタイム3次元CGシステム、3次元データ入力装置、3次元データ出力装置、記録メディア 17
9. 関連知識 知覚、知的財産権、CGの歴史 18(知覚は第3章でも)

出題範囲で使われているのは此れらの日本語の用語なので、検定対策として押さえておきたいのは此方です。
英語版では各章で英語の用語の横に日本語の用語を書いているので、英語で学んでいる人も同じ用語に慣れる事が出来ます。

執筆時点での検定の概要

検定其の物に関する情報は年によって変わるので、何かを計画する前に必ず公式サイトhttps://www.cgarts.or.jp/を確認して下さい。
執筆時点(2026年)では:

  • CG-ARTS検定は年2回、前期(2026年は7月)と後期(2026年は11月)に実施されています。
  • 試験はマークシート方式で、与えられた選択肢から解答を選びます(大問10問、合計約40問)。
  • ベーシックは午前、エキスパートは午後に実施されるので、同じ日に両方のレベルを受験出来ます。
  • 合格ラインは100点満点中70点です。
  • 受験料はベーシックが6,050円、エキスパートが7,150円(税込)です。
  • 申込期間と会場は公式サイトに載っていて、過去2回分の試験問題と解答も其処からダウンロード出来ます。

1.4 クレジットと免責事項

クレジットと免責事項
此のシリーズは、CG-ARTS(公益財団法人画像情報教育振興協会、Computer Graphic Arts Society)が実施しているCGエンジニア検定 エキスパートの出題範囲に沿っています。
エキスパートの公式テキストは、CG-ARTSが発行している『コンピュータグラフィックス[改訂新版]』です(第一版一刷は2015年、ISBN 978-4-903474-49-6。CG-ARTSは「CGエンジニア検定エキスパート対応」としています)。
此のシリーズはコミュニティによる補助教材です。公式テキストの代わりになる物ではなく、CG-ARTSとは無関係で、CG-ARTSの確認や承認を受けた物でもありません。CG-ARTS、CGエンジニア検定、書籍の名称は、此のシリーズが何に沿っているかを示す為だけに挙げています。
此のシリーズの文章、図、問題は全てオリジナルです。公式テキスト、公式問題集、過去問からは何も転載していませんし、公式テキストの特定のページに何が書かれているかについても述べません。
用語は、検定で見分けられる様に出題範囲に合わせています。
検定の準備をする場合は、公式テキストと公式問題集(執筆時点では『CGエンジニア検定エキスパート公式問題集[第四版]』)を手に入れ、公式サイトで公開されている過去問にも取り組んで下さい。ベーシック向けには、CG-ARTSから『CGエンジニア検定ベーシック公式問題集[第四版]』と、テキスト『ビジュアル情報処理 -CG・画像処理入門-[改訂新版]』が出ています。
此のシリーズの誤りは全てあたしの責任です。見付けたら教えて下さい。

1.5 此のシリーズの使い方

前提:線型代数シリーズ

グラフィックスプログラミングの為の線型代数シリーズは必須の前提知識です。
此処ではベクトルや行列を改めて導出しません。
必要な時は其れを説明している章へリンクします。
特に大事なのは次の章です:

線型代数の章 此のシリーズで使う所
2. ベクトル 位置、方向、色:全ての所
4. 内積 シェーディング、背面除去、ベクトルの射影
5. 外積 面の法線、カメラの軸の構築
6. 行列と7. 行列の積 全ての座標変換と其の合成
9. 同次座標 行列による平行移動、投影、4×4のパイプライン
10. 行列式と逆行列 変換を元に戻す、法線の変換
11. 座標空間とカメラ ローカル・ワールド・ビュー空間、視野変換
12. 投影変換 平行投影と透視投影、視錐台
13. 回転とクォータニオン 3次元の回転、アニメーションでの姿勢の補間

第1部、第2部、模擬試験

シリーズは2部構成です:

  • 第1部(第1〜18章)は、エキスパートの出題範囲全体を初心者向けに扱います。検定の勉強をしている場合は、先ず此方を読んで下さい。
  • 第2部(其の後の章)は、現代のグラフィックスを支える高度な技術を更に深く扱います。投影とラスタライズの詳細、物理ベースのシェーディング、モンテカルロレンダリング、リアルタイムの影と大域照明、高度なアニメーションと物理、HDRと高度な画像処理、現代のGPUシステム等です。
  • 最後の2章は、本番と同じ形式で出題範囲の分野ごとに配分した模擬試験と、其の解答・解説です。

第1部の章は次の通りです:

  1. はじめに:CGとCGエンジニア検定 — 此の章。
  2. ディジタルカメラモデルとディジタル画像 — カメラ、画素、標本化と量子化。
  3. 色と視覚 — 光、色空間、ガンマ、人間の見え方。
  4. 2次元の座標変換 — 2次元での移動・回転・拡大縮小と、変換の種類ごとに保たれる性質。
  5. 3次元の変換と投影 — 3次元の変換、カメラ、平行投影と透視投影。
  6. ビューイングパイプラインと描画パイプライン — 頂点から画素まで:クリッピングとラスタライズ。
  7. 形状モデルとソリッドの表現 — 形状の保存の仕方。
  8. 曲線と曲面 — ベジェ曲線、Bスプライン等。
  9. ポリゴンメッシュ・ボリューム・その他の形状表現 — メッシュ、ボクセル等。
  10. 隠面消去とシェーディング — 何が見えて、どれだけ明るいか。
  11. 影付けとマッピング — 影とテクスチャ。
  12. 写実的表現と大域照明計算 — レイトレーシングと間接光。
  13. アニメーション1:キーフレーム・運動学・キャラクタ — 物を動かす。
  14. アニメーション2:物理・手続き型・実写合成 — シミュレーションと、CGと実写の合成。
  15. 画像処理 — トーンカーブ、フィルタ、画像の幾何学的変換。
  16. コンピュテーショナルフォトグラフィ・NPR・可視化 — 写実の先へ。
  17. CGシステム — GPU、ソフトウェア、入出力装置、記録メディア。
  18. 知覚・知的財産権・CGの歴史 — 関連知識の分野。

各章の構成

どの章も同じ流れで進みます:

  • 冒頭:何を学ぶか、何故大事か、出題範囲のどの項目を扱うか。
  • 各節:先ず図と直感、次に定義や式、次に数値を使った完全な計算例、そして実際のソフトウェア、ハードウェア、ゲーム、映画でどう使われているか。
  • 「検定のポイント」:確実に押さえておきたい区別と引っ掛かり易い所。
  • まとめと、重要な用語を英語と日本語で並べた用語の表。
  • 課題:★(確認と計算)から★★(応用と導出)、★★★(更に深く考える)まで。検定の形式に似せた選択問題も2〜3問含みます。各章には解答を載せません。検定形式の問題の解答は、最後の模擬試験と一緒に載せます。
  • 最後の節は実践課題:紙と鉛筆で出来る課題で(紙、定規、方眼紙、電卓だけで十分です)、結果を自分で確認する方法も付けます。

コードと実践のシリーズ

此れは理論のシリーズなので、コードは必須ではありません。
数行のコードでアルゴリズムが具体的になる所では、C++(線型代数シリーズのlinalg.hhヘッダーを使用)と、Slang、GLSL、HLSLのシェーダーコードで示します。
課題を解く為にコードを実行する必要は一切ありません。

此れらの考え方を自分で実装したい場合は、此のシリーズの後にGLSLシリーズとOpenGLシリーズがあります。
其処ではシェーダーとレンダラーを書き、此処で学ぶ理論の多く(パイプライン、シェーディング、テクスチャ、影、ガンマ)が動くコードになります。

1.6 此のシリーズの規約

此のシリーズは線型代数シリーズと同じ規約を使います:

  • 列ベクトル。変換は𝐩′=𝐌𝐩の様に掛け、合成は右から左へ読みます。𝐌=𝐓𝐑𝐒では、先ず拡大縮小、次に回転、最後に平行移動です。
  • 右手系の座標系:+Xが右、+Yが上、+Zが見る人の方向。ビュー空間ではカメラは−Z方向を見ます。
  • 正の回転は、軸の正の端から原点の方を見た時に反時計回りです(右手の法則)。
  • 角度は式とコードではラジアンです(πラジアン = 180°)。文章中では、60°の視野角の様に度数も添える事があります。
  • シーンの長さには、特に断らない限り決まった単位はありません(メートルだと思って下さい)。画像の座標は画素単位で、画像(デバイス)座標系は普通、原点が左上でyが下向きです。どちらを使うかは各章で明記します。
  • 色の成分は、式では0から1の数値、8ビットの画像ファイルの話では0から255の数値です。

他の本、他の規約

他の本、論文、API、検定の図が全て此れらの規約を使っている訳ではありません。
其れを見分けて読み替えられれば問題ありません。
よく出会う違いは、行ベクトルと左手系の2つです。

行ベクトル。
本によっては、点を行ベクトルとして書き、行列を右から掛けます:𝐩′⊤=𝐩⊤𝐌′。
(𝐀𝐁)⊤=𝐁⊤𝐀⊤なので(線型代数 第7章)、行ベクトル用の行列はあたし達の行列の転置、𝐌′=𝐌⊤に過ぎません:

𝐩′=𝐌𝐩⟺𝐩′⊤=𝐩⊤𝐌⊤

そして合成の順番が逆になり、左から右へ読む事になります:

𝐩′=𝐓𝐑𝐒𝐩⟺𝐩′⊤=𝐩⊤𝐒⊤𝐑⊤𝐓⊤

同次座標(線型代数 第9章)での2次元の(2,3)の平行移動を、点(1,1)に適用して確かめましょう。
列ベクトルでは、平行移動の量は最後の列にあります:

[102013001][111]=[1⋅1+0⋅1+2⋅10⋅1+1⋅1+3⋅10⋅1+0⋅1+1⋅1]=[341]

行ベクトルでは、行列が転置され、平行移動の量は最後の行にあります:

[111][100010231]=[1+0+20+1+30+0+1]=[341]

同じ点(3,4)になりました。
図がどちらの規約か素早く見分けるには、平行移動の数値が最後の列にあれば列ベクトル、一番下の行にあれば行ベクトルです。
例えば、MicrosoftのDirectXMathライブラリは行ベクトルの規約を使っています。
行ベクトルについては、回転行列がどうなるかも含めて第4章(4.6節)で詳しく扱います。

シェーディング言語でもどちらの書き方も出来ます。
SlangとHLSLではmul(M, p)はpを列ベクトル、mul(p, M)は行ベクトルとして扱います。
GLSLでは同じ物がM * pとp * Mです:

// this series: column vector, p' = M p
float4 transformPoint(float4x4 M, float4 p) {
  return mul(M, p);
}

// row-vector style: p' = p M, the same as mul(transpose(M), p)
float4 transformPointRow(float4x4 M, float4 p) {
  return mul(p, M);
}
// this series: column vector, p' = M p
vec4 transformPoint(mat4 M, vec4 p) {
  return M * p;
}

// row-vector style: p' = p M, the same as transpose(M) * p
vec4 transformPointRow(mat4 M, vec4 p) {
  return p * M;
}
// this series: column vector, p' = M p
float4 transformPoint(float4x4 M, float4 p) {
  return mul(M, p);
}

// row-vector style: p' = p M, the same as mul(transpose(M), p)
float4 transformPointRow(float4x4 M, float4 p) {
  return mul(p, M);
}

左手系。
左手系は、あたし達と同じく+Xが右、+Yが上ですが、+Zは見る人から遠ざかる方向、つまり画面の奥を向きます。
UnityとUnreal Engineはどちらも左手系の座標系を使っています(UnrealはZが上)。
2つの間で変換するには、zの符号を反転します:

右手系と左手系での同じ点:(1, 2, 3)が(1, 2, -3)になる

点は動きません。
変わるのは其の表し方だけです。
行列で書くと、反転は鏡映𝐒=diag(1,1,−1)です(4×4の形ではwの為に1を加えます)。
右手系用に書かれた変換𝐌Rは、左手系では次の様になります:

𝐌L=𝐒𝐌R𝐒

右から左へ読みます。
点を右手系の座標に直し、元の変換を掛け、又左手系に戻す、という意味です。
(2回反転しても何も変わらないので、𝐒は自分自身の逆行列です。)
例えば「見る人の方へ5移動する」は、あたし達の系では(0,0,5)の平行移動、左手系では(0,0,−5)の平行移動です。
もう1つの結果として、鏡映は向きを反転するので、一方の系で反時計回りに並んだ三角形の頂点は、もう一方の系では時計回りに見えます。
頂点の順番で表と裏を決める背面除去(第6章)では、此れが重要になります。

注:特定のテキストや検定の図がどの規約を使っているかについて、此処では断定しません。
読む時は、平行移動の量が何処にあるか、zがどちらを向いているかを見て、上の2つの規則で読み替えて下さい。
行ベクトルなら転置して順番を逆に、左手系ならzを反転します。

1.7 絵の単位:画素・フレーム・カメラ

第2章で理論に入る前に、全てのCG画像を構成する3つの物に名前を付けておきましょう。

画素。
ディジタル画像は画素(ピクセル)と呼ばれる小さなマス目の格子で、各画素は1つの色を持ちます。
縦横の画素数を解像度と呼びます。
次の図は、同じ小さなシーン(丘の上の太陽)を3つの解像度で、画素ごとに1色で計算した物です:

同じシーンを8×8、16×16、64×64画素で表した物

8×8では太陽はカクカクした十字形で、64×64でははっきり丸くなりますが、縁は未だ階段状です。
フルHDの画像は1920×1080=2073600画素です。
従って、フルHDで60fpsで動くゲームは、毎秒

2073600×60=124416000

個、つまり1億2千万以上の画素の色を作らなければなりません。
連続的な世界が此の格子にどう変換されるか(標本化と量子化)、そして何故階段が出来るかは、第2章のテーマです。

フレーム。
動きは、静止画を素早く次々に見せる事で生まれる錯覚です。
1枚1枚の静止画をフレームと呼びます。
映画は伝統的に1秒24フレームなので、1フレームは1/24秒、約41.7ミリ秒です。
次の図は、落ちるボールを実際の重力で連続6フレーム分計算した物です:

落ちるボールの6フレーム、24fpsで1/24秒ごと

後のフレームほどボールの移動距離が大きい事に注目して下さい。
加速しているのです。
アニメーション(第13〜14章)は、各フレームで全ての物が何処にあるかを計算する事です。

カメラ。
全てのCG画像は、存在しないカメラで撮影されています。
レンダラーは「此の位置で、此の方向を向き、此のレンズを付けたカメラは何を記録するか?」を問い、其の答えが画像になります。
此の考え方、ディジタルカメラモデルがCG全体を一つに纏めます。
モデリングは被写体の準備、ライティングは照明の設置、レンダリングは撮影、画像処理は現像と編集です。
第2章は正に此処から始まります。

検定のポイント

  • 各分野の向きを押さえておきましょう。CGはモデル → 画像、画像処理は画像 → 画像、コンピュータビジョン(画像認識)は画像 → モデル又は意味です。
  • CG制作の段階の順番(モデリング → レイアウト → アニメーション → レンダリング → 合成 → 出力)と、各段階で何をするかを押さえておきましょう。
  • リアルタイムレンダリングは1フレームの決まった時間の為に品質を、オフラインレンダリングは品質の為に時間を犠牲にします。フレームの予算は1000/fpsミリ秒です。
  • 出題範囲の正式な用語は「デジタル」ではなく「ディジタル」です(ディジタル画像、ディジタルカメラモデル)。どちらもdigitalの意味で、「デジタル」は普段の表記です。
  • 図が行ベクトルを使っている場合、其の行列はあたし達の行列の転置で、合成の順番は逆です。

1.8 まとめ

  • コンピュータグラフィックスとは、シーンの記述からコンピュータで画像を生成する事で、画像を計算する段階をレンダリングと呼ぶ。
  • CGはゲーム、映画とVFX、アニメーション、デザインとCAD、建築、医療と科学、VR/AR、ユーザーインターフェースで使われている。
  • CG(モデル → 画像)、画像処理(画像 → 画像)、コンピュータビジョン(画像 → モデル又は意味)は向きが違うが、実際には常に組み合わせて使われる。
  • CG制作はパイプラインで、モデリング、レイアウトとカメラ、アニメーション、レンダリング、合成・画像処理、出力と進む。アニメーションとレンダリングはフレームごとに繰り返す。
  • リアルタイムレンダリングの予算は60fpsで1フレーム約16.7ミリ秒、オフラインレンダリングはレンダーファームで1フレームに何時間も掛けられる。
  • CG-ARTSのCGエンジニア検定にはベーシックとエキスパートがあり、此のシリーズはエキスパートの出題範囲に沿っていて、第1部(第1〜18章)で全分野を扱う。
  • 此のシリーズはコミュニティによる補助教材で、公式テキストの代わりではなく、CG-ARTSとは無関係で承認も受けていない。
  • 此のシリーズは列ベクトル、右手系、ラジアンを使う。行ベクトルの本では行列が転置され順番が逆になり、左手系ではzが反転する。
  • 絵は画素で、アニメーションはフレームで出来ていて、全てのCG画像は仮想のカメラで撮影されている。

1.9 用語

English 日本語 備考
computer graphics (CG) コンピュータグラフィックス シーンの記述から画像を生成する
image processing 画像処理 画像 → 画像
computer vision コンピュータビジョン 画像 → モデル又は意味
visualization 可視化 見えないデータを見える様にする
modeling モデリング 形を作る
layout レイアウト 物体・光源・カメラの配置
coordinate transformation 座標変換 座標系の間を移動する
animation アニメーション 時間と共にシーンを変える
rendering レンダリング 画像を計算する
compositing 合成(コンポジット) レイヤーや実写を組み合わせる
real-time rendering リアルタイムレンダリング ゲーム、VR。1フレーム数ミリ秒
offline rendering, pre-rendering オフラインレンダリング、プリレンダリング 映画。1フレーム数分〜数時間
rasterization ラスタライズ プリミティブを画素に変換する(第6章)
render farm レンダーファーム 並列にレンダリングする多数のコンピュータ
frame フレーム アニメーションの1枚の静止画
frame rate フレームレート 1秒あたりのフレーム数(fps)
pixel 画素(ピクセル) ディジタル画像の1マス
resolution 解像度 縦横の画素数
digital camera model ディジタルカメラモデル 仮想のカメラとしてのCG(第2章)
syllabus 出題範囲 公式の出題項目の一覧
column vector 列ベクトル 此のシリーズの規約、p' = M p
row vector 行ベクトル 別の規約、行列が転置される
right-handed system 右手系 +Zが見る人の方向(此のシリーズ)
left-handed system 左手系 +Zが見る人から遠ざかる方向

1.10 課題

  1. ★ 次の作業をCG、画像処理、コンピュータビジョンに分類して下さい:(a) 家の3Dモデルを画像として描く、(b) 写真のノイズを除去する、(c) 交通カメラの映像からナンバープレートの番号を読み取る、(d) 50枚の写真から彫像の3Dモデルを作る、(e) カラー写真をグレースケールにする。
  2. ★ 30fps、120fps、144fpsでのフレームの予算をミリ秒で計算して下さい。
  3. ★ 2分の短編映画が24fpsで、1フレームのレンダリングに1台で20分掛かります。フレーム数、必要な台時間、100台のレンダーファームでの所要時間を求めて下さい。
  4. ★★ 2次元の(−1,4)の平行移動を表す3×3の同次座標の行列を、列ベクトルと行ベクトルの両方の規約で書き、其れぞれで点(2,1)を変換して下さい。どちらも(1,5)にならなければなりません。
  5. ★★ 点(2,−1,4)と平行移動(1,2,3)を、あたし達の右手系から左手系に変換し、「平行移動してから変換」と「変換してから平行移動」が同じ点になる事を確かめて下さい。
  6. ★★★ スマホのカメラ越しに、本物の机の上にCGのキャラクターが立っているARソフトウェアがあります。1フレームの中で起こる順番に、ソフトウェアのどの部分がコンピュータビジョン、CG、画像処理なのかを説明して下さい。

選択問題

問1 ★ 次のうち、コンピュータビジョンの説明として最も適切な物はどれか。

あ 入力画像から、写っている物体の形状、位置又は意味を求める事
い 入力画像を、より鮮明な画像等の別の画像に変換する事
う 3次元モデルとカメラから画像を生成する事
え 画像を圧縮してファイルに保存する事
お 物理法則に従って物体の動きを計算する事

問2 ★ 次のうち、3DCGアニメーションの1ショットを制作する作業の順番として最も適切な物はどれか。

あ レンダリング → モデリング → レイアウト → アニメーション → 合成
い 合成 → モデリング → アニメーション → レイアウト → レンダリング
う レイアウト → レンダリング → モデリング → 合成 → アニメーション
え モデリング → レンダリング → 合成 → レイアウト → アニメーション
お モデリング → レイアウト → アニメーション → レンダリング → 合成

問3 ★★ 列ベクトルの規約で、点𝐩を𝐩′=𝐀𝐁𝐩と変換する。次のうち、行ベクトルの規約で同じ変換を表す物はどれか。

あ 𝐩′⊤=𝐩⊤𝐀𝐁
い 𝐩′⊤=𝐩⊤𝐀⊤𝐁⊤
う 𝐩′⊤=𝐩⊤𝐁⊤𝐀⊤
え 𝐩′⊤=𝐩⊤𝐁𝐀
お 𝐩′⊤=𝐀⊤𝐁⊤𝐩⊤

1.11 実践課題

此の課題では、1枚のCG画像を紙の上で分解し、自分の学習計画を立てます。
必要な物は紙とペン、あれば定規です。

  1. CGを含む静止画を1枚選びます。ゲームのスクリーンショット、CGアニメ映画の1フレーム、映画のVFXショット、カタログの製品画像等、何でも構いません。
  2. 紙に「画像の中の物」「モデリング」「ライティング・シェーディング」「アニメーション」「合成・画像処理」「章」の列を持つ表を描きます。
  3. 少なくとも8行を埋めます。見える物(キャラクター、地面、空、影、反射、霧、画面上の文字、レンズフレア…)ごとに、作るのに必要だった段階に印を付けます。
  4. 「章」の列には、1.2節のパイプラインの図と1.3節の出題範囲の表を使って、其れを扱う此のシリーズの章を書きます。
  5. 表の下に、其の画像がリアルタイムとオフラインのどちらでレンダリングされた可能性が高いか、其の理由と共に1文で書きます。
  6. 2枚目の紙に「出題範囲の分野」「章」「読み終える日」の列を持つ学習計画の表を作り、9つの分野其れぞれに1行ずつ書きます。

最終的に出来上がる物は、全ての行に少なくとも1つの印と章番号がある8行以上の表と、9つの分野全てを含む学習計画です。
自己チェック:9つの分野が全て計画に入っている事、章番号が1.3節の表と一致している事、日付が順番に並び、検定(又は自分で決めた締め切り)の少なくとも2週間前に、模擬試験と復習の為の時間が残っている事を確認して下さい。
画像の中に分類出来なかった物があれば、丸で囲んでおき、第12章の後でもう一度見て下さい。
其の頃には何なのか分かる筈です。


コメント(0)

まだコメントはありません。