Tutorial

intermediate

+0XP

5 mins

Unity Technologies

影

このチュートリアルでは、これまでに説明したもの以外に影を実装、最適化する方法を説明します。

1. フェイクシャドウの実装

リアルな影はレンダリングの計算負荷がかなり負担になります。動的オブジェクトには、動的ライトを使用するのではなく、フェイクシャドウを実装することをおすすめします。

リアルタイムの影は、「シャドウマップ」という名で知られる手法を使って生成するのが最も一般的です。シャドウマップにシーンジオメトリがレンダリングされる間のそのコストは、描画されている頂点の数に比例します。このコストを考慮し、シーン内では、影をキャストするジオメトリと、リアルタイムに影をキャストするライトの数を抑えることが重要です。

以下でフェイクシャドウを実装する方法をいくつか紹介します。

  • キャラクターの下に配置した 3D メッシュ、平面、またはクワッドを使用して、ぼかしたテクスチャをそれに適用してみましょう。
  • カスタムシェーダーを書くことで、より洗練されたブロブシャドウを作成してみましょう。

次のスクリーンショットは、影のメッシュを使用した影の実装方法を示しています。

ライティング情報をテクスチャに直接ペイントするというのも良い方法です。そうすればリアルタイムライトの処理に必要な余計な計算を減らすことができます。ライティングのペイントは、シーンにライトをベイクする際のメモリ節約にもつながります。シーンで必要となるライトマップのテクスチャメモリを抑えられるからです。

可能ならシェーダーまたはマテリアルを使用して、ライティングをシミュレートしましょう。カスタムマテリアルを使用して、さまざまな種類のライト効果をシミュレートできます。たとえば、キャラクターの可視性や外観を向上させるため、リムライティングを使用したいとします。ライトを使用してこの効果を作り出す代わりに、シェーダーを使用してライトがあるような錯覚を作り出すことができます。

シェーダーを使用すると、効果的なビジュアルエフェクトやスタイルを多数作り出すことができます。シェーダーとマテリアルに関する詳細な情報は、このコースの前回のプロジェクトで確認できます。

2. メッシュレンダラー設定

シーンでどのような種類のライティングを使用する場合でも、メッシュレンダラー設定を適切に指定することが重要です。

心がけるとよい原則としては、使用しないものはすべてオフにするようにしましょう。「Cast Shadows」などの設定は、オブジェクトに光が当たらない場合でも、シーンのレンダリングのコストが大きくなることがあります。次のスクリーンショットは、メッシュレンダラー設定のサンプルです。

スクリーンショットに表示されているオプションでは、ライトは受けるものの、リフレクションは受けないよう設定されています。最も近いプローブからのライティング情報をブレンドすることで行っています。ブロブ手法を使用しているため、「Cast Shadows」はオフになっています。「Receive Shadows」もオフになっています。シーンがベイクされ、リアルタイムシャドウはキャストされないためです。

3. まとめ

影は 3D 環境のリアリティを高めてくれますが、ランタイム時の計算コストは高くつく場合もあります。モバイル端末では、シェーダーやテクスチャなど、影をキャストするライトを使用しない手法を使用して、影を偽装できないか試すのが最適です。次のチュートリアルでは、ベイクしたライトによるパフォーマンス向上の可能性を示すライティングのデモについて詳しく説明します。

Complete this Tutorial