UDN
Search public documentation:

PhysicalMaterialMaskJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

{ignore-begin}

UE3 ホーム > 物理 > 物理的マテリアルマスク

物理的マテリアルマスク


概要


物理的マテリアルマスクによって、グラフィカルなマテリアルの異なる部分において、2 つの物理的マテリアルが使用できるようになります。物理的マテリアルマスクは、静的メッシュ上にユニークなエフェクトを作るために使用することができます。その際、複数のエレメントおよびマテリアルは必要ありません。簡単な例としては、ウィンドウメッシュがあげられます。これは、部分的には木 (窓枠の部分) であり、部分的にはガラス (窓の部分) であるマテリアルです。物理的マテリアルマスクを設定することによって、そのマテリアルのうちガラスの部分が叩かれた場合にはガラスが割れる音を再生し、木の部分が叩かれた場合は木が折れる音を再生することができます

物理的マテリアルマスクの使用


物理的マテリアルマスクは、マテリアルまたはマテリアルインスタンス上で、4 つのプロパティから成り立っています。
  • *Phys Material Mask*- マスクとして機能する 1 ビットテクスチャです。使用される物理的マテリアルは、コリジョン中にヒットしたピクセルのカラー (黒または白) に依存します。
  • *Phys Material Mask UVChannel*- マスクされたテクスチャのために使用しなければならない UV チャンネルです。この UV チャンネルは、マスクテクスチャを特定の静的メッシュにマップするために使用されるテクスチャ座標を含んでいなければなりません。
  • *Black Physical Material*- マスクテクスチャの黒い部分がコリジョン中にヒットされた場合に使用する物理的マテリアルです。
  • *White Physical Material*- マスクテクスチャの白い部分がコリジョン中にヒットされた場合に使用する物理的マテリアルです。

1 ビットモノクロテクスチャ

1 ビットモノクロテクスチャとは、各ピクセルが1ビットで表現されているテクスチャのことです。ビットが 0 の場合は、ピクセルが黒で、1 の場合は白です。静的メッシュとのコリジョンが起きると、物理的マテリアルマスクのシステムは、このテクスチャを使用して、どちらの物理的マテリアルを使用すべきかを決定します。

1 ビットテクスチャのインポート


1 ビットテクスチャをインポートする方法は 2 つあります。
  • 1 ビット bmp フォーマット形式のテクスチャをサポートしている Adobe Photoshop などの画像編集ソフトを使用する方法があります。その後は、通常のように bmp ファイルをエディタにインポートすると、自動的に1ビットテクスチャと認識されます。
  • アルファチャンネルで物理的マテリアルマスクをともなった 32 ビットテクスチャをインポートする方法があります。テクスチャインポートダイアログが現れたら、圧縮の設定カテゴリの下で TC_OneBitMonochrome を選択します。この圧縮の設定は、後でテクスチャビューアの中で選択することもできます。

OneBitCompressionSettings.png

OneBitMonochrome 圧縮を使用すると、テクスチャの RGB チャンネルが除去されて、アルファチャンネルが 1 ビットテクスチャに変換されます。この方法が役立つ場合として、マテリアルのディフューズテクスチャをガイドとして使用して、アルファチャンネルの中に 1 ビットテクスチャを作成する場合が考えられます。 ALERT! 注意: アルファチャンネルは、値の範囲が 0 から 255 までとなる 8 ビットです。1 ビットテクスチャの範囲は 0 から 1 までなので、圧縮された場合、128 未満の値は 0 になり、128 以上の値は 1 になります。

セットアップ例


このセットアップ例では、次のようなウィンドウメッシュを使用します。

Window.png

メッシュをインポートする前に私が最初に行ったことは、マスクテクスチャのための UV 座標セットを作成することでした。この手順は、インポートするメッシュのために UV を作成する場合とまったく同じです。UV チャンネル 0 にあるテクスチャ座標のデフォルトのセットに問題がない場合、これは必要ありません。次は、私が作成した UV 座標で、メッシュの UV チャンネル 1 にあるものです。

UVs.PNG

次に、Photoshop などの画像編集ソフトを使用して 1 ビットテクスチャを作成し、これをエディタにインポートしました。

TextureMask.PNG

黒い領域が窓を表わし、白い領域が枠を表わしています。また、赤い丸に注意してください。このテクスチャのフォーマットは A1 です。物理的マテリアルマスクが機能するには、マスクテクスチャのフォーマットは A1 でなければなりません。

次は、マスクがウィンドウメッシュ上にマップされるとどう見えるか示したものです。

ALERT! 注意: A1 フォーマット形式のテクスチャは、通常のレンダリングでは使用できません。

WindowMasked.png

ご覧のとおり正しく、黒い領域が窓に、白い部分が窓枠に対応しています。

あと残されたことは、マテリアル上でマスクをセットアップすることだけです。これは、マテリアル上にプロパティをいくつか設定する簡単な方法です。

ALERT! 注意: この段階で、マテリアルインスタンスの定数を使用し、メッシュの実際のマテリアルが親になるようにしました。理由は、実際のマテリアルを修正したくなかったからです。

MaskProperties.PNG

この後は、有効な白と黒の物理的マテリアルを得ると、準備が整います。物理的マテリアルについての詳細は、 this link をご覧ください。

どのように機能するか


ラインチェックが静的メッシュにヒットすると、「Unreal」は、ヒットされたトライアングルとそのトライアングル上にあるグラフィックマテリアルを見つけます。マテリアルが有効な物理的マテリアルマスクの設定をもつ場合、テクスチャのルックアップが、1 ビットテクスチャの中に行われることによって、どのピクセルがヒットされたかが分かるようになります。ピクセルが黒の場合、ラインチェックは黒の物理的マテリアルを返します。ピクセルが白の場合、ラインチェックは白の物理的マテリアルを返します。ゲームに適切なコード設定を行い、ラインチェックから返される物理的マテリアル使用するようにしてください。それによって、物理的マテリアルマスクから生じる結果を確認することができます。

注意:


  • マテリアルインスタンス上で物理的マテリアルマスクを使用するときは、インスタンス上の物理的マテリアルマスクの一部だけをオーバーライドすることができます。オーバーライドされない部分は、マテリアルインスタンスの親を調べると分かります。

  • A1 フォーマット形式のテクスチャは、GPU メモリを使用せず、システムメモリのみを使用します。ミップマップされることは決してありません。また、ストリームされることもありません。