Fascination N−D−File 3次元コンピュータグラフィックス

戻る


コンピュータグラフィックス


明解 3次元コンピュータグラフィックス


キャラクターをつくろう!CG彩色テクニック (単行本)


キャラクターをつくろう! CG彩色テクニック 2
(キャラクターをつくろう!) (大型本)



キャラクターをつくろう!CG彩色テクニック 3
改訂版 (3) (単行本)



キャラクターをつくろう!CG彩色テクニック 5
(キャラクターをつくろう!) (単行本)



キャラクターCG スキルアップ テクニック (単行本)


ハイビジョンCGで描く驚異の宇宙銀河をかけ抜けろ


ActionScript 3.0 アニメーション (単行本)

3次元コンピュータグラフィックス (さんじげんコンピュータグラフィックス、3 Dimensional Computer Graphics, 3DCG) は、仮想3次元空間上の形状情報から、それらを平面上に投射することで生成するコンピュータグラフィックス (CG)。これらの一連の技術のことを指すこともある。2次元コンピュータグラフィックス (2DCG) と画像としての違いはないが、生成工程に大きな差異があるため、区別してこう呼ばれる。

毎年夏にアメリカで開催されるCGの祭典SIGGRAPHにて、世界中の多くの研究者により最新のCGの論文が発表され、技術更新がなされている。

3DCGの目的

3DCGは多くの場合、フォトリアリスティックな画像を制作する目的で利用される。そういった点では絵画の技術とは大きく方向性が異なっている。セルアニメーションのように毎フレームごとに手書きで絵を描く必要がないため、手軽にアニメーションを制作する手段としても効果的である。また、コンピュータシミュレーションにおいても、シミュレーション結果を視覚的に認識するのに有効であり、訓練用としてはドライブシミュレータやフライトシミュレータなどに利用されている。CAD、CAMにおいても成型品の完成イメージを把握したり、建築パースを正確に描画する目的で利用されている。建築パースの作成では設計図面さえあれば建築イメージを確認できるため、古代遺跡の復元モデルなどをフォトリアリスティックに描画する用途などにも用いられている。他に、コンピューターゲーム、映画やアニメ等の映像表現等にも用いられる。

3DCGの原理



3次元CGの基本原理は3点座標を持つ対象物を2次元座標の仮想スクリーン上に透視投影する事である。

まず[図1]のような3次元座標をディスプレー内に考える。原点に視点があるとして座標内の3点の座標を持つ点Aはどのように見えるだろうか。

[図2]のように原点と点Aの間にスクリーンを置いた場合、スクリーン平面上に映し出される点Aの投影座標は h=x*(s/z)、v=y*(s/z) で求められる。zが大きくなれば、スクリーン上の点Aは限りなく原点に近付く。つまり遠くのものは小さく見えるわけである。スクリーンを置く座標sは大きくなればパースが緩く、小さくなればパースがきつくなるので、レンズの画角を表現する事が出来る。

これが透視投影の原理であり、三点座標を持つ点をそれぞれ結べばワイヤーフレーム画像が、結んだ点から面を作ればポリゴンによる表現が可能となる。

3DCGの制作工程

3DCGの制作は次のような行程に分ける事が出来る。

  1. モデリング
  2. シーンレイアウト設定
  3. レンダリング
  4. 編集・レタッチ

モデリング(Modeling)

仮想3次元空間上に個々の物体の形状をつくる。多くの3DCGソフトウェアでは、一つの面を三角形や四角形といった多角形の集合として表現する。三角形と四角形しか扱えないソフトウェアも多い。これらの多角形はポリゴン(英語で多角形の意)と呼ぶ。各形状はポリゴンの集合で表現される。モデリングで作られた形状をモデルやオブジェクトと呼ぶ。

他に面を定義する方法としては自由曲面がある。自由曲面はNURBS曲線、スプライン曲線、ベジェ曲線などで曲面を構成する方法で、ポリゴンのみでモデリングされた形状に比べ滑らかで正確な形状が得られる。ポリゴンのみでモデリングすることを、ポリゴンモデリングと呼んで、自由曲面を利用したモデリングと区別することがある。

形状が出来たら、オブジェクトに材質(マテリアル)を設定する。材質を設定しなければ、オブジェクトはただ一様に光を反射するだけの均質な物体になる。多くの3DCGソフトウェアでは、色、透明度、反射、屈折率、自己発光、バンプ、ディスプレイスメントなどの設定項目がある。

シーンレイアウト設定

