On this page |
概要
通常のジオメトリネットワークはフレーム毎に自己完結しています。つまり、ジオメトリの見た目は、フレーム毎でのジオメトリネットワーク内のノードに基づいて決まっています。
$F
(現行フレーム)のような変数を使えば、フレーム毎にノードの挙動を変更したり、ポイントの位置をアニメーションさせたりすることもできます。
このノードは、サーフェスネットワークが前のフレームのジオメトリを 変更 するようにできるので、反復フィードバック、オートマトン、シミュレーションみたいな効果を作成することができます。
例えば、Gridを作成して、そこにPoint Jitterを接続して、Point Jitterノードの Seed を$F
に設定するとします…
-
通常のジオメトリネットワークでは、ポイントはフレーム毎にランダムな位置に動かされて、フレーム毎に完全に独立したルック(見た目)を作成します。よって、ポイントがフレーム間でランダムな位置に"瞬間移動"することになります。
-
Solverノードネットワーク内でジッター(微震)を表現すれば、ジッター(微震)が 前のフレーム の各ポイントポジションに適用されるので、ポイントがさまよって動く"酔歩"の状態になります。
How to
-
ジオメトリネットワーク内で⇥ TabメニューからSolverノードを作成します。
-
ソルバで変更させたいジオメトリをSolverノードの 1番目 の入力に接続します。
-
Solverノードをダブルクリックして中に入ります。
ネットワークエディタが、ソルバの入力を表現した
Input_1
からInput_4
とPrev_Frame
というラベルの付いたノードを含むジオメトリネットワークにジャンプします。ソルバネットワーク内の
Input_1
ノードには、1番目の入力に接続した 元の ジオメトリが含まれています。このノードは、例えば、Rest Position(静止位置)を受け取るノードで時々役に立ちます。 Solverノードの2番目、3番目、4番目の入力は、必要に応じてソルバネットワーク内にジオメトリを渡すための予備です。 -
Prev_Frame
ノードの出力からサーフェスノードの構築を始めます。 このネットワークは、すべてのフレームでクックされるので、Prev_Frame
ノードが前のフレームのジオメトリを出力することができます。"出力する"ジオメトリのノードはディスプレイフラグをオンに設定してください。例えば、Transformノードを
Prev_Frame
ノードの出力に接続し、Transformノードの Translate パラメータを0, 1, 0
に設定すると、Solverノードの1番目の入力に接続したジオメトリがフレーム間で1単位ずつ上昇していきます。 -
Solverノードのジオメトリネットワークから元のジオメトリネットワークに戻るには、Uを押すか、ネットワークエディタの上部のパスバーで元のネットワークをクリックします。
-
メインウィンドウの下部にあるプレイバーの再生ボタンをクリックして、ソルバの効果を確認してください。
Note
Solverノード のネットワーク内で再生ボタンをクリックしても、フィードバック効果を確認することはできません。プレイバックは、そのSolverノードのネットワーク内の現行フレームでの元の入力ジオメトリに対する実行結果が表示されるだけです。
Tip
もっと簡単にフィードバック効果を確認できるようにするには、Solverノードのネットワークを設定したネットワークエディタタブを作成してピン留めすることです。
動作の仕組み
このセクションを読まなくても、Solverノードを使って反復フィードバックを作成することができますが、上級者または問題を抱えている人の場合には、このセクションが役に立ちます。
Solverノードには、SOP Solver DOPを持つ単純なDOP Networkが含まれています。 Solver SOPをダブルクリックすると、そのノードの実際の内容(DOP Network)にジャンプせずに、さらに2階層下にジャンプして、SOP Solver DOPの内容(SolverノードにSOPを指定するためのネットワーク)を表示するマジックが仕掛けられています。
何かしらの理由でDOP Networkを修正したい場合は、ネットワークエディタの上部のパスバーで、そのネットワークをクリックすることで、そこにジャンプすることができます。
Tip
Solver SOPの内容を表示しながらアニメーションを再生すると、フィードバックされていないフレームがキャッシュに保存されてしまいます。これが原因で、それらのフレームが再生時に何もしないように見えます。シミュレーションをリセットすれば、この問題を修復することができます。
パラメータ
Reset Simulation
シミュレーションをリセットします。
Initial State
通常では、1番目の入力が初期状態です。しかし、このトグルは、他のSOPを初期状態として明示的に指定することができるので、その入力の制限を解放することができます。
Start Frame
ソルバを開始するフレーム。このフレームより前のジオメトリは空っぽになります。
Sub Steps
フレーム間を分割するサブステップの数。
Cache Simulation
純粋なSOPシミュレーションではキャッシュは不要ですが、スクラブ(フレーム間を前後に動かす)するのに役に立ちます。
Allow Caching To Disk
メモリのキャッシュ最大サイズに到達した時に、 DOP Networkは、古いキャッシュのエントリーを削除して新しいエントリー用にスペースを確保するのか、 古いエントリーをディスクに保存するのかどちらかを行なうことができます。 このオプションをオンにすると、古いキャッシュのエントリーをディスクに保存して、必要に応じてディスクから再読み込みします。 このモードは、単に古いキャッシュのエントリーを削除するよりも遅いですが、メモリのキャッシュサイズに関係なく、 全体のシミュレーションの履歴が常に利用可能になります。
Cache Memory (MB)
このシミュレーション用のキャッシュのサイズをMBで指定します。 このサイズを越えると、 Allow Caching To Disk パラメータの設定に応じて、古いキャッシュのエントリーを削除またはディスクに保存して、スペースを確保します。
Examples
CircleSolvers Example for Solver geometry node
このサンプルは、ソルバノードを使用して、 常微分方程式により、オブジェクトをトランスフォームすることができるいろいろな方法を説明しています。
このサンプルには、6個の異なるソルバがあります。 また、評価基準として正確な解もあります。 ソルバは、以下の 初期条件を持つ結合常微分方程式を解く数値法です:
x' = y ; x(0) = 1 y' = -x ; y(0) = 0
常微分方程式の数値法は: Forward Euler, Runge-Kutta Second Order, Runge-Kutta Third Order, Runge-Kutta Fourth Order, および2つの方法で解かれるParker-Sochackiです。 あるバージョンでは、Parker-Sochackiは、5の位数でハードコード化されます。 別のバージョンでは、Parker-Sochackiは、ユーザーが階数を調整することができるfor loopで書き込まれます。
SimpleCloth Example for Solver geometry node
このサンプルでは、Verletインテグレーションと単純な明示的なバネを使って簡単な布をシミュレーションする方法を説明しています。
SimplePop Example for Solver geometry node
このサンプルでは、簡単にパーティクルシステムの使い方を説明しています。 ここでは、ソースジオメトリからパーティクルを発生させ、重力でパーティクルを落下させています。
The following examples include this node.
FadedTorus Example for Attribute Fade geometry node
このサンプルでは、impactレコードとAttribute Fade SOPを使ったアトリビュートの蓄積方法とフェード方法を説明しています。
アニメーションするソースポイント Example for Cluster Points geometry node
ポインの数が変わるソースジオメトリをクラスタにする時、そのクラスタとクラスタの番号はフレーム毎にランダムに変化するので、おかしな結果になります。それを避けるために、いくつかのテクニックを使って、ポイントの最終番号に基づいたクラスタを作成しなければなりません。
最初に、Cluster Pointsノードでクラスタにするポイントのポイントポジションのセットを指定するために、 Cluster Pointsノードの2番目の入力 を接続します。これを rest position と呼びます。
例えば、Impact Analysisツールは、RBDオブジェクトの衝突からポイントを作成します。その結果のジオメトリのポイントの数は、RBDオブジェクトが衝突するほど増えます。
-
ROP OutputドライバとFileノードを組み合わせて、インパクトポイントジオメトリをディクスにキャッシュ化します。
(サンプルのファイルは単純化するためにディスクにキャッシュ化していません)
-
FileノードからTimeshiftノードを枝分かれして、Timeshiftの出力をCluster Pointsノードの2番目(rest position)の入力に接続します。
-
Timeshiftノードの Frame パラメータをクラスタを実行したい時間のフレームに設定します。通常はエフェクトの最後のフレームです。
$NFRAMES
変数を使えば、常にシーンの最後のフレーム番号を設定することができます。
次に、必要な分だけスモークボックスを作成するために、Smoke Objectノードの Continuous を有効にしなければなりません。 これは、 すべてのフレーム でインスタンスポイント毎に新しいスモークボックスを作成します。 これを回避するために、クラスタの中心点が現れるフレームにだけボックスを作成します。 サンプルファイルでは、For Each SOPを使ってクラスタの中心点現れるフレーム以外のすべてのフレームのクラスタの中心点を削除しています。
ばら撒いたポイントのポジションと番号がジオメトリを変形した時にフレームが変わっても、つじつまが合うようにするには、ばら撒いたポイントをくっつける方法を参照してください。
このサンプルでは、独自の侵食DOPシミュレーションを作成する方法について説明しています。
CircleSolvers Example for Solver geometry node
このサンプルは、ソルバノードを使用して、 常微分方程式により、オブジェクトをトランスフォームすることができるいろいろな方法を説明しています。
このサンプルには、6個の異なるソルバがあります。 また、評価基準として正確な解もあります。 ソルバは、以下の 初期条件を持つ結合常微分方程式を解く数値法です:
x' = y ; x(0) = 1 y' = -x ; y(0) = 0
常微分方程式の数値法は: Forward Euler, Runge-Kutta Second Order, Runge-Kutta Third Order, Runge-Kutta Fourth Order, および2つの方法で解かれるParker-Sochackiです。 あるバージョンでは、Parker-Sochackiは、5の位数でハードコード化されます。 別のバージョンでは、Parker-Sochackiは、ユーザーが階数を調整することができるfor loopで書き込まれます。
SimpleCloth Example for Solver geometry node
このサンプルでは、Verletインテグレーションと単純な明示的なバネを使って簡単な布をシミュレーションする方法を説明しています。
See also |