3次元CG


3次元 CG は,コンピュータによってリアルな画像を作る技術である。 静止画だけでなく,CM,アニメーション,映画(実写との合成を含む)など多くの分野で使われている。
3次元 CG を作るためには,オブジェクトの形状の作成(モデリング)・質感(アトリビュート)の調整,照明・視点(カメラアングル)の調整など,たくさんのことを行わなければならない。 動画を作成するためには,さらに,モーションデザイン,カメラワークも必要である。また,多数のコマを作成するため,多くの計算時間も必要である。
3次元 CG は,映像をつくる過程(レンダリング)に多くの計算を必要とするため,かつては高価なコンピュータが必要であったが, コンピュータの処理能力が向上したため,最近ではパソコンがふつうに使われる。

* ここでいう3次元は,3D 映画 (ステレオ映画) や 3D 放送の意味で使われる,両眼視による 3D 映像ではなく,広く CG (立体のコンピュータによる映像化) の意味で使われる3次元である。 単に CG と呼んでもよい。


モデリング − 座標系

モデリングでは,座標上で立体・光源・カメラを配置するので,3次元座標についての知識が必要になる。座標軸 x y zの取り方はソフトウェアによって若干異なる。

右手系と左手系

親指にx軸,人差指にy軸,中指にz軸を当てた場合,右手の配置になるものを右手系,左手の配置になるものを左手系という。 数学では右手系が使われるが,3次元 CG ではソフトウェアによって右手系のものと左手系のものがある(右手系が多いようだ)ので,どちらが使われているか注意する必要がある。 図のように,右手系では手前が z 方向に,左手系では奥行きが z 方向になる。

右手系・左手系

y-up と z-up

y軸が上を向く座標の取り方を y-up,z軸が上を向く座標のとり方を z-up という。 3次元CGでは画面上の右を x, 上を y にとるのがふつうなので y-up となる。 したがって,右手系では z 軸が手前側,左手系では z 軸が向こう側になる。
いっぽう,CAD(製図ソフト)では平面図を x-y 面とするのがふつうなので z-up となることが多い。数学でも z-up の右手系が使われる。

ちなみに,主要な3次元 CG ソフトウェアでは Maya, SoftImage (XSI), Houdini, Shade が右手系 y-up, LightWave が左手系 y-up, Rhinoceros が右手系 z-up のようだ。

y-up

単位

CG では,形状を座標 (x, y, z) で表現する。 座標は単なる数値のままで扱い,いちいち単位を付けて表すわけではないが,ソフトウェアごとに単位が仮定されている。 単位は mm か cm であることが多い。 CG のアニメーションで重力による落下などの物理現象を扱う場合は,仮定されている単位を把握しておかないと非現実的な速度の運動になってしまうので注意が必要である。


回転の向き

物体を回転するときは,回転軸と角度を指定しなければならない。角度は,xyz サイクリックの順をプラスにするのがふつうである。すなわち, x軸のまわりの回転ではx軸正方向から見て y→z の向きがプラスに,y軸のまわりの回転では z→x の向きがプラスに,z軸のまわりの回転では x→y の向きがプラスになる。

回転の向き

オブジェクト座標,ワールド座標,スクリーン座標

モデリングを行うときは,まず物体を作り,それを回転・平行移動させて配置していく。 物体作成に使った座標をオブジェクト座標という。 また,物体・光源・カメラを配置する舞台となる座標をワールド座標という。 これを,カメラの位置から見ると透視図が得られるが,これがレンダリングで得られる画像で,画像上での座標がスクリーン座標である。

座標系



モデリング − サーフェスモデルとソリッドモデル

大別して,つぎの2つの立体表現がある。どれが使われるかはソフトウェアによる。

(1) サーフェスモデル (surface model)

ポリゴン(polygon, 多角形のこと)による面素の集まりでできた,中身のない表面だけのモデル。おもに Z バッファ法,スキャンライン法で使われる。 モデリングにはつぎのような方法が使われる。

プリミティブ(primitive, 基本形状)
楕円体,円錐,円柱,平面などの基本形状(もちろんポリゴンでできている)を組み合わせる方法
回転体(revolution)
断面の形を入力し,360°をいくつかに分割して回転させる方法
押し出し(extrusion)
断面の形を入力し,垂直に掃引して厚みをつけたり,空間を掃いて立体を作る方法。 「掃引体(sweeping)」ということもある。
曲面
ソフトウェアによっては,なめらかな曲面を使ったモデリングができる。 かつては,ベジエが車体のデザインのために開発したベジエ曲面などが使われたが,さいきんはスプライン曲面の一種である NURBS (Non-Uniform Rational B-Splines) が使われることが多い。

