カラースプラットマテリアル(Color Splat Material)

From Neos Wiki
Jump to navigation Jump to search
This page is a translated version of the page Color Splat Materials and the translation is 100% complete.
Other languages:
English • ‎日本語

はじめに

もし、メッシュ全体にタイル状の地形テクスチャを使用したい場合、単一のテクスチャを表面全体にスケーリングするのではなく(サイズ的にほとんどの地形には使えません)、Splatシェーダを使用するとよいでしょう。スプラットマップをアップロードすることで、メッシュの表面のどこに、どのくらいの量のタイル状のテクスチャを適用するかをシェーダに伝えることができます。スプラットマップには、メッシュの表面に使用される最大4つの異なるテクスチャの情報を含めることができます。

一般的なスプラットマップはこのような形をしていますが、ほとんどが透明で、荒れた地形のエッジ部分に線が見えるだけということもあります。

Splat.png

それぞれの色は、異なる地形のテクスチャを表しています。この例では、緑は砂、赤は草、青は岩、透明(または黒)は2つ目の岩を表しています。

これは単なるフラットな画像ではなく、実際には4つのグレースケール画像を1つに合成し、画像のRGBAチャンネルを使用して各テクスチャのマッピングを格納しています。それぞれのレイヤーを分割して見てみると...

Channels.png

ここで必要なことは、無料の画像編集ソフトGIMPですべて行うことができますので、Photoshopなどをお持ちでない方もご安心ください。

必要なもの

このシェーダーを使用するには、次のものが必要です。

  • スプラットマップレイヤー。
  • 1〜4枚の地形テクスチャ。
  • (オプションですが、強く推奨します) これらの地形テクスチャのノーマルマップ。

地形テクスチャは、メッシュ全体にタイル状に配置されるため、通常の1024~8192の解像度のタイル状の風景テクスチャである必要があります。タイル化の頻度を設定することができますが、それは全体としてのみであり、各テクスチャに対して個別に設定することはできません。例えば、草のテクスチャを岩のテクスチャの2倍の密度にしたい場合、すべてのテクスチャの解像度が2048であれば、まず草のテクスチャを4096にタイル化します。これにより、メッシュに適用したときに草のテクスチャの密度が2倍になります。

スプラットマップの作成

すでにRGBAスプラットマップが作成されている場合は、このセクションをスキップできます。そうでなければ...

まず、地形のヒートマップをグレースケールに変換します。これらのマップは、地形を生成するために使用しているソフトウェア(World Creator、World Designerなど)によって作成されます。これが完了したら、お好みの画像編集ソフトの「合成(compose)」機能を使って、地形マップを1つのRGBA画像に変換します。後で重要になるので、ここでは順序を正しく保つようにしてください。例えば、砂、草、岩、山などのように、高度の低いものから高いものへと順に並べることをお勧めします。これで、上の画像のような赤/緑/青、またはほとんど透明で、一部に線だけが見える画像ができるはずです。合成設定は、次のようになります。

SplatCompose.png

画像を保存する際には、透明なピクセルがその色を保つようにしなければなりません。そうしないと、スプラットマップは最初は正しく見えても、正しく動作しません。このオプションは例えば GIMP の PNG 保存ダイアログのウィンドウの中ほどにあります。

GIMPSave.png

ノーマルマップを作成

ノーマルマップはこのシェーダではペアでパックされているので、残念ながら既存の地形法線マップをそのまま読み込むことはできません。もしマップがこのように見えるなら、それはまだ標準的な法線マップであり、変換する必要があります。

Normal.png

ここでの基本的な方法は既存の法線マップを分解し、分解された法線マップの最初の2つの部分(赤と緑)のチャンネルを使用し、2つの地形テクスチャの赤と緑のチャンネルを使用して、新しい画像のRGBAチャンネルに合成することです(1つ目の画像のRG、2つ目の画像のBA)。

そこでまず、最初の地形テクスチャのノーマルマップをRGB分解します。3つのレイヤーが残るはずです。赤と緑には明確なイメージがありますが、青はおそらく白か黒です。私たちは最初の2つ、赤と緑のチャンネルだけを使用するのでそれで構いません。このプロセスを各地形のノーマルマップに繰り返します。分解された各ノーマルマップは次のようになります。

DecomposedNormal.png

ここで今ある4つのノーマルマップを、シェーダーが必要とする2つの新しいノーマルマップに結合する必要があります。これは、スプラットマップのレイアウトに使ったのと同じ順番で行わなければなりません。例えば、スプラットマップに「砂」「草」「石」「岩」の順に並んでいた場合、ペアになる法線マップは以下の順になります。砂/草、石/岩。

ノーマルマップを結合するには、画像編集ソフトのRGBA合成機能を再度使用し、最初のノーマルマップから赤チャンネルを選択して新しい赤チャンネルとして使用します。最初のノーマルマップから緑チャンネルを選択し、緑チャンネルとして使用します。次に、2つ目のノーマルマップから赤チャンネルを選択して新しい画像の青チャンネルとして使用し、2つ目のノーマルマップの緑チャンネルを新しい画像の透明/アルファチャンネルとして使用します。合成のプロセスは次のようになります。

NormalCompose.png

最終的に合成された「2重」ノーマルマップは、以下の画像のようになります。

NormalComposed.png

これでNeosに持ち込む準備が整いました。

インポートの準備

地図や画像の前処理が完了したので、外部での作業はほぼ完了しているはずです。この時点で、あなたは以下のものを持っているはずです。

  • 合成されたスプラットマップ。
  • テレイン(地形)メッシュ。
  • 4つのタイル化可能な地形テクスチャー。
  • 2つの統合されたノーマルマップ。

以上が揃っていれば、Neosにインポートして次のステージに進むことができます。

マテリアルコンポーネントへ割り当て

このセクションでは、Neosのマテリアルについてある程度一般的な知識があることを前提としています。

通常のアップロード方法に従って、メッシュ、スプラットマップ、地形テクスチャ、ノーマルマップをアップロードしてください。次に、メッシュのマテリアルを"PBR Splat Map"シェーダーを使用するように変更し、マテリアルのインスペクタを表示します。ほとんどのスロットはここから明らかになるはずです。一番上のテクスチャスロットはスプラットマップ用なので、それをドロップしてください。2番目のハイトマップスロットは無視してください。次に、4つの地形テクスチャを、4つのそれぞれのアルベドテクスチャスロットに、正しい順番で入れてください(例:砂、草など)。この時点で、あなたのメッシュが正しく見えることに気づくはずです。最後に、2つのノーマルマップを2つのノーマルマップスロットに、上記の順序でドロップします。

地形のテクスチャが引き伸ばされたように見える場合(ほぼ間違いなくそうなります)、ウィンドウの一番上までスクロールして、希望の外観になるまで縦横のタイリングを増やします。また、割り当てたした2つのテクスチャの下にあるノーマルマップの値を変更することで、ノーマルマップの効果の量を増減させることができます。ノーマルマップが2つしかないにもかかわらず、4つのテクスチャすべてについて、それぞれのノーマルマップの強さを個別に調整することができます。

テクスチャが適用されているように見えるが、位置が間違っている場合、スプラットマップがメッシュに対して回転している可能性があります。シェーダーマテリアルからスプラットマップを引き出し、回転や反転を使用して一致するまで調整します。

結果

これで、メッシュの大きさに関わらず、メッシュの全サイズに渡って、テクスチャがすべて正しい位置に適用されていることがわかるはずです。下の例では、2KMのマップに8192のスプラットマップを1枚適用しています。

TerrainResult.png