熱によるFLIPの粘性を操作します。手がけてきた作品は数々の賞を受賞している。Silla(mum)』など。Komura(CGWORLD)FLIPのAttirbuteを操作する今回はFLIPのAttributeを操作する方法を探っていきたいと思います。数年前に同じようなアプローチを紹介したことがあるのですが、そこからHoudiniのバージョンが変わり一新された部分もあるので、改めてお話します。今回は、熱源から受け取った情報を基に粘性を変更していくような方法論を解説していきたいと思います。Viscosityを利用することで、FLIPは液体に粘性をもたせることができます。Solverを使ったアプローチを検証していきます。Solverの扱いは慣れるまでは難しい部分もありますが、慣れれば便利なものも多く、シミュレーションのバリエーションを増やすことができます。近年は、Viscosityを扱うためのHDAやシェルフが多く用意されており、ある程度気軽に扱うことができるようになりました。今回のアプローチでさらに引き出しを増やしていただければと思います。Setupソースのセットアップを解説します。FLIPのシミュレーション用にソースの作成を行います。SOPでPointを散布します【A】。今回は、大小のバリエーションを付けるために、あえて2つに分けています。SOP【B】を使って、ランダムな大きさの"pscale"を作成します。SOP【C】で"N"をランダムな方向で作成します。このとき、正負両側に法線が向くように設定します【1】【2】。SOP【D】を使ってBoxをコピーします【3】。法線をランダムにすることで、回転をかけなくてもばらばらの方向でコピーすることが可能です。SOP【E】を使ってVDBに変換し、形状を整えPolygonへ変換します【4】。SOP【F】でPointに変換します。Seperationと同等になるようにします【5】。これらのPointに対して、ソースに必要なAttributeを追加します【G】。今回は、あらかじめ3つのAttributeを用意しました【6】。"viscosity"はDOP内で付与することもできます。"reaction"は、熱源から移す際の移り具合になりますが、例えば、ノイズなどを使って、場所によって移り方に差をつけることも可能です。このように、あらかじめAttributeをSOPで用意することは、シミュレーションにディテールを与える意味でも重要なパートになります。次に、熱源を作ります。これはどんな形状でも良いのですが、今回は棒状【H】のものでカットするようなイメージにしています。これに対して、VolumeからPointを作成し【I】、"heat"のAttributeを追加します【J】。これをアニメーション【K】させれば熱源の完成です【7】。続いて、実際のジオメトリとCollision用のSDF【L】を用意します。Copyして同じ動きをするようにしておきます【M】。今回は、解説しやすいようこのような設定にしていますが、アニメーションをGeometryのTransformで行う方が効率は良いです。スピードという点でも有利になります。Flowシミュレーションのフローを解説します。シミュレーションのセットアップをします。Object【B】を準備します。Sampleを使ってセッティングします。Fieldに設定し、SOPからソースジオメトリを読み込みます。Bodyで表示しておくと、今回のようなケースでは見やすいでしょう。DOP【D】を設定します。TypeをRigidにしました【1】。Viscosityをアクティブにして、Attributeから値をCopyするように設定しています【2】。次に、熱の移行の設定です。SOP【G】で"heat"のAttributeを移行します。これにより、熱源付近にだけ熱が伝わった状態になります。その熱を利用して、Viscosityを溶かしていきます。DOP【H】を使って、"heat"を"temperature"に変換し、また、"temperature"を"viscosity"へ変換します【3】。温度が上がった場合、粘度を下げるような計算を行なっています【4】。その際に、様々な係数を加算乗算することでアクションを調整しています。VOP内で更新されたAttributeは次のフレームでまた引き継がれて更新をくり返していく状況になります。DOPを使って冷却するしくみを設定します。"heat"【5】は時間とともに、累乗的に減少する設定になっています【6】。これにより、徐々に溶けた液体は粘性を取り戻していきます。冷めて固まる設定になります。これで、熱源によってカットされるシミュレーションの設定が完了しました【7】。Flowメッシュのフローを解説します。最後にParticleをメッシュにします。SOP【B】を使ってPolygonに変換するだけです。その際の設定を少し解説したいと思います。今回の変換メソッドは、Sphericalにしています【1】。Positionを使用して滑らかな表面を作成しますが、これは時として思わぬ結果を招くことになりかねません。今回のように硬いものを作る場合、Particleの挙動によっては凹凸が不自然に動いたりしてしまう可能性があります。Particle量に不足がある場合に起きやすいです。そのため、今回はあえてSphericalを使用してみたいと思います。次に、出力するメッシュに対してAttributeを移行します。今回は主に"heat"をレンダリングなどで使用したいので、追加しています【2】。最後に、FilteringでSmoothをかけます。Sphericalは凹凸が多いので、この処理は重要です【3】。これでメッシュの完成になります【4】。後は、Attributeを利用したレンダリングなどをして出力していきましょう。Operator主要ノードを解説します。このオペレータは、複数のFieldやAttributeを結合したり、その際の結合方法や係数の計算をするためのオペレータになります。合計で3つのField及びAttributeを同時に扱うことができます。Destinationは、計算結果を移すためのFieldまたはAttributeになります。DOPなどと組み合わせて新たなFieldを作成するなども可能です。Operationは、結合する方法を選択できます。Addで加算したり、Multiplyで乗算したりできます。その元となるのが、Sourceになります。ここに元となるFieldまたはAttributeを指定します。今回の様に同じAttributeに対して操作することも可能です。Coefficientは係数のことで、乗算係数を設定できます。TimestepやVoxelによって動的に変更することも可能になっています。複雑そうで、何に使うかわかりづらいオペレータではありますが、FieldやAttributeを簡単に統合したり、今回のように値を動的に変更するために使用したりなど使い方には幅があり、一度理解してしまえば非常に便利なオペレータで、カスタマイズには不可欠な要員です。MORE週間ランキング月間ランキング2024/10/22看護師からCGの世界へ。MORE2024/10/22看護師からCGの世界へ。V-Crew(ブイクルー)研修講師に就任。【CGデザイナー募集】会社を「デザイナーが技術を探求する場所」に。話題になるフィギュア作りに挑戦できる会社です。MORE2024/10/22看護師からCGの世界へ。MORE2024/10/22看護師からCGの世界へ。V-Crew(ブイクルー)研修講師に就任。MORE会員登録してもっと便利にCGWORLDを利用しよう!会員登録のメリット記事の保存ができるCGWORLD.jpで気になる記事や後で読みたい記事などを保存することができます。※最大100件まで保存が可能セミナーが探せるボーンデジタルが開催しているセミナー情報を見ることができます。自分が登録しているセミナーも管理することができます。CGWORLDのランキングや最新の講座情報などをお届けするCGWORLDメールマガジンの配信管理ができます。ログイン本会員は「クリエイターズID」と連動しています。