(2) ソリッドモデル (solid model)

表面だけのサーフェスモデルに対して,中身の詰まったモデルをソリッドモデルという。主としてレイトレーシングに使われる。面素でできたB-reps(Boundary representation, 境界表現)と,プリミティブを組み合わせる方法がある。

B-reps
上述のサーフェスモデルに位相情報(面素の向きの情報)を加えて,ソフト的に立体の内側と外側を区別できるようにしたもの。
(注)B-reps をサーフェスモデルの一種と誤解している解説書があるので注意。 外見はポリゴンだが,中身の詰まったB-repsでは屈折やCGSが可能である。
プリミティブ
数学的な基本形状(ポリゴンではなく,数式で記述される球,円柱,円錐など)のほか,表面が滑らかに融合する 「濃度球」(「LINKS metaball」,「blob」など) が使えるソフトウェアがある。
CSG (constructive solid geometry, 組立式立体幾何学?)
ソフトウェアによっては,立体の集合演算(ブール演算, Boolean)である CSG が使えるものがある。Boolean とよぶこともある。
2つの立体を A,B とすると,和集合 A+B (A∪B) はどんなソフトでも作れるが,そのほか A×B (A∩B) や A−B などの立体も作れるわけである。

実際にモデリングを行うときは,以上のような方法で立体を作り,スケール変換(拡大・縮小)で大きさを整え,回転や平行移動で配置を決めていく。また,いくつかの立体を適当にまとめてグループ化する(例えば指と手のひらをまとめて「手」として扱う)と,モデリングが容易になる。

ワイアフレーム サーフェスモデル メタボール ブーリアン
回転体
(ワイアフレーム
表示)
ポリゴンでできた
プリミティブの組み
合わせ
濃度球の例
(LINKS メタボール)
CSGの例
球から直方体を
切り取っている

上記の形状データのうち,ポリゴンで表現された形状を保存する汎用のファイル形式として,DXF や STL がある。 いずれも各ポリゴンの座標値と法線 (面の向き) 情報の集合である。 DXF (Drawing Exchange Format) は AutoDesk 社による汎用の 2D/3D データの保存形式で,CAD 方面で使われる。 STL (STereo Lithography または Standard Triangulated Language) は,形状を三角形の面素で表したもので,3D プリンタ用のデータとして使われることが多い。


レンダリング − レンダリングのアルゴリズム

モデルのデータ(形状,属性)をもとにしてリアルな画像を生成することをレンダリング( rendering, 描写)という。 レンダリングのアルゴリズムには,つぎのようなものがあるが, ふつうの 3D ソフトでは,スキャンライン,レイトレーシングなどが使われることが多い。

