リアルタイムCG入門編(前篇)
今回でCG入門編は最終回です。CG入門の最後はリアルタイムCG表現です。
前篇では主にリアルタイムで綺麗に描画するための最新の手法とモデリングに関してまとめていきたいと思います。
後編では実際にリアルタイムエンジンでモデルを動かすために必要な項目を抑えていきます。
リアルタイム(レンダリング)とは?
皆様はリアルタイムレンダリングと聞いてどのようなコンテンツを思いつきますか?
ここでのリアルタイムとは、ビデオゲームのようなユーザーレスポンス(即時反応性)のあるCGコンテンツのことを指しています。インタラクティブメディアコンテンツ、MITではタンジブルインターフェイスなんて即時性のコンテンツとハードウェアを融合させた研究もされています。
リアルタイムでCGを動かす技術は家庭ゲームからスマホアプリ、ニュース番組の背景や天気予報、博物館の展示用まで色々な用途に使われていますね。
リアルタイム用3Dモデルについて
リアルタイム用のモデルは映像用のモデルと基本的には代わりませんが、とにかくできるだけ軽くするのが望ましいです。
ある程度軽くしてもスムージンググループ(ソフトエッジ)の設定とノーマルマップのおかげで、かなりリアルに見せることができるはずです。
ゲームモデル用のローポリを作成する際の注意点はサブディビジョンサーフェースが使えないことにあります。
バンプマップもほとんど使えないので、輪郭線がカクカクして目立たないことを目標にモデルを作成しましょう。
一昔前はローポリをはじめに作り、その後ZBrushでディティールを付ける方法が主流でしたが、
最近ではパソコンやソフトの性能が上がったこともあり始めからZBrushなどのスカルプトソフトでハイディティールなモデルをガシガシ作り、静止画用のハイディティールなモデルが出来た後に3DCoat等で映像用、ゲーム用のローポリモデルを作成することが主流になりました。
リアルタイム用の3Dモデルはゲームエンジン上で軽快に動かすことが目的になりますので、ゲームエンジンに合わせたフォーマットで作成する必要があります。
ゲームエンジンについて
ゲームエンジンとは?
ゲームエンジンと聞いて何を思い浮かべるでしょうか?ゲーム好きな方ならすぐにわかると思いますが、ゲームツクールというオリジナルゲームを簡単に作れるゲームソフトが90年台に流行しました。
ゲームエンジンというのはゲームを簡単に作るための開発ソフトです。
2010年頃まではゲーム外社が社外秘にしており企業秘密の塊でしたが、UDKやUnityというソフトが無償公開したことを皮切りCryEngine等の一部のゲームエンジンが破格の料金と使用条件で公開されはじました。
PBR(PhysicalBasedRendering)は今が旬!
CryEngineの描画は元々描画が綺麗でしたが、Unityも2015年にUnity5のアップデートを皮切りに、UDKはUE4(UnrealEngine4)と名前を変え、PBR物理ベースのライティング環境に変化しました。
これは、現実の世界と同じ物理法則でオブジェクトをリアルタイムレンダリングできる方法で、2015年前後からモデリングのワークフローが大きく代わりました。
PBR:物理ベースレンダリングとは??
物理的に正しいことに徹底的にこだわったシェーディングの仕組みです。
・光の質量保存則について。
PBRの基本原理です。光の光源(一番明るい部分)の明るさが1だとすると、物体の表面の反射光が1を超えるはずがないよねっていう仕組みです。Bidirectional Reflectance Distribution Function(双方向反射率分布関数)の概念を導入してて、現実世界と同じように跳ね返った光はどんどん減衰していきます。
今まではマシンのスペックが足りずに、擬似的に光らせていたためウソっぽい絵になりがちでしたが最近は現実世界と同じ方法で描画しているので実写さながらです。
・PBRについて
物体の質感を表すためにオブジェクトに必ず適応する必要のある質感設定を「マテリアル」と呼びますが、PBRに対応したマテリアルは以下の4つの項目で現実世界にある全ての質感を表現することができます。
ディフュース(物体そのものが持つ色)、
ラフネス(ザラザラしている度合い、周囲の反射を濁す度合い)、
メタル(周囲を反射する金属っぽさの度合い)、
ノーマル(表面の細かい凹凸)
・HDRレンダリングについて
ハイダイナミックレンジイメージHDRIを光源に用いたレンダリング方法です。
360度の パノラマ写真を球体や四面体に貼り付け、ボックスライト(光源)として使用するものです。
現実世界と同じライティングができるので実写合成等やプロダクトレベルのレンダリングで使われますが、最近ではリアルタイムレンダリングの実写的な照明の為にも使わています。
3Dペイントについて
PBRについて前述しましたが、PBRに対応したハイエンド機向けのゲームモデルを作成するには、複数のテクスチャを書き出す必要があります。
しかし、金属っぽさや表面の粗さ、ノーマルマップといったヨクワカラナイテクスチャをPhotoshopで手描きで表現するのは無理がありますよね。
ここではテクスチャワークについてのお話をしていこうと思います。
2Dベースで行われていた第一世代のテクスチャワークについて
第一世代のCG制作ではUV展開後にUVのガイドラインを出力し、フォトショップで手作業で色を塗っていました。3Dモデルに直接色が塗れるわけではなかったため、実際に3Dソフトにテクスチャを読み込んで表示してみるまでどんな色味になるのかわかりませんでした。
いまだに3DモデルをUV展開後、フォトショップで手塗りしている方もいらっしゃいますが、特に意図がない限りは正直なところ非効率でナンセンスだと思います。
これはあくまでも僕個人の主張ですが、CGアートワークは常にアナログに近い直感的な環境でなければアーティストの本来の力を発揮できません。
そういった需要からZBrushやBodyPaintといった3D上でペイントするためのソフトが誕生しました。
より直感的な作業環境を理念として開発されたモデリング方法がデジタルスカルプティングであるのに対し、より直感的なテクスチャワークを提供するのが3Dペイントソフトと呼べると思います。
ノーマルマップを中心とした第二世代のテクスチャワークについて
前回、ハイポリとローポリの位置情報の差分を用いて擬似的に凹凸を再現するノーマルマップについてお話しましたが、このノーマルマップの登場が2006年頃。
ノーマルマップの出現を堺にゲームのクオリティが一気に上がりました。
色みを表すディフュースマップに加え、凹凸を表すノーマルマップ、鋭い反射を擬似的に表すスペキュラマップの3種類を主に用いて軽い処理でなるべくリアルに見せるための創意工夫がなされました。
ZBrushやBodyPaint、3D-Coatといった3Dビュー上に直接色を塗ることができるソフトが登場しました。
実は先ほどバカにしてしまったPhotoshopも、実は密かに3Dペイントができるのですが、描画が重く数千ポリゴンのモデルをロードした段階でクラッシュしてしまいます。PSDの画像拡張子はCG業界でも絶対的であり、ZBrushや3DCoatとも連携できますし2Dの画像編集に関しては絶対的な信頼性を誇るソフトです。3D機能に関しては…将来に期待です。
ローポリからハイポリまで複数のポリゴン分轄レベルを保持し、カラーペイントやノーマルマップの作成に向いている。はやくPBR向けのテクスチャペイントに対応して欲しい。ちなみに頂点ペイントのみで、とても細かく分割しないと精細なペイントが出来ないのが欠点。UV画像ベースのペイントモードも実装して欲しい…。
第三世代は物理ベース!PBR環境向けテクスチャワークについて
2014年前後からPBR環境がリアルタイム環境で実現し、PS4やXBoxOneがリリースされコンシューマ機でもDirectX11をフルに活用した第三世代のゲームが求められるようになりました。
シェーダのみならず、破壊アニメーションやクロス、ヘアーシュミュレーションに至るまで何から何まで物理ベースに変化した第三世代のリアルタイム3DCG。
当然必要なテクスチャの種類も代わりました。そこでPBRに対応した3Dペイントソフトについて言及したいと思います。
カラー、ラフネス、メタルネス、ハイト、発光、透過、など数多くのチャンネルを切り替えテクスチャをペイントできるPBR対応の3Dペイントソフトは今が旬のハイエンドツールと言えるでしょう。ここで、PBRに対応したソフトを紹介したいと思います。
・Mari
NukeやModoを開発しているFoundry社製のリアルペイントソフト。
Nukeと連携ができPtexペイントが可能。実写合成に強いと言える。
・3D-Coat
ZBrushと同系統のスカルプトソフトだが、最新版ではPBR対応のペイントが可能でPSD形式をサポートしているためPhotoshopと行き来したり、Photoshop上でのレイヤー管理と同じ感覚でペイントすることができる。
・SubstancePainter
ノードベースでテクスチャを生成するSubstanceDesignerから派生した、物体の凹凸に合わせてパーティクルでペイントできることが特徴的な直感型3Dペイントツール。ウェザリング(ダメージペイント)に特化した印象。
UE4やUnityを正式にサポートしており、それぞれのゲームエンジン向けに簡単にテクスチャを吐き出せる。
元々ノードベースソフトの姉妹ソフトなため、SubstanceDesignerとも連携可能でとても複雑なことができる、しかしSubstancePainterをフルに使おうと思うと複数のソフトを経由し、一つのモデルに対して10種類以上のテクスチャ形式と格闘することになるので上級者向けと言えそう。
超重要!頂点ペイント・UVベース・Ptexペイントの違いくらいは押さえとけ!
今までCG関連の色々な本を買ってきましたが、テクスチャペイントとマッピングに関してきちんと言及した書籍はありませんでした。効率的なテクスチャワークをする上でとっても大事なことなんですが、業界でも知らない人が多いと思います。結構重要なポイントです。
・頂点ペイントに関して
オブジェクトの頂点に色情報を載せていくペイント方法で、ポリゴン数をあげないと精細な描画が出来ないのが難点。
obj形式で形状と共に頂点の色情報を保存することができ、主にZBrushや3D-Coatのペイントで用いられる。SubstanceDesignerでもディフュースマップにベイクできるが、データがとても重くなるところが難点。最終的にはUVテクスチャにベイクして使用する。利点は特に思いつかない。
・UVベースに関して
アジの開きみたいなやつです。どんなに美人な顔もUV展開すると残念なことになります。シーム(切れ目)ができること、立体を無理やり平面に引き伸ばすため、2Dテクスチャの解像度は均一であるのに対し3Dモデル上では必ず解像度の歪みができてしまうことが難点。
UV座標に対して高解像度な解像度のテクスチャを生成すれば画像ベースで3Dにペイントできるため頂点数に依存しないところが素晴らしい。
・Ptexに関して
UVベースのテクスチャリングの欠点を補うことを目的に開発された仕組みで、主に3D-CoatとMariで使用できる。UVにとらわれず張り子の用に小さな紙をモデルにペタペタ貼りまくる様なイメージでテクスチャリング可能。
実際の感性モデルに使われることはまだないが、製作中に3Dモデルの頂点数にも、UVの歪みにも影響を受けないことが利点。
モデリングやテクスチャ、シェーディングに関する入門…というか完全に上級者向けの内容になってしまいましたが、様々なソフトを使い分ける上で必要な基礎知識は以上になります。
新しい分野ですし、トゥーン表現が主流の日本ではあまり馴染みのない内容かも知れないですね。Ptexって聞いたことあるぞ?くらいに覚えておいて頂ければよいかな、という感じです。
→ 後編に続きます!ここまで来たらリアルタイムエンジンで実際に動かしたい!