gamebox

unityとかゲームとか

【unity】 Imposter System 1回目 どんな3Dモデルでもビルボードに【アセット】

f:id:rgamebox:20191011140712j:plain

複雑な3Dモデルを多視点対応ビルボードにして表示するアセットを買ったので研究中。

数千ポリゴンのビルでもなんでもビルボードにして、360°どこから見ても破綻なく見ることができます。

どんな3Dモデルと書いたけど、システム上、アニメーションするプレイヤーの様なモデルには向いてないね。

 

「Imposter System」

assetstore.unity.com

 

 ↑ これ全部板ポリ!

 

この記事ではとりあえず、ドキュメントを日本語訳してみる。

1回目と書いたけど2回目があるのかは不明w

 

2回目書きました

【unity】 「Imposter System」2回目 簡単な使い方説明【アセット】 - gamebox

 

---------------------------------------------------------------------------------------

Imposter System v1.2ドキュメント
Imposter Systemは、前処理を行わずに3Dオブジェクトを2Dスプライト(偽者)に変換することにより、シーン内のポリゴンの数を減らします。 プレーヤーにとって、詐欺師は3Dオブジェクトのように見えますが、消費するリソースははるかに少なくなります。 例えば:

 

アップグレード
BillboardSystemからアップグレードする場合は、プロジェクトのクラッシュを防ぐために、この手順に従う必要があります!
1.プロジェクトをバックアップします! 2. BillboardSystemを使用するシーンを開き、「Tools / BillboardSystem / Clear scene」をクリックします。3.以前にBillboardControllerコンポーネントがあったすべてのプレハブを適用して、「スクリプトの欠落」を防ぎます。
警告4. BillboardSystemを使用するすべてのシーンで手順1と2を繰り返します。5.「BillboardSystem」フォルダーを削除します6.新しいパッケージをインポートします

 

セットアップまず、このパッケージのセットアップと使用方法に関するビデオチュートリアルをご覧になることを強くお勧めします:https://www.youtube.com/watch?v=Zhbu1lOto0M
1.プロジェクトをバックアップします。

 

2.プロジェクトにImposter System unitypackageをインポートします。

 

3.ポップメニューバーでImposterSystem-> Create ImpostersHandlerをクリックすると、このアクションは
すべての情報を処理するゲームオブジェクト「ImpostersHandler」。 Imposter Systemが動作する必要があるすべてのシーンで、この手順を実行する必要があります。

 

4. ImposterSystemには「imposterRender」というレイヤーが必要です。作成する必要があります
前のステップで自動的に。シーン内のオブジェクトはこのレイヤーを使用しないでください!このレイヤーが作成されていない場合は、追加します:

 

5.次に、なりすましが必要なオブジェクトを選択する必要があります。次に、ポップメニューバーでImposterSystem-> ImposterControllerの設定をクリックすると、選択したゲームオブジェクトImposterControllerコンポーネントにこのアクションが追加されます。ゲームオブジェクトにLODGroupコンポーネントがある場合、ImposterControllerはLODGroupからLOD設定をインポートし、最後のLODを使用して偽者としてレンダリングします。 (ImposterConrollerコンポーネントを追加するこの方法は、正しい作業のために階層を自動的に変更するため、強くお勧めします)

 

6.ゲームオブジェクトにLODGroupコンポーネントがない場合、レンダラーをLODに手動で追加する必要があります
ImposterControllerコンポーネント(LODGroupセットアップと同様)。 7.最後のステップは、CameraDetectorコンポーネントをカメラに追加することです。

 

コンポーネントImposterSystem.ImpostersHandler
#INSPECTOR
•enabled(component toggle)– ImposterSystemを有効/無効にします
•詐欺師の更新を無効にする-すべての詐欺師の処理を有効/無効にします。最も一般的な使用方法は、プレイヤーが動かないことがわかっている場合です。
•詐欺師のレンダリングタイプ-詐欺師が描かれる方法
oメッシュの描画–(前もって)ImposterSystemによるレンダリングハンドル(メッシュ結合
ImposterSystem)o Mesh Renderer –偽者はMeshRenderer(Unityを使用してgameObjectsとしてレンダリングされます。
動的バッチ処理)、ほとんどの機能(フェード、シャドウなど)をサポートしていません
•目に見えないLODアクション–目に見えない詐欺師をどうするか。
oなし-なしo偽者のリリース-目に見えない偽者に関するすべてのデータを削除します(したがって、偽者が
再び表示され、すべてを再計算する必要があります)
•キュータイプ–更新が必要な詐欺師のキューを整理する方法
oなし-キューなし、すべての詐欺師はすぐに更新します(fpsドロップが発生する可能性があります)oシンプル-並べ替えのないシンプルなキューo画面サイズで並べ替え-詐欺師が多いほど画面スペースが使用され、早くなります
更新しました
•ライト(指向性ライト)–シーンのメインライト。ライトが動的であるか、またはImposter Shadow Castingを使用するかを設定する必要があります。
•フレームごとの最大更新数–フレームごとに更新できる詐欺師の数(キュータイプが「なし」でない場合)
•アトラスの解像度–アトラスのサイズを決定します。アトラスは偽装テクスチャに保存されます。
•シェーダーフォーレンダー–特別なシェーダーを指定して、インポスターテクスチャをレンダーできます。ここでは、レンダリング時間を短縮するためのシンプルなシェーダーを指定できます。 (交換用シェーダー)
•フェード(DrawMeshのみ)
oフェードを使用-有効にすると、古いものと新しいものの間でフェード遷移効果を作成します
偽テクスチャoフェードノイズテクスチャ–フェードエフェクトの作成に使用されるテクスチャ(使用されるアルファチャネル)
ImposterSystem / Textures / Noise.psdにあるテクスチャの例oフェード時間-フェード効果の持続時間(秒)oフェード時に更新しない-有効にすると、フェーダーはフェード中に更新されません
•偽装シャドウキャスティング(テスト)
oシャドウキャスティングが有効oライト方向デルタ-シャドウが更新される頻度oシャドウテクスチャ解像度-シャドウデータを保持するテクスチャの解像度
Shadow Atlas Resolution –すべてのシャドウテクスチャを保持するアトラスの解像度
• 追加の設定

 

