Q1. このアセットはどんな用途に使うものですか?
Q2. このアセットは私のプロジェクトでも役に立つでしょうか?
Q3. どんなモバイル端末でも動作しますか?
Q4. C#以外の言語からでも使うことができますか?
Q5. 動的な影(つまりアニメーション付きのキャラクタの影)を生成することはできますか?
Q6. 影がちらつくようになりました。どうすればちらつきを直すことができますか?
Q7. 動的なオブジェクトにも影を落すことはできますか?
Q8. Mesh TreeをMesh Shadow Receiverを使わずに単独で利用することはできますか?
Q9. どうすればFast Shadow ReceiverをDynamic Shadow Projectorと一緒に使うことができますか?
Q1. このアセットはどんな用途に使うものですか?
A1. Fast Shadow Receiverのメインの用途はUnityが提供する標準の影(シャドウマップやプロジェクタ(Blob Shadow Projector))と一緒に用い、影の描画を高速化することです。Fast Shadow Receiverが何らかの素晴らしい影を生成する手法を提供するわけではありません。そのため、このアセットで影について出来ることは、Unityの標準の機能で出来ることと同じで、単にパフォーマンスを改善するために用いられます。

Unityの標準の機能の一部であるプロジェクタは影のためだけに使われるのではなく、光の投影や弾痕の投影などにも用いることができます。そして、Fast Shadow Receiverはこれらの投影を高速化するためにも用いることができます。また、Fast Shadow Receiverは光と影を同時に投影するシェーダーを含んでいるので、このデモのようにスポットライトの影を表現することもできます。.

Fast Shadow Receiverには弾痕を投影するためのデモも含んでいます。このデモの手法は非常に効果的で高速です。これについてはこちらも参照してください: Q8. Mesh TreeをMesh Shadow Receiverを使わずに単独で利用することはできますか?

Q2. このアセットは私のプロジェクトでも役に立つでしょうか?
A2. もしUnityの標準の影では表現力が不十分で、何か新しい影を生成する手法をお探しであれば、このアセットはあまり役に立たないかもしれません(Q1. このアセットはどんな用途に使うものですか?も参照)。

もし既にUnityの標準の影を利用していて(特にプロジェクタを使った影)、フレームレートを改善したいとお考えの場合、このアセットは役に立ちます。しかし、パフォーマンスのボトルネックがCPUにある場合、このアセットではボトルネックを解消することができません。Unity 5から無料のPersonal Editionでもプロファイラを利用することができるようになったので、まずはプロファイラを使ってボトルネックがCPUにあるのかGPUにあるのかを確認することをお勧めします。
profilerscrrenshot
もし上の画像のようにGraphics.PresentAndSyncにかかった時間が小さくなければ、GPUがボトルネックということになります。また、影を無効にしたらパフォーマンスが向上するかどうかも確認してください。もしボトルネックがGPUで影を無効にすることでパフォーマンスが改善されるのであれば、Fast Shadow Receiverは間違いなくあなたのプロジェクトのお役に立つでしょう。

Q3. どんなモバイル端末でも動作しますか?
A3. Fast Shadow Receiver自体の機能はどんなデバイスでも動作しますが、Unityが提供するシャドウマップは一部のモバイル端末では動作しません。もし、どんなモバイル端末でも動作する影を使いたいのであれば、プロジェクタを使うことをお勧めします。まずプロジェクタによる影(Blob Shadow Projector)をFast Shadow Receiverを導入せずに試してみて、もしその影の品質に満足できるようであれば、描画速度を向上するためにFast Shadow Receiverを導入してみてください。Fast Shadow Receiverを導入しても影の品質を落すことはありません (Q1. このアセットはどんな用途に使うものですか?も参照してください)。
もしUnituのプロジェクタについて馴染がなければ、Unity Manualも参照してみてください。
Q4. C#以外の言語からでも使うことができますか?
A4. 可能です。しかし、Fast Shadow Receiverのスクリプトファイルを特殊なフォルダ(PluginsまたはStandard Assets)に移す必要があります(Unity Manual参照)。

