結果から言うとこんかいのエントリでは何も得ることがなく、失敗に終わっているので、そのつもりで呼んでください。
オンラインヘルプ「ゴール アトリビュートを編集する」のページに
「ゴール ポイントのデータをパーティクル単位で検証する 」という項目がある。
そこにさらっと以下のように書かれている。
「たとえば、ゴール オブジェクトに近づくにしたがってカラーが濃くなるように、パーティクル カラーを変更することができます。 」
少し前に読んで、どうやってこれを実現することができるのかずっと気にかかっていた。
具体的な例が書いてあればよいのだが、ヘルプはそこまで初心者には優しくない。
結局、そのときはどうやればよいのかわからなかったが、今は、magコマンドの使い方がわかったので、各パーティクルの座標値を取得して、ゴールまでの距離を割り出し、パーティクル個別の色を変えることができるのではないかと思う。
またゴールから各パーティクルまでの距離は(magの値とは違うかもしれないが)リアルタイムで計算されているはずだから、何らかのアトリビュート値として保管されていても良いような気がする。
もしそうならその値を取り出すことができればそれを使うことができるし、magを使う手間が省ける。
そこで、まずmagコマンドではなく、後者の可能性を先にさぐることにした。
--------------------
まず、オンラインヘルプのこの項目をよく読んでみると
ゴールを作成後、particleShapeノードの「Goals and Weights」セクションでCreate goalWeightNPPボタンを押すことで各パーティクルのゴールのアトリビュートが表示できることが書かれており、おそらくこれが関係が深いのだろう。
とりあえず、ここでは距離(位置)に関係することなのでPositionで作成してみた。
その値はコンポーネントエディターのパーティクルセクションで確認できると書いてある。
シミュレーションを数フレーム実行した後に、コンポーネントモードで数個のパーティクルを選択し、
コンポーネントエディターを見てみる。
(このとき、表示されないようであれば「オプション > ゼロ カラムの非表示(Options > Hide Zero Columns)を選択してゼロ列を表示します。 」)
これにより表示される内容は以下の12項目。
TranslateX
TranslateY
TranslateZ
SpeedX
SpeedY
SpeedZ
mass
lifespanPP
goalPP
goalWorldPosition1PP[0]
goalWorldPosition1PP[1]
goalWorldPosition1PP[2]
このうち最後の3つが先ほどのステップで作成されたアトリビュートになる。
しかしながらシミュレーションを進めても変化するのはTranslateとSpeedの6つの値のみで、他の値は変化しない。
goalWorldPositionということなので、ゴールの位置であり、パーティクルの位置はないからなのか?
変化しないのであれば、このgoalWorldPositionから、リアルタイムで変化する現在位置もしくはゴールからの距離を表示しているものではないと言うことになる。
いったいこの値は何を表示するものなのか?
そこでgoalWorldPositionをグーグル検索してみた。
見つかったのはいずれもHighend3Dで、一つはスレで、もうひとつはチュートリアル。
Highend3D
(Re: Couple of particle questions)
Highend3D
(Using Expressions in Maya 7: goalWeight and goalWorldPositionPP.)
これを見ても、わかったのは、ゴールウェイトの調整に使われることぐらい。
名前「goalWorldPosition」から推測すると、ワールド座標内でのゴール位置ということになる。
それをパーティクル毎に設定できるとうことかもしれない。
しかしがら、これを利用して、ゴールに近づいたら色を変えることができるのかはできそうにない。
今回は、ここで暗礁に乗り上げたので、次回はすなおにperParticleのポジションを取得し、magで距離を割り出してから色を変える手順に戻ってみたい。
それにしても上記のチュートリアルを見ると自分はまだまだ知らなくてはいけないことがたくさんあるなぁと思わされた。
こういったスクリプトを作れるアイデアもないのだが。
なさけないことにシーンファイルを見てもなにが利点なのか、どのような事に使えるのかピンとこない...。 それってMelスクリプト以前の問題??...。 がんばらねば。
0 件のコメント:
コメントを投稿