モデリング

確認済のバージョン: 2017.3

-

難易度: 中級

コンテンツ制作者が犯しやすいミスのひとつは、モデリングを行う前に先を見据えて計画を立てないことです。試作段階や大まかな下書きの段階で大雑把なモデリングを行うのは問題ありませんが、アセットをある程度完成版に近い状態しなければならない段階に来たら、事前に考えなければならないことがいくつか出てきます。 以下に、(経験を積んだコンテンツ制作者でも見逃してしまうことがある)シーンの適切なモデリングのために覚えておくべき事をいくつかご紹介します。

  • ポリゴンを無駄に含めないようにしましょう。 プロジェクト開発の全ての要素について当てはまることですが、できるだけシンプルにすることが大切です。モダンなハードウェアが今までになく高性能になっているとは言え、ジオメトリをシンプルにすることはシーンの作成において非常に大切です。不要なテッセレーションや複雑なジオメトリは、リアルタイムでのコストパフォーマンス面での管理を困難にし、メモリを必要以上に消費するので、逆効果になり兼ねません。 上の画像の例では、プレイヤーが見ることのないジオメトリが、ライトマップやオーバードローなどのためにリソース(資源)を浪費し、最悪の場合、光漏れを引き起こす可能性もあります。

  • モデリングの規則をジオメトリのライティングのモードに基づいて定めましょう。 ベイクされたライティングやリアルタイムグローバルイルミネーションをライトプローブと併用する場合は、モデルがシーン内で間接ライティングやベイクされたライティングに寄与するようにするか、あるいはそれらを受けるのみで寄与しないようにするか、決定する必要があります。

    • ライティングに寄与させたいオブジェクトの場合 (インスペクターで Lightmap Static にチェックマークが入った状態) サーフェス領域がよりシンプルで滑らかであるほど、ライトマップテクスチャ内でより効率的にスペースが使用されるため、生み出される間接反射 / ベイクされたライティングの質が高くなります。 自動ライトマップ UV が非効率的なチャートを生成したり不要なシームを生成する場合は、ライトをベイクする際にジオメトリ用の UV2 の作成が必要になる場合があります。 リアルタイム GI で効率的な結果を得るために、ジオメトリ用の UV3 の作成が必要になる場合があります。リアルタイム GI の場合、メッシュの UV を単純化することで、ジオメトリが使用するリソースの量が大幅に削減され、アーティファクトの少ない、より質の高い結果を得られる可能性があります。

    • 動的ライトとライトプローブのライティングのみを受けるオブジェクトの場合、ジオメトリにライトマップ UV の制約が掛かりません。大きなジオメトリに関しては、単一のプローブでは正常に照らせない場合があり、複数のプローブのライトの定義を連携させるために Light Probe Proxy Volumes(LPPV)が必要となる可能性があるため、やはり特別な注意が必要です。 詳細は Unity マニュアルの LPPV ガイドをご覧ください。

動かないオブジェクトであっても、必ずしもライトマップで照らしたり、リアルタイム GI に寄与させる必要はありません。習慣的に全ての静的オブジェクトを静的ライトマップに含めてしまいがちですが、小さなオブジェクトや、大量のライトを反射するサーフェスを持たないオブジェクトは、通常はライトマップに含める必要はありません。下の画像のベンチと線路がその例です。

  • モデルの UV レイアウトの方法 特にタイル化できないテクスチャを持つジオメトリの場合、法線マップのベイキング(一般的に UV1)やライトマップのベイキング(UV2)やリアルタイムライトマップ(UV3)に掛かるメモリコストを変えずに、UV レイアウトによってビジュアル品質を向上させることが可能です。

以下に、UV レイアウトに関するヒントをいくつかご紹介します。

  • UV1 チャートの分割は必要な場合にのみ行い、法線マップのベイキング用のテクスチャスペースを無駄にしないようにして、できるだけ効率的にUV チャートをレイアウトしてください。例えば、1024 ピクセルの正方形テクスチャは、ディテールを配置してもしなくても同じ量のメモリを使用します。

上の画像の例では、テクスチャのピースをテクスチャスペース全体を敷き詰めるように並べることで、スペースの無駄が回避されています。

  • ライトマップ(UV2)に関しては、連続した(切れ目のない)チャートにすることで、ライトベイカー内のシームを回避してください。ブリーディングを回避するため、ライトマップ UV チャートは重なることがないようにしてください。ライトマップのテクセルをモデル全体に均一に配分するためには、UV チャート / シェルの間でスケールの整合性を保つことが重要です。 上の画像はライトマップのシームの問題を誇張して示したものです。ライトマップが単純なジオメトリ上で分断されています。

  • リアルタイム GI(UV3)に関しては、モデル内で大きなサーフェスを表す領域の UV スペースをできるだけ優先することで、メモリの使用量を抑えてシームを回避してください。多くの場合は、モデル内の自動 UV 設定を使用するとチャートの最適化に非常に効果的です。 リアルタイム GI 用のチャートの最適化に関する詳細はこちらでご覧いだだけます(英語)。

  • ライトマップの必要ないオブジェクトの場合は、(カスタムシェーダーによって必要とされる場合以外は)上記のような付加的な UV の作成によってメモリと時間を無駄にしないようにしましょう。

  • ジオメトリのディテール 現実世界にある物体(オブジェクト)は非常に詳細に出来ています。ディテール(詳細)をジオメトリに配置するか、法線マップとテクスチャで表現するかの判断は、リアルタイムのジオメトリ作成における基本的なステップです。リアルタイムシーン用のアセットの開発で最近一般的に使用されているのは、ハイポリゴンからローポリゴン化して法線マップをベイキングする手法です。

重要なディテールでミスの起こりやすいもののひとつは、オブジェクトのエッジにおける、ハイライトの受け方です。現実世界の物体で、極度に鋭いエッジや面取りが全くないエッジ、あるいはエッジの輪郭にディテールがないオブジェクトというのはほぼ存在しません。この現象を再現することでシーンのリアリティが向上します。 サーフェスがジオメトリに接触する部分に、滑らかで質の良いハイライトが得られます。

  • スムージンググループ(ポリゴンのハードエッジとソフトエッジ) スムージンググループの適切な使用によって、モデルと法線マップの効率性を高めることができます。

    • ハイポリゴンからローポリゴン化して法線マップをベイキングする場合は、多面ポリゴンよりも、シンプルな構造のスムージンググループの方が推奨されます。これはなぜかというと、接線法線マップによって、ローポリゴンのジオメトリのサーフェス法線にできる尖った部分を丸める必要があるためです。 上の画像では、法線マップがローポリゴンの法線を滑らかに曲げ、ハイポリゴンメッシュのように見せています。

    • しっかりした法線マップを持つ滑らかなポリゴンは、頂点数の節約にも繋がり、したがってレンダーにとってもより効率的なジオメトリを構成します。下図に示した簡単な例は、1 つのスムージンググループ内に 18 個の単純な三角形の面を含めると頂点数が 16 個になるのに対し、単一の面ごとにスムージンググループを分割した場合、三角形は同じ 18 個でも頂点数が 36 になることを示しています。

    • 滑らかなポリゴンを使用すると、ライトマップのベイキングとリアルタイム GI におけるチャートの分割を抑制することもでき、結果としてビジュアルがより滑らかになります。

上記のリストは 3D オブジェクトやシーンのモデリングの完全なプロセスを網羅するものではありませんが、どんな点に注意すべきか理解するための一助となれば幸いです。