Unity:オブジェクトに(Lightを使わず)影をつける。

オブジェクトに影をつける方法を解説します。

 

今回はDirection LightなどのLightなどで直接影を作成せず、

Blob Shadowという影の画像を地面にprojecterで投影する方法をとります

 

この方法の利点として、draw callがLightでの影の作成に比べ大幅に

削減できることがあります。

 

スマフォ向けゲームなどのdraw callをなるべく抑えたいゲーム作成に

とても向いてる実装です。

 

さっそく解説していきたいと思います。

 

まず事前準備として必要なBlob shadowですがUnity Editorの

Assets->import package->projectors からインポートします。

 

インポートした後prefabにBlob Shadow Projectorというものがあると思うので、

そちらをHierarchy上で影をつけたいキャラクターの子として追加してあげます。

 

追加してあげたらprojectorがしっかりと影を投影してくれるよう、

位置調節や回転をしてください。

 

また影が適切な大きさになるよう、あらかじめつけてある

projectorコンポーネントの各プロパティを調節してあげてください。

 

プロパティがいろいろあるので解説を載せておきます。

Near Clip Plane クリップ近面前のオブジェクトは投影されません。
Far Clip Plane この距離を超えたオブジェクトは影響を受けません。
Field Of View ビューのフィールド (単位: °)。 これは、プロジェクタが Orthographic でない場合にのみ使用されます。
Aspect Ratio プロジェクタのアスペクト比。 これにより、プロジェクタの高さと幅を調整でいます。
Is Ortho Graphic 有効にすると、景色の代わりに、Orthographic になります。
Ortho Graphic Size 投影の Orthographic サイズ。Is Orthographicがオンになっている時にのみ使用されます。
Materials オブジェクトに投影されるマテリアル。  
Ignore Layers Ignore Layersの 1 つにあるオブジェクトは影響を受けません。 

 

のようにいろいろなプロパティがありますがよく使うものは限られているので

全ては覚えなくて大丈夫です。ここに関しては自分で値を動かし

どこが変更されたかを見るのが一番理解できると思います。

 

設定し終えたら今の状態ではおそらく影が影を映したいキャラクター

自身にも映ってしまっていると思います。

 

これを解消するために上で書かれているIgnore Layersを使います。

ここにセットされたlayerにはプロジェクタが投影しないので、それを利用します。

 

まずキャラクタにlayerを追加します。キャラクターを選択し名前の下にある

Layerをクリックしadd Layerで例えばPlayerというLayerを作ります。

その後もう一度クリックし、先ほど作ったLayerを選択します。

 

次にキャラクターの子のBlob Shadow Projectorを選択し

projectorのプロパティーignore Layerに先ほどキャラクターに

セットしたLayerを選択します。

 

この状態でもう一度再生すると影が下に投影され、

キャラクターには影が投影されていないはずです。

 

キャラクターに影をつけることで現実味がかなり増しますので、

影をつけるかつdraw callを減らしたい場合はぜひこの方法を試してみてください。

 

以上、Unityのオブジェクトに(Lightを使わず)影をつけるでした。

 

コメントを残す

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