モデリングで制作したオブジェクトを、仮想3次元空間上に配置する。現実世界と同様、光源も配置しなければ何も表示されない(黒一色の画像が出力される)。また、仮想的なカメラを配置する事で視点を設定する。これらを配置・設定した仮想的な舞台をシーンと呼ぶ。

レンダリング(Rendering)

レンダリングは、これまでに設定したシーンから、仮想的なカメラに写されるはずの画像を生成する工程である。オブジェクトの形状や位置、光のあたり具合などをコンピュータが計算し、最終的な画像が生成される。レンダリングのアルゴリズムには、それぞれ処理速度や品質の違う多くの種類があり、用途に合わせて使い分ける。各種の設定を済ませレンダリングを開始した後は、レンダリングが終了するまで制作者がすることは特にない。一般にレンダリングには多くの時間を要する。シーン内に多くの形状があったり、高度なレンダリングアルゴリズムを利用している場合、数時間から数日かかる場合もある。ゲームなどリアルタイムにレンダリングしなければならないときは、単純で高速なレンダリングアルゴリズムを適用したり、シーンの総ポリゴン数を少なくするなど、大きな制限が加えられる。映画など大規模な制作現場では、同時に複数のコンピュータにレンダリング処理をさせて、計算時間を短縮する事がある。

レンダリング手法によっては空気による遠近法・光の照り返しなども計算される。そういった複雑な計算をするレンダリング処理は専用回路(GPU)で行われることも多い。高い対話性と双方向性が得られるので、ゲームに用いられる場合はこの形態を取る。

レタッチ(Retouch)

レンダリングで得られた画像が、完全に制作者の意図したものになるとは限らない。PhotoshopやAdobe After Effectsなどのフォトレタッチソフトウェア等で、コントラストや色味を手直しする事もある。

制作のための技術

3DCG制作の各工程で用いられる様々な技術について解説する。

テクスチャマッピング(Texture mapping)

3DCGのモデルに画像を貼り付けることをテクスチャマッピング、その貼り付けられる画像をテクスチャという。テクスチャを貼ることにより、モデリングやシェーダーのみでは表現の困難な、モデル表面の細かな色彩情報や質感などを設定することができる。

テクスチャの貼り付け方としては、単純にカメラ方向からモデルにテクスチャを投影するだけの方法や、UV座標によってモデルへのテクスチャの投影を正確に設定する方法がある。カメラ方向からの単純な投影では、動き回るキャラクターのテクスチャがズレる事が回避できないため、現在では、3DCGを扱う者にとって、モデルにはUVをきちんと設定するのが常識である。

反射の強度を設定する反射マッピング、小さな凹凸を擬似的に表現するパンプマッピング/ディスプレイスメントマッピング、透明度を設定する透明度マッピングなどがある。形状の表面に画像の情報を加えることによって、表面の模様や質感が表現されて、より現実的な画像になる。

特にコンピュータゲームにおいては、リアルタイムで3DCGキャラクターを描画する必要から、極力少ないポリゴンで作成されたモデル(ローポリゴンモデル)に、ディテールや陰影等を描き込んだテクスチャを貼り付ける手法が行われている。

バンプマッピング

モデルの表面の法線の方向を変化させることによって、擬似的に凹凸を表現する技術。少ないポリゴンで細かな陰影をリアルに表現できる利点があるが、実際に表面に立体的な凹凸があるわけではないので、ズーム時等に違和感のある画像となる。

ディスプレイスメントマッピング

3Dモデルの頂点を実際に表面に対して上下に移動させて凹凸を表現する技術。バンプマッピングに比べて、実際に立体的な凹凸となるため違和感の無い画像が得られるが、表現する凹凸に応じてポリゴン数が増大する欠点がある。

ハイパーテクスチャ

バンプマッピングによる凹凸の表現はあくまで擬似的に陰影を表現し、またディスプレイスメントマッピングによる凹凸は3Dモデルそのものの頂点を移動させて凹凸を表現するだけであるのに対して、3Dモデルに立体的な濃度関数を掛け合わせることにより、小さな凹凸は元より、深い溝や貫通した穴のような大きな構造も表現する事が出来る技術。

パーティクル(Particle (system))

ポリゴンはあくまで多角形の面なので、モデルにはっきりとした表面が無かったり、モデルの数が膨大であったり、動きが不規則な煙や炎などを表現するのには不向きである。また、毛髪や草木など、ポリゴンで表現しようとするとその量から大変な人的労力やリソースが必要になるものがある。パーティクルはこれらの問題を解決するための技術である。パーティクルはこれらを微小な粒子の集合として表現し、確率モデルでその動き・形状を処理する。高度なモデリングまたはレンダリングソフトウェアで扱うことが出来る。