Unity 5ではFast Shadow Receiverのルートフォルダから全体を特殊フォルダに移動しても問題ありません。しかし、Unity 4.6ではコンパイルエラーが発生してしまうかもしれません。その場合は、FastShadowReceiver/Scriptsの中にある全フォルダのうち、FastShadowReceiver/Scripts/Editorを除いたものを特殊フォルダに移動するようにしてください。

Q5. 動的な影(つまりアニメーション付きのキャラクタの影)を生成することはできますか?
A5. Fast Shadow Receiverは影を生成するための新しい手法は提供しません。Unityの標準の影と一緒に動作するアセットになっています(Q1. このアセットはどんな用途に使うものですか?参照)。そのため、シャドウマップを利用することで動的な影を生成することができます。
しかし、モバイルのプラットフォームをターゲットにしている場合、シャドウマップを利用したくないと考えるかもしれません。その場合は、Dynamic Shadow Projector を利用してみてください。このアセットは Fast Shadow Receiver と一緒に動作させることができます。
Q6. 影がちらつくようになりました。どうすればちらつきを直すことができますか?
A6. バージョン1.4.0からMesh Treeをビルドする際にオフセットを指定できるようになり、そのパラメータを調整することでちらつきを防ぐことができます。パラメータには’Scaled Offset’と’Fixed Offset’の2種類があるのですが、まずは’Scaled Offset’=1, ‘Fixed Offset’=0を試してみて、少しずつ値を増やしていってみてください。詳細についてはMesh Treeの作成を参照してください。

また、プロジェクタのマテリアルで使われているシェーダーファイルにあるOffsetパラメータを調整することでも、ちらつきを抑えることができます。通常、プロジェクタのシェーダーでは’Offset -1, -1’が使われていますが、これを’Offset -1, -10’のように変更します。2つあるパラメータのうち2番目のものだけを変更するようにしてください。Version 1.4.1 から、Fast Shadow Receiverに付属のシェーダーであれば、マテリアルエディタでOffsetパラメータを調整することができるようになりました。

Q7. 動的なオブジェクトにも影を落すことはできますか?
A7. はい、Fast Shadow Receiverは大きな背景オブジェクト(通常はスタティック)の代わりにShadow Receiverオブジェクトに影を落すことで描画を高速化します。それ以外のオブジェクトは通常通りに影を受け取ることができるので、動的なオブジェクトにも影を落すことができます。

しかし、大きな背景オブジェクトが動的に生成される場合は条件が限られます。例えば、背景オブジェクトは動的に生成されるけど、生成された後は変更がないのであれば、Mesh Treeを実行時にビルドすることで、動的に生成された背景オブジェクトにもMesh Shadow Receiverを使って影を落すことができます。詳細についてはMesh Treeの作成を参照してください。

もし背景オブジェクトがいくつかのパーツに分かれていて、パーツ毎に動的にロードされるような場合には、パーツ毎にMesh Treeを作成しておいて、パーツがロードされたときにMesh TreeもロードしてMesh Shadow Receiverを作成することもできます。この場合、複数のMesh Shadow Receiverを扱うために、Projector Managerを利用することになります。詳細についてはProjector Managerのセットアップを参照してください。

Q8. Mesh TreeをMesh Shadow Receiverを使わずに単独で利用することはできますか?
A8. はい、Mesh TreeはMesh Shadow Receiverを使わずに単独で用いることも可能です。Mesh Treeを使うことで、メッシュの中からいくつかの平面で囲まれた領域(例えば視錐台)と交差するポリゴンをみつけることができるようになります。
Bullet Marksのデモはこの用法の良い例です。ソースコードはFastShadowReceiver/Demo/Scripts/BulletMarkReceiver.csにあるので参照してみてください。
Q9. どうすればFast Shadow ReceiverをDynamic Shadow Projectorと一緒に使うことができますか?
A9. もしすでにDynamic Shadow Projectorをお使いであれば、シーンにProjectorが含まれているのでProjector Managerのセットアップに従うだけでFast Shadow Receiverを適用することができます。

Links

コメントを残す

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

Anti Spam Code *