パーティクル入門 (8) リボン エミッタを作る

ビデオの内容紹介 
リボンとは「長くて細い生地」のことですが、これをパーティクルとして表現します。これまでの蓄積があるので、かなり簡単に作成することができます。

原題 Introduction Particles – 8 – Creating a Ribbon Emitter

[1] 準備
いつものように MyParticleSystems フォルダに Ribbon というフォルダを作っておきます。
8-1
これまで作ったマテリアルを援用します。Beam フォルダに入っている Mat_Beam を Ribbon フォルダにコピーします。
8-2
8-3
コピーしてできたマテリアルのファイルの名前を Mat_Ribbon とします。
8-4
ちなみに、このマテリアルはどのようなものか振り返ってみましょう。これをダブルクリックするとマテリアルエディタが開きます。
8-5
赤枠で囲んだものが、マテリアルの見た目です (具体的な色はまだ指定していませんが)。なお、このマテリアルの意味を知りたい場合は、パーティクル入門 (7) ビーム エミッタを作るをご覧ください。

次に、パーティクル システムを作っておきます。右クリックメニューから Particle System を選びます。
8-6
名前を P_Ribbon とします。
8-7

さらに、Sprite フォルダに入っているマテリアル Mat_Sparks も Ribbon にコピーします。
8-8
この名前を Mat_RibbonSource とします。つまり、火花 (spark) からリボンを発生させることになります。
8-9
ちなみに、このマテリアルをダブルクリックして、中身を確認すると、
8-10
非常に単純なマテリアルです。なお、このマテリアルを使って作ったパーティクルは、次のような感じでした。
8-11

[2] ソースとなるパーティクルのエミッタを作成する
リボン パーティクルは、スパーク (火花) パーティクルから放出される (=スパークというパーティクルがソースとなる) ようにするため、
8-11-2
スパークとリボンの 2 つのエミッタが必要となります。まず、スパーク エミッタを作ります。

メインエディタのコンテンツ ブラウザで、Mat_RibbonSource を選択状態にしておき、先ほど作ったパーティクル システム P_Ribbon をダブルクリックします。
8-12
カスケードで Required モジュールを選択して、Material の小さな矢印をクリックすると、選択状態にしてある Mat_RibbonSource が自動的に指定されます。
8-13

次に、Initial Size (初期サイズ) モジュールで、Max、Min ともに 5 に設定します。
8-14

更に、Initial Velocity (初期ベロシティ= 初速度) モジュールで、Max を 30、30、50、Min を -30、-30、30 に設定します。
8-15
加速度も設定します。スペースを右クリックして、Acceleration (加速度) → Const Acceleration (一定の加速度=ランダムではない加速度) を選択します。
8-16
その Const Acceleration モジュールを選択して、0、0、-50 にセットします。z が負の値になっているので、下向きにパーティクルが発せられることになります。
8-17

更に、Lifetime モジュールを選択し、Min、Max ともに 8.0 にセットします。これによって、パーティクルは 8 秒間生き続けることになります。
8-18

次に、Spawn モジュールで、Rate (率) を 5.0 にセットします。1 秒間に 5 個発生することになります。
8-19

Color Over Life (生きている間の色) モジュールを削除します。発生後に色を変化しないからです。
8-20
そのかわり、スペースを右クリックしてから、Color → Initial Color (最初のカラー) モジュールを追加します。
8-21
そのまま Initial Color モジュールを選択して、Start Color (開始時のカラー) を 20、2、1 にセットします。
8-22

次に、Required (必須) モジュールで、Screen Alignment (スクリーンでの配置) を PSA Velocity にセットします。これによって、パーティクルがカメラおよび移動方向に向くようになります。
8-23

次に、スペースを右クリックして、Size → Size By Speed (速度によるサイズ) モジュールを追加します。
8-24
そのまま Size By Speed モジュールを選択し、Speed Scale (速度によるサイズへの影響度) を 0、4 にセットし、Max Scale (最大スケール) を 1、4 にセットします。Speed Scale が大きくなれば、それだけサイズも速度に応じて大きくなります。その時の最大の倍率が Max Scale で制限されます。
8-25

[3] リボンのエミッタを作る
これまで作成してきたエミッタは、スパーク (火花) の部分です。ここからリボンを発生させます。そのリボンのエミッタをこれから作ります。

まず、すでに作成したエミッタのとなりあたりのスペースを右クリックして、New Particle Sprite Emitter (新たなパーティクル スプライト エミッタ) をクリックします。
8-26
このエミッタの下のスペースを右クリックして、TypeData → New Ribbon Data を選択します。
8-27
これで、リボンのパーティクルを発生させることができるようになります。

