The Single Flagship TAMAKAZURA
GALLERY -Confused 3DCG-
THE FUTURES WATCH FOR HOPE, AND THEN HOPE IS WITH US.
One war broke out in 2366, the sun system. It is the result thing which is trivial for the history of the human race but for the people in the those days, it is an important event.


混迷の立体屋さん

■第2回 3DCGの基本の「き」

(2000/12/10)


 3DCGを製作するにあったっての、基本的概念を3回(予定)に分けて説明したいと思います。今回は3D→2D変換座標系マテリアルの基本レンダリング法についてです。
 難しくはありません。というか、私も専門ではないので難しくは説明できません(笑)。ただし、3DCGは数学を基底として成り立っていますので、数式がいくつか出てきます。「えっ!? 数学ぅ?!」などと退かないでください。それほど難しくはなく、中学校程度の数学の知識があればわかると思います。
 わかりやすく説明していきますので、どうかついて来てくださいね。


2.1 3D→2D変換

 3次元から2次元へと、一つ次元が減るわけですから簡単です。次元が増える場合には、情報を追加しないといけないのでかなり難しくなるんですが。
 3Dの物体をスクリーンに映して見れば、2Dになるわけです。図2-1を見ていただくとすぐにわかると思いますが、物体の頂点から視点へ直線を引いて、途中のスクリーンとの交点を2次元での物体の頂点とすればいいのです。このような方法を「透視投影」または「透視変換」と言います。

図2-1 透視投影
図2-1 透視投影


 視点を原点とし、X軸を横、Y軸を高さ、Z軸を奥行きとしたとき、X軸方向から見た図を図2-2に示します。
図2-2 透視投影のZ-Y平面
図2-2 透視投影のZ-Y平面


 この図で「y3」と言うのは「yの3乗」の意味ではなくて、「3次元のy」という意味ですので注意してください。
∠A'OB' = ∠AOB
∠A'B'O = ∠ABO = 90°

 より、
儖A'B' ∽ 儖AB

 つまり、
y20 : y30 = z30 : d

 より、
y20 = d
y30
z30

 同様に、
x20 = d
x30
z30

 このようにして計算された (x2 , y2) を頂点とする線、面を生成すれば、3次元の物体が2次元のスクリーンへと投影されるわけです。
 この方法は実際のカメラとは違う投影の仕方です。距離dはカメラの焦点距離のようなものですが、イコールではありません。大きな違いは、透視投影では「ピンぼけ」が起こらないことです。そうですね、実世界で言えば透視投影は「ピンホールカメラ」でしょうか。


2.2 座標系

 3DCGはもちろんコンピュータの中の世界です。その仮想世界の中でさまざまな座標系があって、順番に変換していくことによって、なるべく数式が簡単になるようにしています。
 以下の4つの座標系があります。

ローカル座標系 … 物体ごとの座標系
ワールド座標系 … 物体、視点、光源などがある座標系
カメラ座標系 … 視点を原点に、視線をZ軸にした座標系
スクリーン座標系 … 画像の中での位置を表す座標系


 ローカル座標系では、製作する物体をなるべく簡単な数式で書けるようにしています。物体それぞれ一つずつ、このローカル座標系を持っています。(図2-3)

図2-3 ローカル座標系
図2-3 ローカル座標系


 ワールド座標系では、仮想世界を大きな一つの座標系として捉え、ローカル座標系の原点の位置と軸の角度のみを記録しています。(図2-4)
図2-4 ワールド座標系
図2-4 ワールド座標系


 カメラ座標系は、次のスクリーン座標系に変換するときに簡単に変換できるようにするためにあります。ワールド座標系からの変換は、ワールド座標系の原点をカメラ座標系の原点と一致させて、次にそれぞれの軸が一致するように原点中心に回転させます。(図2-5)
