2010年5月26日水曜日

パーティクル・コリジョンの作成

0)パーティクルをエミットさせる。

1)床のコリジョン・オブジェクトに使用する「Grid」を作成。
結果: 「grid_object1」オブジェクトが作成される。


2)Gravityを適用して、パーティクルが床(Grid)に向かって移動するようにする。
Drive Prticleタブから「Gravity」をクリックして、パーティクルを二回選択。
必要に応じてScaleを調整。(自分の例では、0.05~0.5程度を使用)
Tips:Houdiniはデフォルトで、1ユニットが1mであることを考慮してScaleを決めると良い。
注:このステップはコリジョンを見やすくするためのもので、コリジョンの対象やシーンの内容によっては、必ずしも必要ではない。


3)アニメーションを進めてパーティクルがビューポートに見える状態にする。


4)パーティクルをビューポートで選択して、Drive Prticleタブから「Collison」をクリック

注: Networkエディターはシーンレベルに移動しておく。


5)パーティクルを再度選択しEnterキー、つぎにコリジョン対象のオブジェクト(Grid)を選択しEnterキーを押す。
結果: 「collision1」POPが、「gravity1」POPのアウトプットに接続され、パーティクルがGridで跳ね返るようになる。
注: すべてビューポート内での操作
ヘルプ: <Collison>POP
このオペレータは参照されるSOPのジオメトリとパーティクルとの間のコリジョンを検出、実行する。
Behaviorの設定について
Die on collision: コリジョン時に消滅
Bounce on collision: コリジョン時にサーフェイスで跳ね返る
Stop on collision: コリジョン時に停止する。
Stick on collision: コリジョン時にサーフェイス上にくっついて停止する。
Slide on collision: コリジョン時にサーフェイス上をスライドしていく。


コリジョン後の振る舞いを設定するには、「Final Behavior」を使う。
例えば、Behaviorを「Bounce on Collision」に設定して、バウンス後に坂をスライドしてほしい場合には「Slide on Collision」を選択しなければパーティクルはバウンス後にその場にとどまる。
Bounce on Collision: バウンスし続けた後に停止(目に見えないバウンスを続けているのかも?)
Die on Collision: バウンス後に消滅
Stop on Collision: バウンス後に停止
Stick on Collision: バウンス後にサーフェイスに貼り付く
Slide on Collision: バウンス後にサーフェイス上を滑る。

Minimum Impulse: Final Behaviorに置き換わる程度の設定。



6)バウンスが強すぎるようなら「Collision1」SOPのGain Tangent、Gain Normalを下げる。
結果: バウンスが適度になる。
Tips: 設定の数値は、ゼロ=エネルギーを得ない。 数値=数値の大きさによりエネルギーを得る量が増減する。
Gain Tangent: コリジョン時のタンジェント方向へのエネルギー
Gain Normal: コリジョン時のノーマル方向へのエネルギー


7)オブジェクトを透過するパーティクルがある場合は、Collision Toleranceを少しだけ(0.01)つけてやる。
結果: コリジョンがより正確になり透過するパーティクルが現象もしくは無くなる。
Tips: Collision Toleranceはジオメトリからパーティクルがコリジョンする場所までの距離を決める。デフォルトはゼロで距離がないため、いくつかのパーティクルは計算誤差により透過してしまう。場合によっては0.01でも小さすぎることもある。

0 件のコメント:

コメントを投稿