Spawn (発生) モジュールで Rate を 0 にセットします。
8-28
これではまったくパーティクルが発生しなくなるので、代わりの Spawn モジュールを追加します。スペースを右クリックして、Spawn → Spawn PerUnit (単位当たりのスポーン) モジュールを追加します。
8-29
この Spawn PerUnit (単位当たりのスポーン) モジュールとは、ソース (この場合、スパーク) が動く距離 (1 メートル=「単位」) に応じてパーティクル (この場合、リボン) を発生させることができます。他にも、動いている汽船から出てくる煙などにも使えそうです。単純な Spawn ではソースが動くとパーティクルが置き去りになります。

Spawn PerUnit (単位当たりのスポーン) モジュールを選択して、Spawn PerUnit のセクションで 1 をセットします。
8-30
この意味はソースが全体で 1 m 動いたら 1 個のリボン パーティクルを発生させるということを意味しています。

ソースも設定しておかなければなりません。空きスペースを右クリックして Trail (トレイル) → Source (ソース) モジュールを追加します。
8-31
更に、Source モジュールを選択して、Details パネルで Source Method (ソースの設定方法) 項目で Particle (パーティクル) を選択します。スパークというパーティクルからリボンを発生させるためです。
8-32
ここで、ソースのパーティクルの名前を指定しなければならないので、一旦、スパークのエミッタに戻って、名前を付けておきます。最上部のエミッタ、または、その下の空きスペースで右クリックして、Emitter (エミッタ) → Rename Emitter (エミッタの名前を変更する) を選択します。
8-33
名前は RibbonSource とします。そして、再度リボン エミッタの Source モジュールを選択して、Details パネルで Source Name (ソース名) にこの RibbonSource という名前を入れます。
8-34
さっそく、スパークから一反木綿のようなものが発生しました。これが現段階でのリボンです。

次に、リボン パーティクルのためのマテリアルをセットします。まず、メインエディタのコンテンツ ブラウザで Mat_Ribbon を選択状態にしておき、
8-35
リボン エミッタの方の Required モジュールを選択して、Details パネルの Material で矢印アイコンをクリックして、先の Mat_Ribbon マテリアルを指定します。
8-36

更にリボン エミッタを調整していきます。まず、Ribbon Data モジュールを選択して、Max Trail Count (最大トレイル数) を 50 にセットします。
8-37
これによって、生存中のパーティクルを 50 個に制限することができます。

次に、Initial Size (開始サイズ) を 2、2、0 とします。
8-38

更に、Initial Velocity は使わないので、削除します。
8-39

次に、パーティクルの色を設定します。Color Over Life (生存期間に渡る色) モジュールを選択して、Details パネルで、Distribution (分布) を Distribution Vector Constant (分布はベクターを一定の値として使う) を選択します。さらに RGB は、0、5、20 をセットします。
8-40

更に、Details パネルの下の方にある Alpha Over Life (生存期間に渡るアルファ) セクションを設定します。Points (ポイント) という項目を展開して、Point 0 の In Val (入ってくる値) を 0 に、Out Val (出てくる値) を 1.0 に、Point 1 の In Val を 0.4 に、Out Val (出てくる値) を 0.0 に指定します。(In Val と Out Val は、f(x)=2x という関数を例にとると、x に 3 を入れる (In) と、6 という値が出てくる (Out) という感じです。)
8-41
これはどのような意味があるのでしょうか。まず、アルファは透明度の値なので、0 が透明で 1 が不透明です。透明であるということは、その色 (したがってその形) が見えないことになります (透けているので背景が見えることになります)。1 は不透明なのでその色 (形) しか見えず背景は見えなくなります。

グラフを見ます。横軸は時間 (パーティクルの寿命) を表します。パーティクルは、0 で誕生して、1 でその一生を終えます (ということになっています)。Point 1 では、時間は 0.0 です。つまりパーティクルが誕生した瞬間です。その時の透明度は 1 です。つまり不透明なので、はっきりとその色が見えることになります。Point 2 では、時間は 0.4 で、透明度は 1.0 です。つまり、パーティクルの寿命の半分まで行かないで (短いうちに)、もう見えなくなってしまいます (透明になってしまいます)。

実験 ————————————————————-
Point 2 の In Val を 1.0 にセットしてみると、次のように、リボン パーティクルは途中で透明にならないので、長いリボンが表示されます。
8-42
——————————————————————————————————–

最後に、Lifetime (寿命) モジュールで、寿命を調整します。
8-43

さて、メインエディタでできあがったパーティクル システムをビューポートにドラッグアンドドロップして、出来栄えを確認してみましょう。
8-44

今回は以上になります。ご覧になっていただき、ありがとうございました!








About なつのや

アンリアル・エンジン 4 を基礎から勉強するためのサイト「UE4 の学び部屋」を開いています。どうぞよろしくお願いいたします。
UE4チュートリアル, パーティクル

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>