サブディビジョンサーフェス(細分割曲面)(Subdivision surface)

大まかにモデリングされたポリゴンメッシュをメモリ上で細分化して、滑らかで継ぎ目の無い形状にする技術。少ないポリゴン数で形状を滑らかに表現出来るため、編集や変形も容易になる。ただし、工業用CADなど形状に高い精度が要求される時には利用出来ない。

ブーリアン

複数のオブジェクトどうしを集合演算する技術。他の形状と結合する(和)、一方の形状から他方の形状を削り取る(差)、重なっている部分のみを形状として抜き出す(積)事等が出来る。

メタボール

複数の3次元座標上の点を中心として濃度分布を設定し、濃度の閾値を形状の表面とする技術。球状の形状が引き付けあうようにみえる融合と、反発しあうように見える反転融合がある。正確な形状を作ることは難しいが、有機的な形状を少ない制御点で作るのに向いている。3DCG特有の概念ではなく、2Dの画像表現にも使われることもある。 レンダリングに必要な計算量は多くともメモリの使用量が少ないのが利点だったが、現在ではそれらのリソースが充実している上、流体力学の計算法も程度進歩しているため、映像制作の現場で見た目のチープなメタボールはほぼ使われることのない技術になっている。

当初はその呼び名の通り球体を基本としていたが、その後改良が進められ、球体以外の形状も利用できるようになり、有機的な形状をモデリングする技術として活用されている。

インバースキネマティクス(逆運動学)(IK(inverse kinematics))

人間など多くの関節を持つ動物において、関節の末端部分の位置は常にその親となる部分の位置と角度に依存している。そのため、通常では関節の末端部分の位置を求める場合においてモデルの中心から末端にかけて順番に関節の角度計算をしていくことが理屈上でも正しい。しかしその手法で実際にアニメーションを作成する場合、関節の末端部分の位置の変化を求めるためには複雑な計算をモデルの中心から全て順方向に再計算しなおさなければならないため非常に非効率的なものとなる。この問題の解決の為、末端部分の位置を先に決めてその関節の末端位置を実現するための親となる関節の角度を簡易的に逆計算する手法が考え出された。これがインバースキネマティクスと呼ばれる手法である。
股−ひざ−足のような形状を想定してみると、足の裏が自転車のペダルにくっついたままペダルが回転運動をするアニメーションを作る場合に、ペダルの回転運動に合うように股・そしてひざや足の角度の変更を行なっていくのではなく、足部分の移動に追随する形で、逆に足−ひざ−股の順に各関節の動きを順次割りだして決定する方が、見た目も自然なアニメーションが作成出来る。

ライティング(照光)(Lighting)

3次元空間上に光源を設定することをライティングと呼ぶ。光源によってモデルは可視物となる。光源には次のような種類がある。

  • 点光源: 電球のように、一点から光を全方向に放射する光源。光源から離れるにつれて、光は弱くなる。
  • スポットライト: 点光源の変形で、角度を限定して光を放射する光源。
  • 平行光源: 太陽のように、無限遠からの光をシミュレートする光源。太陽は厳密には無限遠にあるわけではないが、地球からはほとんど平行光源のように見える。点光源のように距離によって光の強さが変化することはなく、一定である。
  • 環境光: 全ての物体を均一に照らす光源。間接光を擬似的に表現する。処理が高速だが、影が一様な輝度になってしまうなど不自然ではある。
  • 天空光: 晴天の空のように、仮想の天球全体から光を放射する光源。環境光と似ているが、ラジオシティと組み合わせることで自然な間接光が表現できる。
  • IBL(Image-Based Lighting): シーン全体を2次元の画像で覆い、その画像を光源として利用する手法。同じ画像を同時に背景として用いる事により、オブジェクトが周囲と非常によく「馴染んだ」、フォトリアルな画像を作り出すことができる。なお、ここではHDRI画像を用いるのが一般的である。

テセレーションとポリゴンメッシュ

3DCGソフトウェアによっては、球や円柱などの単純なオブジェクト(プリミティブ)を、ポリゴンではなく中心点や半径、高さといった数値で扱う場合がある。これらの細部を編集したりレンダリングする場合は、ポリゴンメッシュに変換する必要がある。これをtessellationと呼ぶ(tessellateはモザイク模様にするという意味)。ただし、オブジェクトが本来持っていた形状情報である球体、円錐などのような抽象的な表現は失われてしまう。

反射とシェーディングモデル

