DANGER

本ページは 2022年度に開催された3DCG体験会の資料です。 一部情報が古い可能性があります。 2023年度版の資料は http://3d-trial-2023.trap.gamesopen in new window からアクセスしてください。

3DCGはどう作るの?

目標

3DCG制作の具体的な手順を知る。

一般的な3DCG制作では大体下のような流れ。

  1. 立体物を用意する
  2. 立体物を動かす
  3. カメラやライト等の準備
  4. 画像に変換する
  5. エフェクト等で調整

1. 立体物を用意する

コンピュータの演算によって3次元空間内の仮想的な立体物を2次元である平面上の情報に変換することで奥行き感(立体感)のある画像を作る手法

(引用:https://ja.wikipedia.org/wiki/3次元コンピュータグラフィックスopen in new window)

この定義における"3次元空間内の仮想的な立体物"のことを一般的に3Dモデル(3D model)と呼ぶ。 3Dモデルを作る過程をモデリング(modeling)と呼ぶ。

TIP

本来"モデリング"と言う時は"立体物の作成過程"のみを指す。Vtuber等の流行で"モデリング"という単語が独り歩きしてる感あるけどモデリングは3DCGのほんの一部に過ぎない。

3Dモデルの構成要素は大きく分けてポリゴンメッシュマテリアルの二つ。

ポリゴンメッシュ

3Dモデルのポリゴンメッシュ(polygon mesh)で...つまり多角形網目で表現される。 ポリゴンメッシュはさらに以下の3つの要素で構成される。

  • 頂点(Vertex)
    • 位置のデータ(3次元)を持つ点
  • (Edge)
    • 2つの頂点間を結んだ線
  • (Face)
    • 3つ以上の辺で囲まれた多角形

頂点・辺・面の例

下図の黒い点が頂点、黒い線が、白い部分は

実際の3Dモデルにおける頂点・辺・面の例

このように頂点や面を追加したり、 位置を調整してポリゴンメッシュを作るのが モデリングの第一段階。

マテリアル

3Dモデルの材質マテリアル(material)によって規定されている。

マテリアルは、材質に関する設定をまとめたもの。

  • (アルベド/ベースカラー)
    • どんな光を反射するか?
  • 表面の粗さ(ラフネス/スムースネス)
    • ざらざらか?つるつるか?
  • 金属っぽさ(メタリック)

などの描画に必要な情報(と、 シェーダー)を内包している。

シェーダーについて

シェーダーは各設定値を元に描画色を計算するスクリプト。今回の体験会ではシェーダーについては深く触れないが、

「"色(0.0, 0.9, 0.9), 粗さ0.5, メタリック0"という設定で、白い光がこっちの方から当たっているから反射を計算して...このピクセルの色は"(0.5, 1.0, 1.0)"だ!」

みたいな計算をしている。シェーダーについて詳しい話をしようとするとそれだけで講習会が5個ぐらい必要になるので、より詳しい話を知りたい方はググってください...

シェーダーはがっつりプログラミングの領域なので、「お絵描きはできないけどプログラミングできるのでこれで芸術作品作る」みたいな人もいっぱいいる→ "#つぶやきGLSLopen in new window"などでググるとおもしろい

ググりワード:シェーダー, 頂点シェーダ―, フラグメントシェーダー, GLSL

下図はそれぞれ異なる設定を与えたマテリアルを、同じ球体の3Dモデルに適用した例。設定した値によって見た目が変化しているのがわかる。

異なるマテリアルを適用した球の画像

まとめ

3DCGで描画する"立体物"を3Dモデルと呼び、これを作成する作業を3Dモデリングと呼ぶ。 3Dモデルは主にポリゴンメッシュ(形のデータ)とマテリアル(材質の設定)で構成される。

2. 立体物を動かす

映像を作成する場合は、3Dモデルの位置や形状を時間に応じて変化させる(アニメーションさせる)必要がある。アニメーションの設定では主にキーフレームアニメーションスケルタルアニメーションという仕組みを用いる。

フレーム

ここでは下図の様な、ボールを下方に移動させるアニメーションを作る場合を考える。

ボールが移動するアニメーション

このようなアニメーションを作成する場合、ボールの位置を少しずつずらした複数の画像を用意し、これらを素早く切り替えて表示することで動いているように見せる。パラパラ漫画と同じ原理。

ボールが移動するアニメーションの各フレーム

この1枚1枚の画像をフレームと呼ぶ。

例えばTVアニメは1秒間に24枚の画像を素早く切り替えて表示することで動いているように見せている。これを"24fps(frame per second = フレーム毎秒)のアニメーション"と呼んだりする。

3DCGでもアニメと同様に、複数の画像を素早く切り替えることで動きを表現する。

しかし、すべてのフレームで3Dモデルの位置を設定するのはとても大変。30秒・24fpsの動画を作るだけでも30×24=720枚もの画像を作る必要があり、全てを手動で作成するのはめんどくさい。そこで、キーフレームアニメーションと呼ばれる手法を利用する。

キーフレームアニメーション

キーフレームアニメーションは、重要なフレームだけでモノの動作を指定するアニメーション作成方法。

キーフレームアニメーションの概要

"1フレーム目ではボールをこっちに置く"、"10フレーム目ではボールをあっちに置く" のように、2つの重要なフレームだけでモノの動作を指定する。 この重要なフレームをキーフレームと呼ぶ。

2~9フレーム目でのボールの位置はエディタ/ツールがイイ感じに補間してくれる。 この仕組みがキー(Key(大事な))フレーム(だけ指定する)アニメーション。

補間の指定

補間はアニメーションカーブ(ファンクションカーブとも呼ばれる)で指定する。 時刻に対する状態(位置や回転、大きさなど)を曲線で指定して補間する。

滑らかな入り抜き直線的な移動ばねみたいな移動
滑らかな入り抜きのグラフ直線的な移動のグラフばねみたいな移動のグラフ
滑らかな入り抜きのアニメーション直線的な移動のアニメーションばねみたいなアニメーションのアニメーション

スケルタルアニメーション

アニメーションの制作過程では、モデルの位置や回転、大きさを変化させる以外にも、モデル自体を変形させたいことがある(というかほぼ確実に必要になる)。

ポリゴンメッシュの変形には主にスケルトンブレンドシェイプが用いられる。ここではスケルトンによる変形手法であるスケルタルアニメーションについて説明する。

アニメーションさせるために、ポリゴンメッシュの頂点 1 つ 1 つの位置変化を細かく指定するのはめんどくさい。

スケルトン(skeleton)を用いると、人間や動物、ロボットアーム等、関節を持ったポリゴンメッシュを楽に、イイ感じに変形することができる。

スケルタルアニメーションの概要

スケルトンの例

スケルトンはボーンジョイントで構成された骨格のこと。このスケルトンとポリゴンメッシュを連動させる(スキニングする)ことで、ポリゴンメッシュを変形させることができる。

これと先ほどのキーフレームアニメーションを用いて、"1フレーム目では腕のボーンをこの角度に、10フレーム目では..."などと指定するとポリゴンメッシュの変形をアニメーションできる。

スケルタルアニメーションの例

スキニング時の調整

スキンウェイトは"どの頂点が","どのボーンに","どれぐらいの割合で"追従するかを決める重みのこと。実際にスキニングを行う際は各頂点のスキンウェイトを調整することで、変形の仕方を調整する。

スキンウェイトの違いによるモデルの変形の違い

スキンウェイトを変更すると、ボーンの変形が同じでもモデルの変形の仕方が変化することがわかる。

まとめ

3Dモデルを動かすことをアニメーションさせると言い、アニメーションはフレーム毎に少しずつ画像を変化させることで表現する。

アニメーション作成では"大事なフレームでモデルの位置や回転を指定する"キーフレームアニメーションが主に利用され、モデルを変形させる場合は主にスケルタルアニメーションが利用される。

3. カメラやライト等の準備

立体物の準備ができたら、それを撮影するカメラと、それを照らすライトを用意する。

3DCGにおいても、現実世界のカメラ、ライトと同様の機能を持つ仮想的なカメラ、ライトが登場する。

4. 画像に変換する

立体物とライトとカメラの情報から、コンピューターがひたすら計算して画像が完成する。

この過程をレンダリング(rendering)という。レンダリングは、その計算方法(アルゴリズム)によっていくつかの種類に分類される。計算方法により、「計算時間はかかるが高品質な画像を生成できるレンダリング」「画像の品質は低いが、計算時間が非常に短いレンダリング」等、それぞれにメリット・デメリットが存在する。

レンダリング手法の例
  • レイトレーシング(Ray Tracing)
    • 現実の光が直進・屈折・反射して我々の目に届くのと同様に、光の軌跡を再現することで画像を生成するレンダリング方法。
  • ラスタライズ
    • ポリゴンメッシュの位置情報を元に、「頂点位置がここなら、カメラから見た時にはこの位置に見えるだろうな」といった計算を行う方法。

ここでは、レンダリングを行うタイミングについて簡単に説明する。

プリレンダリング

CGを事前にレンダリングすることをプリレンダリング(pre-rendering)という。 主にインタラクティブ性が必要無い場面で用いる。

事前にハイスペックなマシンでレンダリングをするので、再生機器のスペックは必要ない(画像/映像の表示さえできればよい)。例えばテレビCMで流れる3DCGは、テレビ自身が計算を行ってレンダリングしているわけではない。

また、計算時間を気にする必要が無いので、比較的高品質な画像を提供することができる。

例:映画、アニメ、CM、ゲームの挿入映像(プレイヤーは操作できない)

リアルタイムレンダリング

リアルタイムにレンダリングして表示することをリアルタイムレンダリング(real-time rendering)と呼ぶ。

ユーザーの操作に対してリアルタイムに内容を変化させたい場合に用いる。再生機器が自身でレンダリングをする必要がある。

レンダリング時間を短時間で終わらせなければならない(=計算量を減らす必要がある)ので複雑な表現をするには工夫が必要。

例:ゲーム(PCやスマホがレンダリングを行う)、Vtuberの配信(配信者のPCがレンダリングを行う)

5. エフェクト等で調整

レンダリング後の出力画像をそのまま使うのではなく、多くの場合はエフェクトを追加したり、別素材と合成する。

プリレンダリングの場合はレンダリング後の画像・映像をAfter Effectsというソフトウェアで処理することが多い。 色味の調整やレンズ効果、ブルーム、光芒等の追加などを行う。ポストエフェクトと呼ぶことが多い。 他のレンダリング結果との合成、手書きの2DCGとの合成なども行う。合成処理を特にコンポジット(composite)と呼ぶ。

リアルタイムレンダリングの場合も同様にポストエフェクトを掛けることは可能だが、あまり複雑な処理はできない(時間的な制約がある)。


まとめ

制作の流れの再確認

  1. 立体物を用意する(モデリング)
  2. (動画を作る場合は)立体物を動かす(アニメーション)
  3. ライトカメラ等の準備(ライティング)
  4. 画像変換する(レンダリング)
  5. エフェクト等で調整(コンポジット/ポストエフェクト)

実際の現場ではこれらの各作業を分担している。

TIP

まともな作品が完成するまでに必要な工程がめちゃくちゃ多いので、一人で0から始めるのはかなり大変。少しずつ挑戦しよう。