画家のアルゴリズム (painter's algorithm)

ポリゴンを,遠方の面から順に塗ることによって隠面消去を行うという単純な方法。 CADソフトなどのレンダリングに使われることがある。 影や透明体は扱えない。アンチエイリアシング不可。

Z バッファ法 (Z-buffer algorithm)

各ポリゴンを順に塗っていくという単純な方法。このとき,画面のピクセルごとに,塗ったポリゴンの z の値(奥行き)をバッファ(一時的なメモリのこと)に記憶しておき,つぎに同じピクセルに別のポリゴンが来たときに,zの値を比較して,すでに塗ったポリゴンよりも手前である場合だけ改めて塗るという方法。 処理が速いので,リアルタイムで表示する必要がある CAD やゲームのレンダリングなどで使われることが多い。 また,多くのグラフィックチップが,ハードウェアレベルで z バッファ法をサポートしている。 単純なので速いが,影や半透明体が扱えない,アンチエイリアシングができないなどの欠点がある。

スキャンライン法 (scanline method)

画面の走査線 (scanline) ごとに,走査線に掛かるポリゴンを探し出し,前後判定をして塗っていく方法。比較的速いので,広く使われる。アンチエイリアシングができる。影や屈折は不可。向こうが透けて見えるだけの半透明体は可。

レイトレーシング (ray tracing, 光線追跡法)

視点から画面の各ピクセルに向けて光線 (ray) を出し,屈折,反射などの物理現象をシミュレートしながら,光線を光源まで逆に辿ることによって画像を生成する方法。 影,屈折,映り込みなどが表現できるので写真的なリアルな画像が得られる(原理的には,あらゆる物理現象が表現可能)。
高度なソフトでは,広がった光源による照明の効果(ラジオシティ,radiosity という), 霧やかすみの効果(フォグ,fog), コップやガラスによる集光模様(コースティクス,caustics)の表現, ピンぼけ効果,ブレの効果 (モーションブラー) もシミュレートできる。
アンチエイリアシングは,1つのピクセルの中の多数の点の色を計算して平均化する (over-sampling) などの方法で行う。
計算時間がかかるのが欠点であるが,コンピュータの処理速度の向上で,パソコンレベルでも十分なことができるようになってきた。

レイトレ1  レイトレ2  図.レイトレーシングの例


レンダリング − シェーディングモデルとアトリビュート

レンダリングして画像を作るためには,色のほかにシェーディングのための属性を与えなければならない。

1.シェーディング (shading)

オブジェクトに,面の向きに応じた陰 (shade) をつけることをシェーディングという(陰 shade と影 shadow は 3D CG では別扱いなので,「陰影」とは訳してはいけない),照明モデルなどとよぶ。
シェーディング属性はふつう,つぎの3成分で指定することが多い。

(1) アンビェント (ambient) 成分
周囲光の強さのこと。光源からの光が全く当たらない陰の部分はこの成分だけで明るさが決まる。 0% で真っ黒になる。立体の置かれた環境に応じて数%〜数十%の間で調整するとよい。

(2) ディフューズ (diffuse) 成分
いわゆる乱反射による明るさの強さ。光線との角度に応じて明るさが変わる。ふつう,簡単のため入射角の cos に比例する(Lambert の法則)ように計算している。材質に応じて調整する。

(3) スペキュラー (specular) 成分
表面に光沢がある場合の反射成分,いわゆるハイライトの強さ。サイズも変えられる。金属と非金属では光の反射のメカニズムが異なるので,スペキュラーの入れ方も違う。すなわち,金属ではスペキュラーに金属特有の色が付く。いっぽう,非金属ではスペキュラーの色は光源の色と同じになる。

シェーディングモデル

この3成分の組み合わせで,かなり幅広い質感を表現することができる。例えば

・プラスチックでは,スペキュラーを鈍く弱くする。
・ガラスでは,アンビェントとディフューズを弱くし,スペキュラーを鋭くする。
・光沢のある金属では,アンビェントとディフューズを弱くし,スペキュラーを強く鋭くする。

【注.フラットシェーディングとスムーズシェーディング】

ポリゴンからなるモデルをシェーディングするとき,ポリゴンの向きに応じてそのまま面の明るさを決めることをフラットシェーディング (flat shading), 表面を滑らかに見せるように陰をつけることをスムーズシェーディング(smooth shading)という。

flat Phong
フラットシェーディング スムーズシェーディング
(Phong)

スムーズシェーディングの方法としては,単に各ポリゴンの色を補間して滑らかに見せるグローシェーディング(Gouraud はフランス人の名前)と,ポリゴンの各面の法線ベクトル(面に垂直な方向のベクトル)を補間して滑らかに見せるフォンシェーディング (Phong =「馮」は中国人の名前) がある。 グローシェーディングにはスペキュラーを正しく表現できないという問題があるので,ふつうはフォンシェーディングが使われる。CAD などの分野でスペキューラーを必要としないときは,計算の速いグローシェーディングが使われることがある。

2.テクスチャ (texture)

単に色を付けてシェーディングするだけではものたりないとき,柄 (がら) を物体の表面に貼り付けるマッピング (mapping,写像のこと) という方法がある。 テクスチャ(柄)を貼り付けるテクスチャマッピング(texture mapping),物体のまわりの風景を貼り付けて映り込みのように見せかける リフレクションマッピング (reflection mapping,環境マッピングともいう),凹凸の情報を貼り付けて表面に凹凸があるように見せかけるバンプマッピング (bump mapping)などがある。 マッピングではないが,柄を空間の関数として与え,切り口に柄が現れるソリッドテクスチャ (solid texture) も,木目・大理石などの質感を出すために利用される。

テクスチャマッピング リフレクション バンプ
テクスチャマッピング
リフレクションマッピング
(環境マッピング)
バンプマッピング(皮膚の凹凸)

バンプマッピング ソリッドテクスチャ ソリッドテクスチャ
バンプマッピング(波紋) ソリッドテクスチャ ソリッドテクスチャ


戻る