このノードは、メッシュ、ボリューム、パーティクルエフェクトをループにします。
この基本的な考え方としては、タイムラインの半分だけアニメーションをオフセットさせてから、サイン波を使って2つのアニメーション間をブレンドするというものです。
これは、トポロジーが一定なメッシュまたはボリューム、正しいアトリビュートを持ったpopnetから発生したパーティクルで動作します。
ループを適用する前のメッシュシーケンス
ループを適用した後のメッシュシーケンス
Note
パーティクルの時間範囲をあまりにも短く設定すると、ループする前にすべてのパーティクルが除去されてしまいます。 そのため、状況に応じてlifespan設定を編集する必要が出てきます。 入力のパーティクルシステムを上手く動作させるには、次のPointアトリビュートが必要です: “id”と“age”と“life”です。あと“pscale”(このアトリビュートは見つからなければ自動的に作成されます)。
パラメータ ¶
Start Frame
入力アニメーションの開始フレーム。
End Frame
入力アニメーションの終了フレーム。
Num of Double-Loops
ループは常に2つの組で生成されます。 例えば、このパラメータを1/2/3に設定すると、視覚的に2/4/6個の繰り返し周期が確認されることでしょう。 これは、そのループ効果の実現方法が原因です。 例えば、このパラメータをN(Nを2としましょう)に設定し、アニメーションの長さが200フレームとします:
まず第一に、ベースアニメーションは、N個(2個)の区画に分割されます。最初の区画のみが保持され、N回(2回)だけループされます。
次に、その繰り返された最初の区画(1区画あたり100フレーム)をコピーして、その区画長の半分(50フレーム)だけシフトします。
最後に、(100フレーム分の区画を繰り返した)ベースセクションと(50フレーム分オフセットして100フレーム分の区画を繰り返した)シフトしたセクションを一緒にブレンドまたは加算して、途切れない遷移を生成します。結果として、1回のベース区画の長さ(100フレーム)の範囲では、視覚的には実際に2回ループが発生しています(50フレーム毎に1回)。そのような理由で、より適切に言えば、このループのことを“Double-Loops”と呼びます。
Born Before Loop Start
パーティクルをもっと早い段階で誕生させる方法を設定します。 ループを動作させるには、そのパーティクルの誕生と消滅が最初のDouble-Loopの範囲内で起きなければなりません。 例えば、 Num of Double-Loops を2に設定すると、最初のDouble-Loopの終了フレームは、Start FrameとEnd Frameの真ん中になります。
Dead After Loop End
パーティクルをもっと遅い段階で消滅させる方法を設定します。 ループを動作させるには、そのパーティクルの誕生と消滅が最初のDouble-Loopの範囲内で起きなければなりません。 例えば、 Num of Double-Loops を2に設定すると、最初のDouble-Loopの終了フレームは、Start FrameとEnd Frameの真ん中になります。
パーティクルの平均寿命がDouble-Loopの範囲内に収まるようにすることを推奨します。しかし、Double-Loopの最後でパーティクルの寿命をクランプしなければならない場合は、一度にたくさんのパーティクルが消滅するので、パーティクル数が突然減少してしまう可能性があります。 Fade Out Pscale を使用することで、これを対処することができます。
Prevent Loops from Repeating Particle IDs
ループの度にポイントIDをオフセットさせることで、同じID値が繰り返されないようにします。 これは有効のままにすることを推奨します。 これは、入力ジオメトリ上で既に繰り返されているIDsを修正しないことに注意してください。
Particle Wrap Mode
アニメーション全体(Start FrameからEnd Frame)の終了時点でまだ生きているパーティクルの残りの寿命がアニメーションの開始まで持ち越されます。
Stay Alive from End to Start: これはHoudiniに最も適しています。これはIDの整合性を維持し、パーティクルを自然に老化させます。
Die at End and Respawn as New Particles at Start: これはNiagaraに適しています。これはid、age、lifeのアトリビュート値をオフセットさせて、アニメーションの終了時のパーティクルグループとアニメーションの開始時のパーティクルグループの2つを別々に生成します。たいていの場合、エミッターループ遷移でいくつかパーティクルの不一致が発生します。この問題は Fade In Pscale を使って対処することができます。
Spawn at Start, Hide, and Reappear near End: これはNiagaraに適しています。これはパーティクルを巡回させるのではなく、アニメーション開始時にパーティクルを放出し、アニメーション全体にわたってそれらのパーティクルの生存を維持し、パーティクルを非表示にすべき時にそのパーティクルのpscaleを0に設定してから、各ループアニメーション終了後にまた再度表示させることができます。この方法だとエミッターループ遷移でパーティクルの不一致は発生しませんが、非表示のパーティクルを動かすための無駄なリソースを消費することになります。
Never Spawn to Avoid Wrapping: 巡回させる必要が出てくるパーティクルを先制して除去します。これによって巡回の問題が回避されますが、結果としてエミッターループ遷移中のパーティクル数が著しく減少することになります。
Fade In Pscale
各パーティクルの元々の生存期間の始めから“pscale”アトリビュートを0%から100%まで線形的にスケールします(パーティクルの巡回からのageアトリビュートとlifeアトリビュートへの変更による影響を受けません)。 これによってエミッターループ遷移中に起こり得る些細なグリッチが目立たなくなるので、特に Particle Wrap Mode が“Die at End and Respawn …”に設定されている時に役立ちます。
Fade-In Duration
各パーティクルのpscaleがフェードインする効果の絶対的な期間(秒)。
Fade Out Pscale
各パーティクルの元々の生存期間の終わりに向かって“pscale”アトリビュートを100%から0%までに線形的にスケールします(パーティクルの巡回からのageアトリビュートとlifeアトリビュートへの変更による影響を受けません)。
Fade-Out Duration
各パーティクルのpscaleがフェードアウトする効果の絶対的な期間(秒)。
Visualization ¶
Output Preview Geometry
プリミティブ球を使ってプレビュージオメトリを出力します。 pscaleアトリビュートがこの球のスケールに影響を与えます。 これを有効にすると、このノードの出力が上書きされるので、実際のパーティクルを出力する時はこれを無効にしてください。
Color by Normalized Age
ageアトリビュートをlifeアトリビュートで割った値を使用してプレビューの球に色を付けます。 0から1の範囲の値が紫から赤までのカラーグラデーションにマップされます。