他の人が作ったパーティクルにはその人独自のカスタムアトリビュートが追加されていることがある。
そのシーンに新しいパーティクルを追加し、同じ動きをさせるには同じエクスプレッション、同じカスタム・アトリビュートを作ることが必要になる。
エクスプレッションに関しては、コピペしてノード名を変えるぐらいでよいのだが、カスタムアトリビュートを作るにはそのデータ型をしらないと作れない。
今回はそれを知る方法を調べてみた。
--------------------
<AddAttributeウィンドウ>
まずアトリビュートのデータ型にはどのようなものがあるのか?
ParticleShapeノードのアトリビュートから
AddDynaicAttributes>「General」>「AddAttribute」ウィンドウ
を表示すれば、どんなデータタイプがあるかを見ることが出来る。
enumという見慣れないデータタイプがあるが、これはオンラインヘルプによると
「列挙型」リスト、つまりプルダウン リストから選択ができるアトリビュートのこと。
--------------------
<パーティクル単位のアトリビュート>
さて、パーティクルに追加される主なカスタムアトリビュートはパーティクル単位(Per Particle)のアトリビュートである。
PerParticleのアトリビュートは画面を見るとわかるように配列(array)である。
これは複合型アトリビュートとヘルプでは、説明されており、
一つのアトリビュート名で、複数のパーティクルの個々の値を格納するために配列が用いられている。
ちなみに「Scalar」を選択すると、一つの値しか格納せず、それがオブジェクトのパーティクル全体に影響することになる。
--------------------
<パーティクル単位は二つのタイプのみ!>
さて、このウィンドウでやってみるとわかるが、「PerParticle」を選択した場合には選択できるデータタイプは、「vector」か「float」の二つだけになる。
上記のヘルプにはベクトル配列型のデフォルトのアトリビュートの例として以下の三つがある。
position(位置)
Velocity(速度)
Acceleration(アクセラレーション)
カスタムアトリビュートでのベクトル配列では、Colorを追加したときに表示される
rgbPP(色)
がある。
--------------------
<アトリビュートタイプを調べる>
さて、PerParticleアトリビュートには他にもいろいろなアトリビュート名があるのでエクササイズとして、それぞれ「vector」なのか「float」なのかを確かめてみたい。
アトリビュート名を指定して、アトリビュートのデータ型を返してくるだけなのだが、
「listAttr」はアトリビュート名をリストアップするだけで、そのタイプを調べるには役不足。
これに使えるのは「getAttr」コマンド+「-typ(-type)」フラグ(参照:オンラインヘルプ)
(使い方)
例:positionアトリビュート
getAttr -typ particleShape1.position
// Result: vectorArray //
これで「Per Particle (Array) Attributes」にリストされているすべてのアトリビュートのタイプを調べてみた。結果は以下の通り。
position ...vectorArray
rampPosition ...vectorArray
velocity ...vectorArray
rampVelocity ...vectorArray
acceleration ...vectorArray
rampAcceleration ...vectorArray
mass ...doubleArray
lifespanPP ...doubleArray
worldVelocity ...vectorArray
これでアトリビュート名からそのデータタイプを知ることが出来る。
ただ疑問が残る...。
0 件のコメント:
コメントを投稿