1. パフォーマンスの問題となる大きな環境オブジェクトを選択し、MeshRendererコンポーネントにある“Receive Shadows”のチェックを外します。(Unityのテレインオブジェクトはこのプロパティを持っていないので、テレインの場合はシャドウマップと一緒に使うことはできません)
    InspectorUncheckReceiveShadow
  2. 以下のステップ3からステップ11までの手順を各シャドウキャスターオブジェクト毎に繰り返します。
  3. 空のゲームオブジェクトを作成し、“LightProjector”コンポーネントを追加します。このコンポーネントのスクリプトファイルは“FastShadowReceiver/Scripts/Projectors”フォルダの中にあります。
  4. 影を落とすメインライトをステップ3で作成したLightProjectorコンポーネントの“Light”プロパティーに割り当てます。
    InspectorSetLight
  5. LightProjectorコンポーネントの“Target”プロパティーにシャドウキャスターオブジェクトを割り当てます。
  6. LightProjectorコンポーネントの“Target Bounds”をバウンディングボックスがキャスターオブジェクト全体を内包するように設定します。
  7. 空のゲームオブジェクトを作成し、Shadow Receiverコンポーネントのいずれかを追加します。Shadow Receiverコンポーネントのスクリプトファイルは“FastShadowReceiver/Scripts/Receivers”フォルダの中にあります。
  8. ステップ3で作成したLightProjectorをステップ7で作成したShadow Receiverの“Projector”プロパティに割り当てます。
    InspectorSetLightProjector
  9. “FastShadowReceiver/Materials”フォルダの中にある“MultiplyShadowMap”マテリアルまたは“BlendShadowMap”マテリアルをステップ7で作成したゲームオブジェクトのMeshRendererコンポーネントに割り当てます (Universal RP の場合は、こちらのシェーダーをお使いください)。
    InspectorSetShadowMaterial
  10. ステップ1で選択した大きな環境オブジェクトを次のいずれかの方法でShadow Receiverに割り当てます:
    • ステップ7でInfinitePlaneShadowReceiverを作成した場合は、“target”プロパティに環境オブジェクトをセットする。
    • ステップ7でMeshShadowReceiverを作成した場合は、“MeshTransform”プロパティに環境オブジェクトのルートオブジェクトをセットする。
    • ステップ7でRaycastPlaneShadowReceiverを作成した場合は、“Raycast Mask”プロパティに“Environment”レイヤー(環境オブジェクトと同じレイヤー)を割り当てます。

    詳細については、Shadow Receiverのセットアップセクションを参照してください。

  11. もしステップ7でMeshShadowReceiverを作成した場合は、Mesh Treeを作成してMeshShadowReceiverコンポーネントの“Mesh Tree”プロパティに割り当てる必要があります。
    まだ“Mesh Tree”プロパティに何もセットしていなくて、“Mesh Transform”プロパティにステップ10で環境オブジェクトのルートオブジェクトをセットしていれば、“Create a new MeshTree”ボタンがInspector Viewの下の方に現れます。
    createmeshtreebutton
    このボタンを押すと、下のイメージにあるようなMesh Treeを作成するためのWizardが表示されます。詳細についてはMesh Treeの作成を参照してください。
    createmeshtreewizard

Links

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Anti Spam Code *