現在の3DCGの多くは単純化された反射モデルを利用しており、これをPhongの反射モデル(Phong reflection model) と呼ぶ(Phongシェーディング(Phong shading)とはまた違う技術である)。

また光の屈折では屈折率が重要な概念である。多くの3DCGソフトウェアでは、屈折率 (index of refraction) を略してIORと表記する。

シェーディングとは、物体の陰影を計算することである。シェーディングには次のような種類がある。

フラットシェーディング (flat shading)
ポリゴンの法線ベクトルと光源との角度から各ポリゴンの色を算出する。一つのポリゴンは一色に塗りつぶされる。単純なアルゴリズムなので計算速度が高速であるが、ポリゴンの継ぎ目ごとに不連続的に色が変化するため、滑らかには見えない。コンスタントシェーディング (constant shading) とも呼ぶ。
グーローシェーディング (gouraud shading)
オブジェクトの各頂点の法線ベクトルを求め、頂点間は一次補間してピクセルの色を算出する。ピクセル間の継ぎ目は目立たなくなる。gouraudは考案者の名前。
フォンシェーディング (phong shading)
オブジェクトの各頂点の法線の一次補間から、各ピクセルにおける法線を求めて、それを元に最終的なピクセルの輝度を算出する。グーローシェーディングにおける光沢の不自然さを改善する。Phongは考案者の名前。

Zソート法

隠面消去方法の1つ。 ポリゴンの座標(大抵は中心点)を基準に、画面の奥(視線からもっとも遠いポリゴン)から、全てのポリゴンを順番に描画する。 実装が簡単であり、ポリゴン数があまり多くない場合は、消費メモリが少なく、非常に処理が高速できる。 但し、ポリゴンが交差した場合、正しく表示することができない(いわゆるZファイティングのちらつきがよく発生する)。 また、ポリゴン数が増えた場合は、ポリゴンをソートするコストがかかるため、Zバッファ法と比較して、あまりメリットが無くなる。 Zバッファ法と異なり、半透明ポリゴンの奥行に関しては、ある程度正しく扱える。

Zバッファ法

隠面消去方法のひとつ。多数のポリゴンが重なった場合、奥のポリゴンが手前に描かれてしまうような不都合が生じることがある。 これを防ぐ為に、各ポリゴンを描画する際、各画素について視点からの距離を全て記録し、最も視点に近い画素だけを描画する。アルゴリズムが簡単なため高速な処理やハードウェア化ができる利点があるが、メモリを多く消費する欠点もある。また、半透明ポリゴンは、Zバッファ法だけでは正しく処理出来ない。ゲームやCADソフトウェアのプレビュー表示など、リアルタイムでの描画によく利用される。Zバッファとは深度を記憶するメモリ領域の事。

スキャンライン(Scanline rendering)

スクリーンを横一行ごとに分割して、その一行ごとに深度を計算してレンダリングする手法。透過を表現したり、シェーディングと併用することで陰影も表現できる。スキャンラインとは走査線を意味する。高速だが、得られる画像の品質は基本的にレイトレーシングよりも劣る。

レイトレーシング(Ray tracing)

レイトレーシングは、視点から光源までの光を追跡することでレンダリングする手法。視点から描画する各画素の方向へ直線を伸ばし、物体と交錯する可否を数学的に判定する。照度は光源との方向ベクトルで計算する。反射と屈折は反射率および屈折率をもとに再帰的に探索を繰り返す。物体との交錯がなくなれば計算は終了する。スキャンラインでは得られない反射や屈折などの表現が可能になる。フォトリアリスティックな画像が得られる反面、大変なレンダリング時間が掛かる。そのため屈折の計算処理については、簡略化あるいは制限を設けるのが一般的である。

ラジオシティ(Radiosity)

ラジオシティは、各ポリゴンに光のエネルギー量を持たせて形状の相互反射を計算することで、間接光(やわらかい光の回り込み)などを表現する技術。計算に膨大な時間が必要になるが、完全拡散面で構成されるシーンでは、一旦物体相互間の光の反射を計算し終えれば、物体が移動しない限りその計算結果を保存して再利用することができる。照明工学の分野で発達した技術を3DCGのレンダリングに応用した。

フォトンマッピング(Photon mapping)

フォトンマッピングは、光をモデル化したフォトンを光源からばらまいてフォトンマップを作成し、次に作成されたフォトンマップに対し、光線追跡法を適用することでレンダリングする手法。計算量を抑えつつ、物体や媒質の質感や透明感を表現できる。ラジオシティと同様、計算結果の再利用が可能。

パストレーシング(Path tracing)

