読者です 読者をやめる 読者になる 読者になる

ゲームエフェクトデザイナーのブログ (新)

Houdini勉強開始。レポート記事とか色々。

UE4.11からの新機能「Particle Cutout」を使用する方法

 UE4.11から追加された新機能「Particle Cutout」を設定する手順を解説します。

Particle Cutoutとは?


主にSubUVアニメーションを利用するパーティクルで、ビルボードで表示している四辺形ポリゴンをテクスチャの透明部分に合わせてカットしてくれる機能です。
下図はUE4.11リリースノートより引用。

f:id:moko_03_25:20160704020116j:plain

実は1枚絵のパーティクルでも利用可能ですし、マテリアル内でのテクスチャの参照はParticleSubUVノードじゃなくTextureSampleノードで十分だったりもします(理由は最後に書いています)。

手順の解説


① まずはテクスチャを作成します。
この時、Opacity用の絵柄を必ずアルファチャンネルに格納しておく必要があります。

f:id:moko_03_25:20160704010109p:plain

② テクスチャをUE4にインポートしてサムネイル上で右クリック「Create SubUV Animation」を選択。

f:id:moko_03_25:20160704010110p:plain

③ Sub UVAnimationデータが作成されるので開きます。

f:id:moko_03_25:20160704010111p:plain

「Sub UVTexture」で用意したテクスチャが指定されているのを確認。
「Sub Images Horizontal」と「Vertical」でUとVのパターン数を指定します。
 ここをどちらも1に指定すれば1枚絵の状態でカッティングできるという訳です。
「Bounding Mode」で4頂点でカットするか8頂点でカットするか選べます。4頂点で十分カバーできるシンプルな絵柄なら4頂点を選択した方が若干データサイズが減る感じでしょうか。

f:id:moko_03_25:20160704010112p:plain

④ マテリアルを作成してBlend ModeをTranslucent、ShadingをUnlitに変更。
そしてアルファ用のテクスチャをOpacityに接続します。
下図がRチャンネルから接続しているのはテクスチャの圧縮タイプをBC4に設定したからです。
そうするとアルファチャンネルはSub UVAnimationデータの作成のみに使用して、でも実際には1チャンネルのグレースケールテクスチャとして扱うことができます。RGBAの4チャンネルのフォーマットしか使えない訳ではありません。

f:id:moko_03_25:20160704010113p:plain

⑤ Particle Systemを作成してRequiredモジュールを選択して詳細パネルでマテリアルを設定。
詳細パネル下の方にある「Sub UV」の項目で通常通りSubUVアニメの設定を行います。
(パーティクルカットアウトを利用すると当然ながらInterpolation MethodのLiner Blend設定は実質的に使えなくなりますが、そこに関しては最後に補足しています)

f:id:moko_03_25:20160704010115p:plain

f:id:moko_03_25:20160704010114p:plain

⑥ Subimage Indexモジュールを追加して選択します。

f:id:moko_03_25:20160704010116p:plain

詳細パネルの「Sub UV」の項目の「Animation」に、最初の方で作成済みのSub UVAnimationデータを指定します。1つ前の手順のマテリアルの設定等を行っていなくても、とりあえずSub UVAnimaitonデータをここに指定さえすればその設定の通りにパーティクルがカッティングされます。
ついでにSubUVアニメーションさせるためにIDを指定します。
今回のテクスチャは4パターンなので開始は0、終了は3に設定。

f:id:moko_03_25:20160704010117p:plain

⑦ 3Dプレビュー上でAlt + 2を押してワイヤーフレーム表示に変えて確認します。
カッティングされて正方形で無くなっていればうまくいっています。

f:id:moko_03_25:20160704010118p:plainf:id:moko_03_25:20160704012442p:plain

従来だとこちらのように正方形です。元の表示に戻す場合はAlit + 4を押します。

f:id:moko_03_25:20160704012441p:plain

 

SubUVアニメのLinear Blendについて


マテリアル内でテクスチャの参照にParticle SubUVノードを使用すれば前後のパターンをクロスフェードするようにブレンドできますが、パーティクルカットアウトと併用するとどうなるのか試してみました。
マテリアルは下図のようにParticle SubUVを使用。

f:id:moko_03_25:20160704010119p:plain

cascadeでLinear Blend設定で表示。
するとEmissive Colorはブレンドされているのが分かりますが、いくつかのパーティクルの絵柄がスパっと切り取られたような見た目になってしまっています。
これはパターンが切り替わる途中では前のパターンの形状でカッティングされているからだと思います。

f:id:moko_03_25:20160704010120p:plain

カットアウト情報である頂点自体を今のパターン+次のパターンをカバーするサイズに膨らませたりでもしない限り回避できなさそう(そうするとカッティングのうまみが減る)に思うので、これは仕方ないことかも‥。
ひとまず現状の仕様ではParticle Cutoutを使用する場合はSubUVアニメのブレンドを諦めるということになりますが、ゆっくり再生させたい煙テクスチャなどではブレンドは重宝するためこれは結構ジレンマとなりそうです。