Version: 2019.4
言語: 日本語
ライティングの手法
シェーディング

モデリング

モデリングの前に計画を立てることはとても重要です。素早く作成されたモデルは、プリプロダクションや空間の大体の計画をするためには適切です。しかし、アセットを完成させて適切なシーンを作るときには、以下をよく検討してください。

すべてのポリゴンの有効使用

現段階で一般的に使用されるハードウェアはこれまで以上に機能的に優れていますが、常にシーンのジオメトリをシンプルにすることに越したことはありません。不要なテッセレーションと複雑なジオメトリは、リアルタイムの設定では管理が難しく、パフォーマンスに影響し、メモリを不必要に使用する可能性があります。以下の例は、まったくプレイヤーの目に触れないジオメトリが、ライトマップやオーバードローなどのリソースを無駄にし、光が漏れる原因になる様子を示しています。

不要な可視の表面を強調しているシーン
不要な可視の表面を強調しているシーン

ゲームオブジェクトのライティングに与える影響

ベイクしたライトまたはリアルタイム GI をライトプローブと一緒に使用する場合、ゲームオブジェクトがシーンのライティングに影響を与えるかどうかを決定する必要があります。

ライティングに影響を与えるゲームオブジェクト

ライティングに影響するゲームオブジェクトを設定するには、インスペクターウィンドウで Contribute GI が選択されている必要があります。 これによりシンプルで滑らかな表面領域が得られ、高品質の間接光反射またはベイクした光が可能になります。これは、表面のライトマップテクスチャの空間使用の効率が良いためです。 

  • 自動ライトマップ UV が非効率なチャートを作成したり予期しない縫い目を生成する場合、ライトをベイクするときにジオメトリの UV2 のオーサリングが必要な場合があります。
  • リアルタイム GI で効果的な結果を得るために、UV3 のオーサリングが必要な場合があります。

時には、リアルタイム GI でメッシュの UV を簡略化して、ジオメトリに著しく少ないリソースを使わせ、アーティファクトのほとんどない最高の結果を得ることができます。

シーンでライトを受けるだけのゲームオブジェクト

ゲームオブジェクトがリアルタイムのライティングとライトプローブからライトを受けるだけの場合、ジオメトリにはライトマップ UV の制限がありません。ただし、このジオメトリが大きい場合は特別の注意が必要です。単一のライトプローブでは正しく照明されない場合があり、定義した複数のライトプローブを一つに組み合わせるために Light Probe Proxy Volume コンポーネント が必要な場合があるからです。

移動しないゲームオブジェクトには、ライトマップや リアルタイム GI が常に必要というわけではありません。ゲームオブジェクトが小さい場合や、光を反射する表面があまりない場合は、ゲームオブジェクトがライトマップに含まれていない可能性があります。以下に示すベンチと手すりはその良い例です。

UV チャートを持つゲームオブジェクトのみが、間接光に影響を与えます
UV チャートを持つゲームオブジェクトのみが、間接光に影響を与えます

UV レイアウトの手法

UV レイアウトを使うと、法線マップ (通常 UV1)、ライトマップ (UV2)、リアルタイムのライトマップ (UV3) をベイクするのと同じ量のメモリ消費でビジュアルの品質を向上することができます。特に、タイルを使用できないテクスチャを持つジオメトリには有効です。

以下は、UV レイアウトの手法を用いる場合に考慮する点です。

  • UV1 チャートでは、必要なときのみ UV シェルを分割し、UV チャートをできるだけ効率的にレイアウトして、法線マップのベイクのテクスチャ空間を無駄にしないようにします。透視投影にするには、1024平方のテクスチャは、テクスチャに細部を配置するかどうかにかかわらず、同じ量のメモリを使用します。
分割された部分がテクスチャ空間全体にどのように広がり、無駄な空間を避けているかの例
分割された部分がテクスチャ空間全体にどのように広がり、無駄な空間を避けているかの例
  • ライトマップ (UV2) の場合は、接触する (ただし、重ならない) 境界線がある分割されていないライトマップのチャートを作成し、ベイクしたライトマップの光の漏れや継ぎ目を避けます。UV チャート、または UV シェル間で一貫したスケールを維持することは、モデル全体にわたってライトマップのテクセルを均等に分散させる上で重要です。
ライトマップの継ぎ目の問題を表示するために単純なジオメトリに広げたライトマップの拡大図
ライトマップの継ぎ目の問題を表示するために単純なジオメトリに広げたライトマップの拡大図
  • リアルタイム GI (UV3) の場合は、モデルの大きな表面を示す大きな領域の UV 空間を優先し、メモリ消費を軽減し継ぎ目を避けます。多くの場合、モデルの自動 UV 設定は、チャートを最適化するのにとても役に立ちます。リアルタイム GI のチャート最適化の詳しい情報は、Unity チュートリアルの Optimizing Unity’s auto unwrapping を参照してください。

  • ライトマップを必要としないゲームオブジェクトの場合は、カスタムシェーダーが必要としない限り、追加の UV のオーサリングによるメモリと時間を無駄にするのを避けてください。

ジオメトリの詳細

実世界のゲームオブジェクトは非常に詳細です。リアルタイムのジオメトリを作成するには、ジオメトリに設定する細部、法線マップとテクスチャに設定する細部を特定する必要があります。リアルタイムのシーンのアセットを開発するときは、ハイポリゴンからローポリゴンの法線マップをベイクするのが普通です。

ベイクした接線空間のハイポリゴンメッシュからローポリゴンメッシュへの法線マップの例
ベイクした接線空間のハイポリゴンメッシュからローポリゴンメッシュへの法線マップの例

気を付けるべき重要な細部の 1 つは、ゲームオブジェクトのエッジがハイライトされる様子です。現実世界のオブジェクトが非常に鋭いエッジ、ベベルのないエッジ、詳細なエッジの定義を持たないことは、通常はありません。リアルなエッジ効果を模倣することはシーンの現実味をより向上させます。

法線マップはジオメトリどおしが接する面に滑らかなハイライトを作ります
法線マップはジオメトリどおしが接する面に滑らかなハイライトを作ります

スムージンググループ (ポリゴンのハードエッジ/ソフトエッジ)

適切なスムージンググループを使用することによって、モデルと法線マップの効率を向上させることができます。 以下は、スムージンググループの使用に関するヒントです。

  • 高ポリゴンから低ポリゴンへの法線マップのベイクを行う場合、複雑なスムージンググループの設定を行ってハードエッジを作るよりも、全体を単純にスムージングしてしまうことを推奨します。ハードエッジを含む低ポリゴンのジオメトリに対して法線マップを適用するとアーティファクトが生じやすいためです。
低ポリゴンの法線を緩やかに曲げて高ポリゴンメッシュのように見せる法線マップ
低ポリゴンの法線を緩やかに曲げて高ポリゴンメッシュのように見せる法線マップ
  • 適切な法線マップを持つ滑らかなポリゴンでは頂点数が節約されます。これは、より効率的なジオメトリをレンダリングするのと同じことです。以下は簡単な設定を比較した例です。

    • スムージンググループが分かれている 1 つの平面は 36 頂点と同等です。

    • スムージンググループが 1 つの 18 の三角形をもつ 1 つの平面は 16 頂点と同等です。

1 つの平面と三角平面の頂点数の比較

  • 滑らかなポリゴンではライトマップのベイクとリアルタイム GI のチャートの分割が少なくなり、より滑らかなビジュアルを実現します。

  • 2018–03–21 公開ページ
  • リアルな映像を作るためのベストプラクティスガイドは Unity 2017.3 で追加
ライティングの手法
シェーディング