アンリアルエンジン4で植生ビルボードテクスチャを作成する方法

この記事では、Unreal Engine 4で植生のビルボードテクスチャを作成する方法について説明します。このような植生は単純な乗算四角形であり、そのすべてのコピーは常にカメラに向けられます。 私はこのアプローチを支持して議論しようとし、潜在的な欠点について話し、パフォーマンスの問題に個別に対処します。







アンリアルエンジン4の植生



アンリアルエンジン4には、デフォルトで、Foliageツールと呼ばれる植生を操作するための組み込みツールがあります。 クローン化された静的メッシュを追加します(より一般的な意味で、スケルトンレスモデル)。 植生のある各アセットは、すべてのインスタンスに対して異なる回転、場所などの設定で何千回もマップに追加できます。



比較的小さい(最大10,000コピー)アセットと単純な(100ポリゴン未満)アセットを使用すると、日陰や植物の良い照明でもすべてが正常に機能します。 ただし、グラフィックハードウェアが10,000コピーすべてを一度に表示しようとしないように、クリッピング距離をインテリジェントに調整する必要があります。



ただし、比較的大きな植生の蓄積(たとえば、森林全体)の場合、これは問題になる可能性があります。



私のゲームの例を考えてみましょう。 マップの北には大きな森があり、プレイヤーは南から入ることができます。 森の南側の外側にあるのは、ゲーム以外のゾーンです。 しかし、プレイヤーに広大で広大な森の印象を与えるためには、レンダリングする必要があります。



低ポリツリーモデルを使用しても、フォレスト全体をレンダリングすることを決定した場合、ローエンドコンピューターのパフォーマンスが低下します。



この場合、看板が助けになります。



広告業界の広告はありますか?



アンリアルエンジン4には、 ビルボードマテリアルコンポーネントが標準装備されています 。 上記の例に示すように、レベル内の単一または少数のメッシュでの作業に適しています。 残念ながら、静的メッシュの配置のみをサポートするFoliageツールには使用できません。 Billboardコンポーネントを使用するには、このツールでサポートされていないActorクラス内にある必要があります。



独自のビルボード資料を作成する必要があります。 この方法については、様式化されたレンダリングに関するセクションのリンクにあるドキュメントで読むことができます(必要な情報がすぐに見つからない人もいますので、注意深く読むことをお勧めします)。



私はこの文書を再び語るつもりはありません。 その代わりに、ドキュメントで生成された素材のスクリーンショットを追加し、ゲームでの使用方法を説明します。



まず、ビルボードでスプライトとして機能するシンプルな2Dテクスチャをインポートします。 そのために、透明な背景にあるツリーモデルのスクリーンショットを撮りました。 一定の距離から見ると、ハイポリモデルに非常によく似ています。



少し変化させることが重要です。モデルが同じに見えないように、1つのツリーの4つのバリアントを作成しました。





材料の準備



次のステップでは、静的メッシュの頂点が常にカメラに向くようにするマテリアルを作成します。 静的メッシュとして、2つの三角形で形成された四角形を取ります(これについては後で説明します)。



コンテンツブラウザパネルに移動し、右クリックして新しいマテリアルを作成します。



次の設定を選択します。









次に、材料のグラフィックパネルにノードを配置できます。 重要な説明をいくつか行いましょう。 マテリアルは、カメラの方向を向くように頂点の位置を調整します。 World Position Offsetに結び付けられたノードにより、マテリアルは頂点がカメラの方向を向くように頂点の位置を調整します。



「カスタム」ノードには、ビルボードの効果を担当するセクション内に特別なHLSLコードが含まれています。 四角形の正しい回転を計算する必要があります。 このノードのパラメーターは次のようになります。1つの値を選択して「In」という名前を付ける必要がある「入力」の反対側、および「出力タイプ」の反対側-CMOT Float 2。



float2 output; output = atan2 (In.y,In.x); return (output);
      
      





PivotPositionにアタッチされたノードは、座標に従って長方形が3次元空間に移動し、開始点を中心に回転するようにします。



ただし、この資料は直接使用するためのものではありません。 テクスチャは、マテリアルインスタンスによって使用されるマテリアルパラメータに変換されました。



