今回はUnreal Engineにて次のようなケースで試せる解決策を紹介する。
Sprite Renderer
だと次のようなパーティクルを
Ribbon Renderer
に差し替えて次のようにしたい
※デフォルトのリボンマテリアルは尻尾側の色が自動で薄くなる
でも、普通に作ると...
そうなるんかーい!
これを解決する策を紹介する。
少し長くなるので先に何を使うかだけ書いておく
RibbonLinkOrder
を設定Sample Particle From Other Emitter
の場合はParticle ID Sampling=Apply Sampled ID as Ribbon ID
に変更あくまで再現して確認したい人向けなので、解決策だけ読みたい方はこの項はスキップして良い。
軽く作成の概要を書いておく。
Spawn Burst Instantaneous
にてパーティクルを生成するエミッタTorus Location
にて円状にパーティクルを配置Handle Radius=0
にすると1列の円にDistribution
のU Position
にReturn Normalized Exec Index
を設定しないとパーティクルは重なってしまう以上で完成。
なぜかRibbon Renderer
で描画するとリボンがぐちゃぐちゃになる。
パーティクルのスポーンに新しいスクラッチパッドモジュールを追加
ダブルクリックしてノードエディタのようなものが出る
この画面に入ると複雑そうで気が引けるが一瞬で終わる。
少し右のMap Set
のノードで+
を押してRibbonLinkOrder
をセット。
そこに実行インデックス
を挿せば完成。
※実行インデックス
はexec
で検索すれば出る。
必ず適用
を押すこと
これで既に次のようになっているはずだ。
実は私もあまり細かいことはわかっていない。
海外のフォーラムを読む感じだとSpawn Burst Instantaneous
で生成したリボンはデフォルトで生成順につながらないらしい。
ではこのRibbonLinkOrder
とはなにかというとリボンの接続順を明示するパラメータのようだ。
デフォルトではこのパラメータは用意されておらず、上のスクラッチパッドにて「実行インデックス」という名称が示す通りパーティクルの生成順にRibbonLinkOrder
を設定している。
次は少し複雑な例。中級者以上向け。
先ほどと殆どおなじエミッター
もう一つ別のエミッターを作って、上のパーティクルをスタート地点として外に向かってパーティクルを撃つ。
使うのはSpawn Particles From Other Emitter
Sprite Renderer
だと実行結果は次
このままのイメージで外側にリボンとして点を結びたい。
では、リボンレンダラに切り替える。
美しい配列ではあるが、思っていたのと違う。
外に繋ぐ場合(リボンを別々にする場合)はどうすればよいのだろうか。
Sample Particles From Other Emitter
のParticle ID
> Particle ID Sampling
こちらをApply Sampled ID as Ribbon ID
に変える。
正しくリボンが表現できた。
これはSpawn Particles From Other Emitter
で生成されたパーティクルに、それぞれRibbon ID
というアトリビュートを付与するという設定。
このときRibbon ID
は発生している元のパーティクルのIDと同じ数字が設定される。
※デフォルトのままだとこのアトリビュートは何も設定されない。
つまり1本のリボンにつながっているパーティクルは全て同じRibbon ID
というのを持っている。
Ribbon ID
が同じモノは一つのリボンにつながるが、違うものはつながらない。
発生源のパーティクルはそれぞれ別のIDを持っているので、そこから発生したパーティクルだけが接続されているということ。
※内部の実際の数字はちょっと違う。あくまで例
今回はちょっと理解が難しいが、ひとまず解決策として2つ紹介した。
ただ、リボンがつながらない理由はケースバイケースでこの他にも様々なエラーが考えられる。
上のケースはおそらく最も良くあるケースなのでこの2つは覚えておきたい。