UE4のパーティクルで焚き火を作る!

2019年3月3日

おっさんモデルが活動するフィールドを作り、自然を豊かにしましたが、おっさんが寒そうなので焚き火を作ってあげたいと思いました。!

今回はUE4のパーティクル作成機能、「カスケード」を使って焚き火を作成して行きたいと思います。

スポンサーリンク

焚き火の素材を手に入れる!

前回のランドスケープに配置する草木の素材入手と同様に、今回も公式チュートリアルから頂戴したいと思います!

ラーニングの「パーティクルエフェクト」から焚き火の素材となるテクスチャー達を持って来ます。また、マテリアルがどんな風に作られているかと、パーティクルの作成の仕方も、このチュートリアルから参考にしていきます。

コンテンツ→Effects→Particles→Fireの中に炎関係のパーティクルがありました!

幾つかあるので、焚き火を構成するのに重要そうな要素、「炎」、「煙」、「火の粉」を表現している「P_OrbGlowLights」を参考にします。

「炎」、「煙」、「火の粉」がしっかり使われていましたので、ダブルクリックして中身を見て見ると・・・・。

初めてパーティクルを作ろうと思い立ち、この画面を見たら眩暈がしました・・・(汗

大量のエミッタで構成された「P_OrbGlowLights」は、パーティクルの入門には少々重すぎたかもしれません。

今回自身で作る焚き火のパーティクルは、「炎」、「煙」、「火の粉」用の3つのエミッタで構成されるシンプルな物にしようと思います。

また、エミッタで使われているマテリアルのブループリントもかなり複雑だと感じました(汗

各エミッタの「Required」を選択すると、使われているマテリアルがわかりますので、そのマテリアルで使用している「炎」、「煙」、「火の粉」用のテクスチャを調べて、頂いて行く事にしました。

「T_FireSubUV_11X11_32」と「T_SmokeSubUV_8X8_02」は、それぞれ炎と煙用のテクスチャで、パラパラアニメ的な感じで使うテクスチャーとなってます。「火の粉」用の「T_Snow01_Packed」を合わせて3つのテクスチャーがメインとなります。

これら3つのテクスチャーをそれぞれ右クリック→「マテリアルを作成」を選択して各マテリアルを作成します。

「T_TilingClouds_01」、「T_TilingNoise03」、「T_TilingNoise12」、「T_TilingNoise16」の各テクスチャーは、火と煙と火の粉のテクスチャに対してアルファマスクをかけるためのテクスチャーで、ノイズ状にアルファを抜く事で火とか煙がカッコよくなる気がするので貰っておきました。

またコンテンツプラウザ上で右クリック→「パーティクル」を選択して、これから作成するマテリアルをしようして焚き火を表現する「Fire_00」という名のパーティクルも作成しました。

パーティクルの火の粉では、ベクターフィールドという一定空間内でパーティクルを流動的で複雑な動きを実現する物がチュートリアルでは使われていました。

これを自前で作成するには、MAYA等のモデリングソフトで作成する必要があるようなので今回はアセットアクションの「移行」で持ってきました。

焚き火用マテリアルを作成する!

頂いたテクスチャから作成した「炎」、「煙」、「火の粉」用マテリアルのブループリントを作成していきます。

炎マテリアルの詳細、Blend Modeを「Additive」、Shading Modelを「Unlit」に変更して、エミッシブカラーとオパシティにカラーとアルファを挿せるようにしています。炎のテクスチャーはTexture SampleからTextureSampleParameterSubUVに変更してセットしてあり、パーティクルのUVアニメーション用になってます。

シンプルにするのであれば、SubUVのカラーとアルファを直接マテリアルのエミッシブとオパシティに繋ぐだけでも良いんじゃないかと思いましたが、折角ノイズ用テクスチャも持ってきたので、タイリングしてからアルファマスクをかけるようになっています。

煙マテリアルの詳細、Blend Modeを「Translucent」に変更してあります。

こちらもシンプルに、SubUVのカラーとアルファをベースカラーとオパシティに繋ぐだけで良いかと思ったのですが、ノイズテクスチャをタイリングしてアルファマスクをかけたり、カメラ距離によってフェードする処理があるため、シンプルじゃなくなりました(汗

火の粉用マテリアルの詳細、Blend Modeを「Translucent」、Shading Modelを「Unlit」に変更してあります。

こちらは勉強がてら調べつつの、公式チュートリアルのマテリアルと同様の内容となってます。

最初にこんな感じのマテリアルを見た時には、入り組んだノードに拒絶反応がでました(涙

とりあえず、カメラ距離による見え方の違いやら、パーティクルスピードの線形補間やら、ノイズテクスチャをタイリングしてアルファマスクやらと1つのマテリアルに多くの機能が詰め込まれていました。

作成したマテリアルを使ってパーティクルを作る!

「炎」、「煙」、「火の粉」用のマテリアルが用意できたので、さっき用意したパーティクルの「Fire_00」を編集していきます。

作成したマテリアルはエミッタの「Required」にセットできます。

参考にしたチュートリアルの炎と煙は、X軸方向に出ていたので、焚き火の炎をイメージしながらZ軸方向にでるように変更していきました。

Spawnでパーティクルの出る量を調整したり、加速、回転、消え方等を細かく指定できるので、それぞれエミッタを追加しながら調整します。

火の粉では、ベクターフィールドのエミッタである「Local Vector Field」を追加する必要があるので、「タイプデータ」→「新規 GPU Sprites」を追加します。

その際に「固定バウンディングボックスが無い」的な警告が出ますので、ツールバーの中の「バウンド」右横の矢印を押して、境界オプションの「固定バウンドの設定」を押す事で警告表示は消えます。

とりあえず焚き火の火部分が用意できました!

Sculptris、Blenderで焚き木部分を作って見る!

まずSculptrisで焚き木の造形とペイントを行いました。

適当にコネコネした後で、全体を茶色で塗り、ブラシテクスチャに木目のアルファテクスチャをセットしてバンプマップペイントをしました。

ブラシテクスチャにセットするアルファテクスチャは、こちらのPixologicのホームページからダウンロードする事もできます。

PSDファイルなので、扱えるペイントソフトでPNGに変換して使って行きます。

ー Pixologic アルファテクスチャ ダウンロードページ ー

OBJファイルをエクスポートし、「Show advanced tools」から「SAVE TEXMAP」、「SAVE NORMALS」、「SAVE BUMPS」を選択して、テクスチャ、ノーマルマップ、バンプマップをそれぞれはきだします。

続いてBlenderでOBJファイルをインポートし、リサイズして複製したオブジェクトを積み重ねて、焚き火の根っこっぽくしました。

マテリアルの設定で、Sculptrisからエクスポートしたテクスチャとバンプマップを適用してあります。

この時点で、何か木っていうより「ふがし」みたになっちまいましたね(涙

バンプマップ用テクスチャの設定は、マッピングのマップを「UVMap」に、影響のディフューズ:カラーを無くして、ジオメトリ:ノーマルにチェックを入れます。ノーマルの値を大きくすると、より顕著に起伏が見えますが、UE4に持ってく時に設定が外れるので・・・・w

後はこの焚き木をFBXでエクスポートしてUE4に持って行きます。

BlenderからFBXをUE4に持っていくのは、こちらの記事でやっております。

ー おっさんモデルをUnreal Engine 4に持って行く!※修正版 ー

UE4で焚き火を完成させる!

UE4で焚き木のFBXをインポートします。インポートした際にマテリアルからテクスチャが剥がれるので、マテリアルのブループリントから再設定します。

今回はテクスチャと、Sculptrisではき出して置いたノーマルマップをセットしました。

後は焚き木を配置して、上にパーティクルの炎を置けば・・・・

パーティクルを使った焚き火が完成しました!

これでおっさんも凍える事は無くなったでしょう・・・・!

スポンサーリンク