Sparseを使った炎のシミュレーションを解説します。手がけてきた作品は数々の賞を受賞している。~コロナをやっつけよう!~SparseベースのシミュレーションPyroが近年どんどん進化しています。Sparseを紹介していきます。これまでのPyroもいまだ現役で使用できる状態ですが、Sparseが搭載された今となっては速度面から考えてもひと世代前のものとなってしまいました。それほど速度面ではSparseが優れているといえます。「Sparseとは何か」を説明するには、Houdiniで使用できるVolumeの種類を理解しておく必要があります。元々は、Volumeと呼ばれる直方体で構成されたコンテナ内でシミュレーションする必要がありました。Volume」が主流となりました。その特性をPyroに組み込んだものが、これから紹介するSparseベースのシミュレーションになります。パラメータの並びは異なりますが、Sparseかそうでないかのちがいだけで、ベースとなる考え方はほぼ変わりません。Sourceを作成する段階から日々進化を遂げているので、そういった部分も含めて紹介できればと考えています。Buildベースジオメトリを作成します。PositionのAttributeを作成しておきます【A】【1】。Deformします【2】。SOPでPointを作成します【C】【3】。これがVoronoiのベースPointになります。Offsetの数値を調整して隙間をつくり、Pの値にrestのAttributeを代入して元の形状に戻します。必要であればNormalも再計算しておくと見やすいでしょう【D】。DeformをしてからVoronoiでカットしています。することで、うねったカットラインをつくり出すことができます【4】。SOP【E】でSDFに変換します【5】。SOP【F】でSDF同士をUnionします。そのSDFの形状をSmoothなどを使って整え、Polygonにコンバートします【G】【6】。同じながれで隙間の間隔が広いVoronoiをつくり、本流とは別にVDBのMaskを作成しておきます【H】。SOP【J】でのPointの選択に使用します【8】。これはSourceを作成する際のエリアとして利用します。最後にジオメトリのキャッシュをとりベースの完成です【K】。Flowソースのセットアップを解説します。シミュレーションに必要なSourceの準備をします。SOP【A】を使って指定したエリアにSourceのPointを作成します。この際に作成するAttributeはTemperatureのみです。Temperatureの設定温度は「0」にしておきます。SOP【B】を使って部分的にPointを選び、その部分のみの温度をWrangle【C】で「1」に変更します。これで温度の差ができます【1】。SOP【D】を使って、温度差を利用した燃え広がりをつくり出します。Temperatureが設定可能で、発火の温度を設定することができます。それにより、着火のSourceを作成できるようになります。Temperatureの拡散なども変更しています【2】。burnを作成する際には、それの基となるFuelをつくるようにしています。Solverが行なっていた燃焼の設定をSOP内で行うことで、Sourceとしてあらかじめ準備と管理がしやすい設計になっています。このセッティングが全てではありませんが、目に見えて制御が可能となったことで無駄なリテイクをしなくて済むため、非常に効率的な作業が可能となります。どのような変更が加えられたかについては可視化できます【3】。Volumeを作成します【4】。Fieldも作成していくわけですが、今回は簡易的な風のFieldを作成しています。SOP【H】を使って値を追加。SOP【I】を使うことで可視化できます【5】。SOP【J】を使ってSDFのCollisionを作成しています。シミュレーションのセットアップを解説します。シミュレーションはシンプルなセッティングです。炎の細かいパラメータの調整は必要ですが、今回は煙などはなく、単純な燃焼のみをシミュレーションしています。ObjectのSparse対応のものを使用します【A】。これによりコンテナの初期サイズを設定するのではなく、リミットをもたせつつ、基本的には自由領域にすることができます。発生している箇所に自動的にコンテナを生成することこそ、Sparse最大の特徴といえるでしょう。Solverも、Sparse対応のものが必要となります【B】。こちらのセッティング自体は基本的に大きく変わるわけではありませんが、細かいパラメータはSparse対応に変更されています。燃焼やFluidのShapeを決めるパラメータ等の意味に変わりはないので、従来のPyroを使用している方であればすぐに対応可能な変更になっています。今回は炎のセッティングですが、これまでと大きく異なる部分として、燃焼のセッティングが挙げられます。これはSOPで作成しているので、Pyro上で燃焼の設定をする必要性がなく、ゆえにCombustionの設定がなくなっています。その変わり、Shapeなどは変わりがないので炎にふさわしい設定を調整します。DisturbanceやShreddingなどです【1】。次にSourceの設定です。これも、これまでと変わりはないのですが【C】、これまでは燃料であるFuelを読み込みDOP内で燃焼させていましたが、ここではすでに燃焼をシミュレーションしたBurnを読み込んでいます【2】。これが燃焼の基になるわけです。後は、気流を生み出すTemperature【3】が読み込まれていれば、基本的な炎のシミュレーションのセッティングは完了です【4】。Fieldを追加でSourceとして読み込んで動きを調整します【D】。VOPを適用したものを使用します【E】。Operators主要ノードを解説します。18.5でも様々な機能が追加されました。DOP内で調整しなければならかった部分がSOPで調整できるようになったり、複雑なSourceのしくみを簡単にセットアップできるようになったりと便利なものばかりです。AttributeベースのSource設定に変更になり、より高精細なシミュレーションが可能になったSparseの恩恵とも言えます。発展途上でもあるため、便利機能、いわゆるHDAが蔓延していくという弊害もあります。SOPですが、非常に便利で「延焼していく効果」を簡単につくり出せる優れものではあるのですが、あくまでも「ベーシックなものに限る」ということを理解しておく必要があります。これを参考にカスタマイズする必要はどうしても発生するかと思います。いった場合に、HDAに頼りっきりで細かなオペレーターに対する理解不足や、フローの分解ができない状態に陥らないよう、こういったHDAは必ず使用する前に内部を確認し、大まかな内部構造を理解しておくことが大切です。あるびぃ(official)MV2024/10/22看護師からCGの世界へ。MORE2024/10/22看護師からCGの世界へ。V-Crew(ブイクルー)研修講師に就任。【CGデザイナー募集】会社を「デザイナーが技術を探求する場所」に。あるびぃ(official)MV2024/10/22看護師からCGの世界へ。MORE2024/10/22看護師からCGの世界へ。V-Crew(ブイクルー)研修講師に就任。MORE会員登録してもっと便利にCGWORLDを利用しよう!会員登録のメリット記事の保存ができるCGWORLD.jpで気になる記事や後で読みたい記事などを保存することができます。※最大100件まで保存が可能セミナーが探せるボーンデジタルが開催しているセミナー情報を見ることができます。自分が登録しているセミナーも管理することができます。CGWORLDのランキングや最新の講座情報などをお届けするCGWORLDメールマガジンの配信管理ができます。ログイン本会員は「クリエイターズID」と連動しています。