H16 新機能 VDB Project Non-Divergent 1


こんにちは、篠島です。今回はVDB Project Non-Divergent SOPについて見てみたいと思います。Pyroシミュレーションなどをするとソルバーの中に Project Non-Divergent DOP というノードがあるので、Pyroのブログを書く機会があればそこで紹介しようと思っていましたが、いい機会なのでここで説明してみます。

 

まずはその前に Divergence とは何か? Divergence とはVelocityフィールドの不均衡を意味します。例として一つのボクセルに対するVelocityの入力と出力をみてみます。ボクセルに入ってくる量よりも出ていく量が大きいとプラスのDivergenceになり、入ってくる量が出ていく量よりも大きいとマイナスのDivergenceになります。このバランスの不均衡の状態をDivergenceがあると言います。圧縮出来ない気体などがあった場合、入ってくる量と出て行く量は等しくないといけないわけです。一つのボクセルに対して入ってくる量と出て行く量が等しければDivergenceが0となります(Non-Divergence)。 Project Non-Divergent は要はこのプラスやマイナスが入り組んでいるVelocity フィールドのDiveregenceを無くして 0 の状態にします。

 

 

 

例えばPyroシミュレーションだと、Velocityフィールド(左)のDivergenceを取り除く家庭でDivergenceを相殺するようなPressureフィールド(真ん中)を作り、そしてDivergenceを取り除いた物が右の様になります。

                                                                                                                                                                                           

ですが、VDB Project Non-Divergent SOP だとパラメーターでPressureフィールドは無いので、SOPの出力としてはDivergenceを取り除いたVelocityフィールドだけが出力されます。