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軸のまわりの回転では 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 プリンタ用のデータとして使われることが多い。



戻る