Niagaraの入門(12) ParameterとNamespace

Niagaraの入門(12)

UE4確認バージョン  4.20.1

※なおこの段階ではNiagaraはアーリーアクセスなので

※今後内容がかわるかもしれないのでご注意ください

ParameterとNamespaceについて

EmitterやModuleとのやりとりで主に扱うParameterについてなのですが

これらはNamespace管理されています。

Namespaceとはプログラムなどで変数やClassなどの定義が

名前でされるのですが、プロジェクトやプラグインなどによって

同名のような名前がある場合に、競合をさけるために

複数の名前の集合で管理することによって回避するためのものです。

例)xxxx.aaaa.hogehoge

 

Emitter内で定義するところがここにあたります。

ここで定義されているカテゴリーが主に、

namespaceの最初につける必要があります。(一部例外あり)

例)Emitter.hogehogeA

例)Particles.hogehogeB

この一番最初の名前にさえ従えば基本あとは自由な名前設定と型のタイプを指定できます。

f:id:CrabPunch:20180801190950p:plain

 

主に使用するものはSystem.  Emitter. Particles. でパラメーターを定義して

使用することが多いかと思われます。

Engine.は参照することはあって定義することはそうそうないかとは思います。

こちらはゲームでの経過時間などUE4の内部から必要な値を使うがほぼほぼかと思われます。

 

ParameterCollection」 「 User」 「Other」に関しては、もう少し情報が集まってから再度書くかもしれません。

 ・ParameterCollection

http://crabpunch.hatenablog.com/entry/2018/08/14/071940

 

・User

http://crabpunch.hatenablog.com/entry/2018/08/16/221858

 

なぜ今更この話をしたか?

単にパラメーターとは変数なようなものですよ程度の理解さえしておいて

いただければ説明することもないかとは思っていたのですが、

前回の記事のNormalの時の話と手順前後となってしまい恐縮です。

 

お気づきのかたも居られたかと思いますが、

前回の記事の途中で出てきた、

 

[Particles.SampleStaticMesh.MeshNormal]

これはどこから出てきたのか?

定義はしているがどこで値を設定しているのか?

SampleStaticMeshの中をみても、一見設定されているようには見えません。

ただ似たような名前の[Particles.Module.MeshNormal]というものは設定されています。

 

f:id:CrabPunch:20180801192427p:plain

 

 

 

実験

 新規にEmitterを作成して

3つのパラメーターを定義します。

f:id:CrabPunch:20180801193013p:plain

 

 次にModuleの2つ作成します。

中身は以下の通りで、

Module名前をMyTestColorAとMyTestColorBとします。(中身はまったく同じものです)

 

f:id:CrabPunch:20180801193235p:plain

f:id:CrabPunch:20180801193428p:plain

 

次に[Particles.MyTestColorA.Color][Particles.MyTestColorB.Color]

のパラメーターをそのままColorModuleにて代入すると結果がわかるかと思います。

f:id:CrabPunch:20180801194004p:plain

f:id:CrabPunch:20180801194016p:plain

 

つまりModuleのMyTestColorAの内部で設定された

[Particles.Module.Color][Particles.MyTestColorA.Color]となり

 

MyTestColorBの内部で設定された

[Particles.Module.Color][Particles.MyTestColorB.Color]となっていることが

わかります。

 

 

 よって

[Particles.SampleStaticMesh.MeshNormal]

これはどこで設定されたものか?

SampleStaticMeshで設定されていた

[Particles.Module.MeshNormal]で代入されたものである

ということがわかります。

 

Bitmaskついて

たとえばParticlesモジュール内でEmitterの値をMapSetしようとしても

候補にでてきません。

下流から上流への書き込み制限だと思っていました。

f:id:CrabPunch:20180826105540p:plain

 

左上のモジュールの詳細パネルのBitmaskにて

f:id:CrabPunch:20180826105635p:plain

Emitter項目を追加します。

f:id:CrabPunch:20180826105704p:plain

 

こうすることによってMapSetにてEmitterを返すことができるようになります。

f:id:CrabPunch:20180826105741p:plain