リアルなCGの作りかた
映画、アニメ、CM、ゲームなど、今日では私たちが目にする様々な場所でCGが使われています。
CGがなんとなく安っぽいつくりの映像の代名詞だったような時代は今は昔、現在では実写と見間違うようなCG映像がいたるところで使われています。
このようなCG映像はどのように作られているのでしょうか?
CGによる映像づくりが始まってから、様々な描画手法が考案漁れました。
今のリアルタッチなCG映像には多かれ少なかれ物理ベースレンダリングという手法が用いられています。
物理ベースレンダリングはPBR(Physically-Based Rendering)とも呼ばれ、その名の通り、現実世界の物理的・光学的に正しい見え方を質感、光源、カメラ(視点)の設定を調整することで模倣するという手法です。
光源の設定が同じでも、質感の設定を変えれば当然見え方が変わります。同じように、質感の設定が同じでも、光源の設定を変えればカメラに映る映像が変わる。そのような実際の写真撮影の様な考え方で映像や画像を作成することができます。
そのような物理的に正しいという特徴からも、リアルタッチなCG映像づくりや実写とCGの合成映像づくりと非常に相性がいいことが分かりますね。
今回は物理ベースレンダリングで考慮される要素のうち、質感設定について簡単にご紹介しようと思います。
最もシンプルな物理ベースレンダリングで使用される質感設定で使用されるパラメーター(設定項目)はたったの3つしかありません。
この三つの値を操作するだけで、あらゆる物体をとは言わないまでも現実に存在する様々な質感を表現することができます。
アルベド(Albedo)
一つ目は「アルベド(Albedo)」です。場合によってはBaseColorやMainColorと呼ばれることもあります。
大雑把に言えば物体の色で、RGBなどで表現することが多い値ですが、正確には最終的な色を設定するのではなく「どのような色を反射する質感か」を設定する項目です。
メタリック(Metallic)
二つ目は「メタリック(Metallic)」です。
この値はその質感が金属らしいか、そうでないかを表現するために設定され、0~1や0~100などの単一の数値で表されます。
例えばタイヤのゴムの様な素材であればメタリックの値は0となり、鏡の様なものになれば100になるわけです。
多くの場合、金属か金属でないか中途半端な微妙な物体というものは無いので、0か100かのはっきりした設定で行われることが主となっています。
ラフネス(Roughness)
三つめは「ラフネス(Roughenss)」です。
この値はその物体の質感がツルツルしているか、そうでないかを設定するものです。メタリックと同じように単一の数値で設定されます。
車のボディの様にツルツルしているものはラフネスの値を低く、布の様な表面がツルツルしていないものはラフネスの値を高く設定します。
ラフネスが低いほどツルツルする為、周囲のものがよりくっきりと映り込みます。
ツルツルしているかどうかとは、つまりは表面に微細な凹凸があるかどうかということですが、実際にCGモデルの表面に目に見えないほどの小さな凹凸を作成するようなことはせず、ラフネスの値を与えることでこの物体はどれだけ光を拡散してしまうのかを表現しているのです。
物理ベースレンダリングの手法の中であれば、この三つの値をいろいろ変更するだけで、光源からの光や周囲環境の影響が計算されて様々な質感表現が可能になるのです。
もちろんこの三つのパラメータだけですべての物体を表現しきることは不可能です。
ガラスを表現したければ透明度や屈折率などの設定も行う必要があります。
人間の肌の様な不透明ながらも光が内部で拡散し、複雑な色合いを出すものはそれに応じた設定と計算がさらに必要になります。
ですがすべての基本はこの三つのパラーメータが主体となっています。
テレビなどでCG映像を目にした際には、それがどのように作られているのかについて思いをはせてみるのも楽しいかもしれませんね。