マテリアルを保存した後、コンテンツブラウザパネルでそれを右クリックし、いくつかのコピーを作成します。 それらのそれぞれは、あなたの看板に正しいテクスチャを使用する必要があります。 したがって、コードは複製されず、リソースはより効率的に使用されます。







マテリアルを定義したら、Unreal Engine 4で単純な長方形をロードします。これは、Foliageツールの静的メッシュとして使用されます。



メッシュの作成と読み込み



ビルボードモデルの場合、必要なのは2つの三角形で構成される長方形のみです。 Blenderプログラムを使用してこのようなアセットを作成するか、使用したアセットをダウンロードします。 ここからダウンロードできます 。どのプロジェクトでも自由に使用できます。



三角形をインポートするとき、転送と回転を調整して、最初にカメラに向かい、サーフェス上に配置されるようにする必要があります。 これを行わないと、マテリアルはカメラの横を向いたり、上下を逆にしたり(または両方を同時に)し、その位置を3次元空間に正しく転送しません。 その結果、マテリアルは常に間違った方向に回転します。



クワッドには次の設定を使用しました。





インポートの最後に、クワッドに名前を付け(TreeBillboard_Quad_1という名前を付けます)、ビルボード素材にクワッドを割り当てます。



理論的には、マップ上に四角形を既に配置し、カメラが移動するときに常にビューアーに向けられるようにすることができます。 ただし、この静的メッシュをFoliageツールにドラッグし、その配置を操作する方が賢明です。







メッシュを紅葉ツールに追加するときは、[標準に合わせる]オプションと[ランダムヨー]オプションが無効になっていることを確認してください。これらはメッシュを回転させ、マテリアルの効果に違反します。



このメッシュは常にゲームゾーンの外側に配置する必要があります。ゲームゾーンに近づいたり、動き回ったりすることはできません。そうしないと、錯覚全体に違反することになります。



これらの木を数千個追加すると、森ができます。 結果の品質は、元のテクスチャの品質に直接依存します。







外観



注:私のゲームでは、低品質のツリーモデルを使用しています。これは、OpenGameArt Webサイトのパブリックドメインでのみ使用できます。 繰り返しますが、結果は画像が作成されるメッシュの品質と詳細、およびこれらの画像の解像度に依存します。



以下は、日陰と照明、および比較のためのシンプルな照明のないビルボードのツリーです。







そして、これらのツリーが表示に最適な解像度とサイズでどのように見えるかを示します。 この画像は、メッシュ(より近い)とビルボード(さらに)の両方を示しています。 一見、それらを区別するのは難しく、より良いメッシュと画像を使用すると、これはさらに壮観に見えます:







性能



ツリーごとに2つの三角形のみを描画するため、このアプローチでのパフォーマンスは、最新のコンピューターでは許容範囲を超えています。 平均的なビデオカード(AMD R9 270X)のパフォーマンスを著しく低下させることなく、マップ全体を樹木で埋めることができました。 この方法は、re、草、または他の小さな植物を扱うのにも最適です。 プレーヤーは、彼らが近くに来ても、彼らが平らであることに気付かないでしょう。



看板に照明や影を付けるのは簡単ではないので、私のゲームでは影がありません。

プレイヤーは遠距離からこれに気付くことはほとんどありませんが、十分に近づいた場合、欠陥が明らかになります。



確かに、この場合のパフォーマンスは不完全です。 マテリアルに使用する「カスタム」ノードでは、エンジンはシェーダーを最適化できません。 今では重要ではありませんが、あなたにとっては異なるかもしれません。 疑わしい場合は、プロファイラーを使用してください。



代替案



別のアプローチがあります-SimplypolyMeshlabなどのツールを使用して生成される低ポリLODチェーンを使用します。 なりすましは植物としても使用できます。 さらに良いことに、高ポリゴンツリーモデル(speedtree.comなど)とLODチェーンで最も詳細でないモデルを使用する3つのアプローチを組み合わせます。 したがって、リソースを節約できます。 ツリーが遠く離れている場合、詳細と影の点でフラットスプライトと違いはありません。 したがって、完全に描画する必要はありません。



おわりに



この記事があなたのゲームに利益をもたらし、高価なビデオカードに大金を費やさないことを願っています。 植生をレンダリングするには多くの方法がありますが、これはそのうちの1つにすぎません。



All Articles