#METHODS
•ImpostersHandlerインスタンス– ImpostersHandlerのシングルトンインスタンスを返します
•void UpdateAllImposters(bool immediate = false)–すべての詐欺師にテクスチャを更新させる
•float GetMemoryUsage()–すべての偽者テクスチャで使用されるメモリ量をKBで返します
•void RemoveUnusedTextures(float未使用時間= 0)
•int updatedByFrameImpostersCount(get)
•int currentImpostersCount(get)
ImposterSystem.ImposterController
#INSPECTOR
•IsStatic –選択した場合、オブジェクトは静的でなければなりません! (最適化に使用)
•常にカメラを見る-無効にすると、テクスチャーの更新時にのみ偽装回転が変更されます
•UpdateBehavior –詐欺師の更新方法
o Show3DObject_WaitForUpdate –詐欺師の準備ができていない場合、カメラは3Dをレンダリングします
オブジェクトo ShowLastImposter_WaitForUpdate –詐欺師の準備ができていない場合、カメラはレンダリングします
最後の詐欺師(誤ったビューの可能性があります)。偽者がまだ生成されていない場合、すぐに作成および更新されますo ImmediatelyUpdate –偽者が更新する必要がある場合、偽者が更新されます
すぐに
•エラーカメラの角度–方向がこの値によって変更された場合、偽者が更新されます
•エラー距離-距離(カメラとオブジェクト間の距離)がこの値によって相対的に変化した場合、偽者が更新されます
6 Imposter System v1.2ドキュメント
•Zオフセット–オブジェクトの中心に対する相対的な位置を偽装します。シーン内の他のオブジェクトで偽者を正しくレンダリングするために使用されます。
•エラー光の角度を使用–光の方向が変更された場合に偽者を更新できます
oエラー光の角度-光の方向がこの値によって変化した場合、偽者が更新されます
•時間ごとの更新を使用する–時間ごとに詐欺師を更新できます
o時間間隔–自動更新間の時間。アニメーションオブジェクトに使用できます
•m_LOD –画面上のサイズに基づいた計算である詳細レベルを偽装します。 LODGroupとして機能します。
#METHODS
•void RecalculateBounds()
•void RemoveImposters()–すべてのカメラのすべての詐欺師を削除します
•void UpdateImposter()–作成済みのすべての詐欺師に強制的に更新
•void UpdateImposter(Camera camera)–既に作成された偽者に特定のカメラの更新を強制する
•void UpdateImposterImmediately()–すでに作成されているすべての詐欺師にすぐに更新を強制する
•void UpdateImposterImmediately(Camera camera)-既に作成された詐欺師に特定のカメラをすぐに更新させる
ImposterSystem.ImposterLOD
#INSPECTOR
•偽者としてレンダリングする-チェックした場合、レンダラー(下記を参照)は偽者として描画し、それ以外は通常のレンダラーとして描画します。
•シャドウのレンダリング–セルフシャドウをレンダリングできます(投影されません)。
•最小/最大テクスチャ解像度–偽のテクスチャ解像度はこの値の間になります。
•レンダラー-描画されるレンダラー
ImposterSystem.CameraDetector
#INSPECTOR
•ImposterSystemを無視-詐欺師のレンダリングを無効にし、元のオブジェクトを表示できます
•キューを無視-更新を待っている詐欺師のキューを無視できます。
•VRメインカメラです– VRビューでImposterSystem最適化を使用できます(カメラの視野の変更には統一的な制限があるため、ネイティブUnity VRを使用せずに動作します)
ImposterSystem.Water(テスト)
•ImposterSystemと連携するように変更されたデフォルトの単一水成分

 

開発者に連絡http://starasgames.xyz/
すべての関連情報はこちらhttps://forum.unity3d.com/threads/w-i-p-realtime-imposter-system-fake-3d-optimization- plugin.426478 /