2010年5月24日月曜日

サーフェイスからパーティクルをエミットする。

1)Sphereを作成。

オブジェクトレベルで「sphere_object1」ができる。
一つ下の階層に「sphere1」サーフェイスノードがある。

「sphere_object1」コンテナ・オブジェクト:トランスフォーム、ピボット情報など。
sphere」SOP:プリミティブの種類、半径、中心座標、向き(axis)を決める。


----------
2)「sphere_object1」もしくは「sphere」SOPが選択された状態で、「Source from Object」を適用

「particle_emitter1」ができる。
一つ下の階層に「object_merge1」サーフェイスノード、「popnet1」サーフェイスノードがある。
さらに「popnet1」の下層に「source1」パーティクルノードがある。

「particle_emitter1」コンテナ・オブジェクト:トランスフォーム、ピボット情報など。

object_merge1」SOP:ほかの複数ジオメトリオブジェクトからジオメトリを合併(マージ)する。
<Object1>アトリビュート:併合するジオメトリへのパス。選択もしくはタイプして入力。
(例:/obj/sphere_object1/sphere1)
<Gropu1>アトリビュート:併合するオブジェクトの中にあるプリミティブのグループ。
オブジェクトの一部だけを併合したいときに使う。
空欄でオブジェクト全体

ponet1」SOP:パーティクルノードのネットワーク
ジオメトリオブジェクト内で、パーティクルネットワークを利用できる良ようにする。
パーティクルネットワークの中で「context Geometry」として、このノードのインプットに接続された、どんなジオメトリでも参照可能。
DOP(ダイナミック・オペレータ)インポート・タブでの設定は、SOPのアウトプットを上書きします。

「source1」POP:ジオメトリからパーティクルを発生させる。そのためのアトリビュートはここにある。
例1)パーティクルを頂点でなく、サーフェイスからエミットする。:Emission Type
例2)エミット時の速度。:Variance, Velocity

Tips:Varianceを0,0,0に設定しておけば、エミットされたパーティクルが誕生時の場所にとどまるので、エミットされている位置を確認するのに便利。


----------
3)「particle_emitter1」→「source1」→「source」タブ
Emission TypeをSurface (randamu)に設定。

これでサーフェイスからパーティクルが発生する。

注意:発生方向は裏表両方を含み、このままではスフィアとパーティクルのコリジョンは存在しない。 
Sphereの外側方向にのみパーティクルが移動するようにするには、以下の手順を実行する。


----------
 4)「particle_emitter1」の下層に移動。
「object_merge1」のアウトプットを右クリックし「point」とタイプしてPointサーフェイスノードを作成する。

「point1」SOPが「object_merge1」と「popnet1」の間に作成される。



Point」SOP:ポイントのアトリビュートをマニュアル操作で追加もしくは編集する。

各ジオメトリ・プリミティブは0から始まるポイントのリストを持っている。
各ポイントはXYZ位置、色、アルファ、テクスチャーUV、ウエイト、ノーマル方向などのアトリビュートを持っている。
(ポリゴン、NURBSそしてプリミティブもまた頂点のリストを持っている。
ポイントのリストのそれらの位置によって参照されるポイントである。
これらのポイントは複数のポリゴンやNURBS、プリミティブによって共有される)

PointSOPは、そのポイントの位置を含んだアトリビュートの編集を可能にする。
例えば、あるポイントに対するオブジェクトのバウンディング・ボックスの中心からの距離を変更できる。(ローカル変数の$BBX, $BBY, $BBZを使う)。ポイントの色($CR, $CG, $CB)の変更、ポイントのノーマルの変更 ($NX, $NY, $NZ)も可能だ。

これは、とても一般的かつパワフルなオペレータである。
サーフェイスの(ポイントの位置を変更することにより)デフォームや、
(ポイントの色を変えることによる)おもしろい色の効果を作ったり、
(ポイントのノーマルを変えることで)放出されるパーティクルの軌道を変更することを含み、ほとんど無限の目的に対してこれを使うことができる。

このオペレーター内で使われるエクスプレッションは、各ポイント毎に評価されることに注意しておかなくてはなりません。
ローカルの変数「$PT」は現在処理されているポイントのポイントナンバーを持っています。

Tips
●ポイントの編集のためにエクスプレッションを書くときには、pointとpointavg関数が便利です。
●ビューワー内のポイントのポイントナンバーをみるには、ディスプレイ・オプション・ウインドウ(Viewport Menu > Display > Display Options, またはDキーを押す)か、ビューワーの右側にあるディスプレイ・ツールバーにある、「Point numbers」アイコンをオンにします。
● ノーマルを裏返すにはAdd normalsにして-$NX -$NY -$NZと入力します。
●このオペレータは、ポイントのアトリビュートを編集し、primitiveSOPはプリミティブ全体のアトリビュートを編集します。
●pointSOP内のローカル変数は、ポイントに関係しています。
detail, primitive, vertexといった変数を使うために、「det」、「prim」、「vtx」といったprefixを使うことができます。
例えば $primTX, $primTY, $primTZは、そのポイントが属する最初のプリミティブの重心です。


----------
5)「popnet1」→「Standard」タブ
「Keep Normal」を「Add Normal」へ変更。


Point」SOPの基本事項
 <Keep> :デフォルト値を使用。
 <Add>  :新しい値を入力可能にする。
 <No>   :すべての値を削除。


「Add Normal」にすると、自動的に$NX, $NY, $NZというローカル変数が入力される。
これは正方向へのノーマル方向を示している。
負方向へしたいのであれば、-$NX, -$NY, -$NZとする。

ただし、ノーマル方向を変えても、パーティクルのエミッション方向は変わらない。
エミッション方向を変えるには「source1」の「inherit Velocity」を-1に設定する必要がある。
これがすべての場合に言えるのかどうかはわからないが、Mayaとは異なる点である。

  

0 件のコメント:

コメントを投稿