日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年5月28日木曜日

アトリビュートのデータタイプを調べる。

他の人が作ったパーティクルにはその人独自のカスタムアトリビュートが追加されていることがある。

そのシーンに新しいパーティクルを追加し、同じ動きをさせるには同じエクスプレッション、同じカスタム・アトリビュートを作ることが必要になる。

エクスプレッションに関しては、コピペしてノード名を変えるぐらいでよいのだが、カスタムアトリビュートを作るにはそのデータ型をしらないと作れない。

今回はそれを知る方法を調べてみた。


--------------------
<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 件のコメント:

コメントを投稿