(a)初期状態 図2-5 ワールド座標系→カメラ座標系 (a)初期状態
(b)移動 図2-5 ワールド座標系→カメラ座標系 (b)移動
(c)回転 図2-5 ワールド座標系→カメラ座標系 (c)回転
図2-5 ワールド座標系→カメラ座標系


 スクリーン座標系は、文字通りスクリーンのピクセルを表現した座標系で、2次元です。カメラ座標系からの変換は、2.1.で述べた透視投影です。


2.3 マテリアルの基本

 物体の表面で光源からの光はさまざまな色に変化します。これは物体ごとに異なり、物体の特性を決定するのが「マテリアル」です。
 マテリアルには主に、以下の3つの要素があります。

周囲光 … 影の部分の色
拡散反射光 … 光の当たっている部分の色
鏡面反射光 … 光で光っている部分(ハイライト)の色


 セルアニメでは、この3つがはっきりと別れていてわかりやすいと思います(図2-6)。

図2-6 セル塗りでのマテリアル
図2-6 セル塗りでのマテリアル


 実世界では、影の部分も見えます。実はこれは、光源からの光が壁や床や他の物体で反射して、新たな弱い光源となっているからです。これを「環境光」と言います。ある種の3DCGソフトでは、これをシミュレートする機能がついているものもありますが、たいていはありません。つまり、環境光を設定してやらなければ周囲光は真っ黒になってしまいます(図2-7)。
図2-7 環境光の設定 (a)環境光なし
(a)環境光なし
図2-7 環境光の設定 (b)環境光あり
(b)環境光あり
図2-7 環境光の設定


 3DCGを作成する際にはたいてい、拡散反射光を決めて、周囲光はそれを暗くしたもの、鏡面反射光はそれを明るくしたもの、といったように簡単に決めているようです。というのは、周囲光と鏡面反射光が異なる色の物体は数少ないからです。
 他にもマテリアルにはさまざまなパラメータがあります。これらについては、順次必要になり次第説明していこうと思います。


2.4 レンダリング法

 物体はポリゴンからできています。いくらポリゴンを細かくしたところで、物体はがたがたのままです。そこで面に塗る色を、適当にグラデーションすることで滑らかに見せようと考えます。この方法を「スムーズシェーディング」と言います。(図2-8)

図2-8 シェーディングの違い (a)一定
(a)一定
図2-8 シェーディングの違い (b)スムーズ
(b)スムーズ
図2-8 シェーディングの違い


 スムーズシェーディング法にはいろいろな方法がありますが、ここでは「フォンシェーディング」についてのみ説明します。
(a)図2-9 フォンシェーディングの概念 (a)
(b)図2-9 フォンシェーディングの概念 (b)
(c)図2-9 フォンシェーディングの概念 (c)
図2-9 フォンシェーディングの概念


 図2-9(a)のように、面a,b,cがつながってあるとします。このとき、頂点s,tでの面と直交する線(法線)をそれぞれ、
sの法線 = aの法線とbの法線の平均
tの法線 = bの法線とcの法線の平均

 とします(図2-9(b))。面b上で、このsの法線からtの法線へと滑らかに変化するな法線を計算すると、図2-9(c)の水色の線のような仮想的な滑らかな面ができるのです。

 他にもたくさんのレンダリング法があります。中でもよく使われるのが、「レイトレース法」です。これについては、また回をおいて説明することにしましょう。


2.5 ちょっと感想

 ちょっと欲張りすぎた。これほどまでにコンテンツを作るのが大変とは。次回からは量を減らそう。
 HTMLに数式を書くタグがないのはつらい。数式を自動的に変換するツールはないものかいな。
 それに、図を作るのが大変だった。なにしろ適当な画像編集ソフトが手元にないもので。今は、3DCGソフトとWordで図を作ってWindowsのペイントで編集しているという始末。


2.6 次回は…

 3DCGの基本の「ほ」テクスチャの概念
 えっ、一つだけ?――テクスチャは奥が深いぞよ。お楽しみに。

BACK NEXT



BACK TO MENU PAGE