通常のレイトレーシングと同様にカメラから視線を飛ばし、オブジェクトと交わった点を始点としてさらに大量に2次視線を飛ばす。ここで得られた色や明るさを平均してその点の色とする。物体表面での光の乱反射を再現できるが、明暗差が大きいシーンではノイズが出やすい。

サーフェスモデルとボクセル

2次元の画像の最小単位をピクセルと呼ぶのに対し、3次元座標上に取り入れた最小単位をボクセル (voxel) と呼ぶ。多くの3DCGソフトウェアで採用されているのが、物体の表面のみを処理するサーフェスモデルであるのに対して、ボクセルは中身を持ったボリュームモデルである。液体や雲、煙といった流体計算で主に活用されている。現在では、炎、爆発、溶岩、髪の毛といった表現までも可能にしている。ボクセルモデルでは、正確な形状を作るにはボクセルの密度を上げなければならず、またメモリを大量に必要とする。

医療分野で、患部の状態を表現して、断面図を作成する場合などにも有効である。

レンダリングに必要なオブジェクトを選別し、レンダリングを効率的に処理するために利用されることもある。これをボクセル分割と呼ぶ。

クロス(Cloth)

衣服を始め、布に関する多くの表現を可能にするための技術。衣服を着たキャラクターの動きや風の影響による布の形状変化のシミュレーションを行ない、デザイナーが手付けで布のアニメーションをつける負担を軽減させる。最終的には、人間の皮膚を始め、あらゆる事象をシミュレーション可能にすることが目指されている。

クロス(Cloth)の基本的な考え方としては、メッシュを擬似的なバネのようなものでリンクさせ、伸縮制限を持たせることによって、布の伸縮・弾性を再現させる。この質感再現のために、技術者によって様々な計算方法が提案されている。

クロスシミュレーションが大々的に使用された最初の映画を挙げると、ネズミが主役のCG映画『スチュアート・リトル』がある。

キャラクターにクロスの衣服を着せる制作手法としては、「擬似的な型紙を作り、結合し、キャラクターに被せる」といったMayaに実装されている手法と、Syflexのように「普通のモデリングと同様な衣服のモデリングをし、クロスに変換する」という2種類の方法に大別される。

Syflexはスクウェアによる映画『ファイナルファンタジー』のプロジェクトでジェラール・バネル (Gerard Banel) が開発したクロスシミュレーションをさらに発展させたもの。非常に高速で安定しており、MAYAのように布同士が反発して暴れるようなおかしなシミュレーション結果を出すことは少ない。

映画そのものは振るわなかったが、このプロジェクトで考案された制作管理の手法、開発された多くのプログラムの技術的貢献は非常に高く、このプロジェクトに関わっていた様々なプログラマー、デザイナーがあちこちの映画プロダクションに移り、現在のあらゆる映画のVFXを進歩させている。

3DCG用API

テレビゲームやパソコンゲームでも3DCGが一般的になっている。3DCG専用のAPIは主にパソコンゲームでビデオカード(グラフィックスカード)を利用するとき、プログラマが抽象的な方法でハードウェアにアクセスする方法を提供し、プログラマの負担を軽減する。これらのAPIはコンピューターグラフィックスハードウェアメーカーに不可欠である。次のようなAPIは特によく使われる。

  • OpenGL(3DCG制作に適しているAPI)
  • Direct3D(DirectXの一コンポーネント,3Dのゲームに適している)
  • RenderMan

各国の3DCG

世界で最も3DCGの技術が進んでいる国はアメリカである。ハリウッドの映画産業がバックボーンにあり、ピクサーなどの制作会社によって3DCGアニメが大量に制作されている。また、コンピュータゲームに於いてもパソコンが主流のため技術革新に対応しやすく、かつてのゲーム大国だった日本を大きく引き離していると言われている。

日本はセガの『バーチャファイター』シリーズ、プレイステーションなどの家庭用ゲーム機といったコンピュータゲームでの3DCGの採用は早かったものの、家庭用ゲーム機中心だったために技術革新が進まなかったと言われている。

日本はアニメ大国であるが、アニメ制作会社は零細な所が多いために3DCGの導入が進んでいない。漫画原作が多いために3DCGとの親和性が悪いのも理由だと考えられる。親和性が良いと思われるロボットアニメでも手描きのロボットを好むファンが未だに多い。

日本での3DCG文化の遅れの理由を平面的な絵を好む国民性に求める向きもある。また動きについても止めや見得といった一瞬間を誇張表現する伝統がある為、連続的な動きを得意とする3DCGは必ずしも相性が良くない部分がある。


inserted by FC2 system