前回に引き続き、崩壊系エフェクトについて解説します。

記事の目次

    ●CGWORLD Online Tutorialsにて特別無料配信中!
    【無料】Houdini COOKBOOK +ACADEMY 特別編 ~コロナをやっつけよう!~

    様々なシチュエーションに応用がきく崩壊エフェクト

    崩壊のエフェクトはバリエーションを調整すれば様々なシチュエーションに使用することができます。例えば、タイミングを早めてテレポーテーションのエフェクトに使用したり、消失系やモーフィング系に変更することもできます。作例ではある程度Particleを多めにしてより崩壊の表現に寄せていますが、Houdiniではこうしたフローを貯めておけば、調整次第で使い方は無限です。今回はよく使用するAttributeを利用したエリア指定を駆使して、Particleベースのシミュレーションで動きをつけています。

    PrimitiveとPackを上手く行き来したセッティングで、Polygonが崩壊しているように見せています。また、Polygonが徐々に消失していく部分や、Particleの発生方法なども今回のフローの特徴であり基本のテクニックになるので、引き出しの1つとして参考にしていただければと思います。

    今回のHoudiniプロジェクトデータはこちら

    01 Source Flow / ジオメトリ準備のながれ

    ベースのジオメトリを読み込み、Remesh SOPを使って、Adaptiveにリメッシュします【A】【1】。この時点で、VertexにNormalを作成しておきます【B】

    次に、Facet SOP【C】を使ってUnique PointsでPolygonをバラバラにします。こうすることで、リメッシュしたPolygonをそれぞれに動かすことができます。

    Rest Position SOPとVOPを使って、Noise Defromをします【D】。これに対して、VOP【E】を使って、PrimitiveのSphereの半径で中心点からの距離【F】を、Distance VOP【G】を使いPointそれぞれで計測します。それの値を整理して0~1の範囲に収め、オフセットをして“area”のAttributeがアニメーションしているように調整します【2】

    その後、Wrangleなどで“rest"の値を使ってPositionを元に戻します【H】

    “area"をAttribute Promote SOPを使って一度、AverageでPrimitiveのAttributeに変更し、再度PointのAttributeへ戻します【I】。このようにすることで、Polygonに付随するPointそれぞれで値が異なることのないようにします。“area"のAttributeをAttribute Remap SOP【J】を使って、別名のAttribute【3】にリマップ【4】。これによって、ベースとなるAttributeは0~1の範囲で線形に値を保持した状態で別のAttributeを作成できるため、この後の作業で、綺麗な元データを再度利用したくなった場合でも、分岐したAttributeを別途使用することが可能です【5】

    最後に、Assemble SOPとPack SOPを使って、PolygonそれぞれをPackに変換します【K】。これによって、Polygon1枚を1つのParticleとしてシミュレーションできます。

    02 Prim POP Flow / Polygon崩壊シミュレーションのながれ

    続いて、Polygonの崩壊をシミュレーションしていきます。Dopnet【A】を作成します。今回はPOPを使用するので、TabメニューからPOP Networkで作成すると、POPのプリセットとして作成できます。

    シミュレーション結果をDop Import SOPで読み込み、File Cache SOPでキャッシュをとりシミュレーションの完了です【K】【3】。次に、ParticleのシミュレーションのためのSourceを作成します。必要AttributeをTransferしつつUnpack【L】をして、Attribute Remap SOP【M】でPrimitiveのスケーリングを行うためのAttributeを作成します。

    このAttributeをPrimitive Properties SOP【N】のScaleにAttributeを代入して、崩壊と共に消失するようなアニメーションをつけます。その後、スケールが0の場合を削除【O】してジオメトリの完成です【4】

    スケールが1の場合も削除することで、Sourceとして使用しない部分を削減します【P】【5】。Attribute Create SOP【Q】でPrimitiveの総数をAttribute化して、その最大値をDetaileのAttributeへPromoteします。【R】最後に、PrimitiveをConvert Line SOP【S】でEdgeを抽出し、File Cache SOP【T】でSourceのキャッシュを取り完了です【6】

    Dopnet内部では、POPの基本フローからスタートします。POP Networkで作成した場合、POP Object【B】とPOP Solver【C】は準備されている状態で、さらにPOP Source【D】も作成されますが、デフォルトの設定から、Emission TypeをAll Geometryへ変更し、直接接続しない場合は、Geometry Sourceを指定します。BirthタブのImpulse Activationを“$F ==1”に設定して、初期フレームのみの発生とします。続いて、SOP Solver【E】を使って、Object Merge SOP【F】で元のSourceを読み込み、“area"などのアニメーションしているAttributeをAttribute Copy SOP【G】でシミュレーションジオメトリにコピーします。これによって、シミュレーションジオメトリにアニメーションしているAttributeを反映させることができます。

    次にPOP Force【H】で動きをつけます。この際に、Force【1】やNoise【2】にそれぞれAttributeを元にした力がかかるように設定します。必要に応じてPOP Drag【I】などで速度の調整をしたり、Ground Plane【J】で床面の衝突を計算しましょう。

    03 Prticle Flow / Particleシミュレーションの手順

    次に、Particleシミュレーションの準備をします。前項と同様にPOP Networkで作成します【A】

    POP Networkで作成した場合、POP Object【B】、POP Solver【C】、POP Source【D】はすでに準備されています。続いてPOP Sourceの設定を行います。Particleの発生数を自動計算するようにセッティングします。パラメータ右上のギアマーク【1】からSpare Inputを作成し、Sourceのジオメトリを読み込みます【2】

    このジオメトリには、Primitiveの総数がDetailに入っているため、これを利用します。Impulse CountにPrimitive、1つに対する数値を記述して、それにdetail関数で総数を読み込み乗算します。【3】これによって、自動的にPolygonのEdgeから発生するParticleの数を計算することが可能になります。必要に応じて、ParticleのLifeなども設定します。また、Sourceのジオメトリが持っているVelocityを引き継いでいるため、それも必要に応じて調整しましょう。

    動きに関しては、Polygonの崩壊と同等のForceがかかるように、POP Force及びPOP Drag【E】はパラメータをReferenceしておきます。同じくGround Planeも設定します【F】。これでシミュレーションの準備の完了です。

    最後に、Dop Import SOPでParticleを読み込み、File Cache SOPでキャッシュを取り完了です【A】【4】【5】

    04 Operators / 今月のオペレータ

    今回、紹介するのはAttribute Promote SOPAttribute Remap SOPです。

    Attribute Promote SOPはこれまでにも幾度となく登場している重要なノードの1つです。今回の使用方法は単純なPromoteではなく、値を均一化したり、Detailに最大値を保持させる使用方法をとっています。HoudiniにおいてAttributeの扱いは非常に重要で、ここを使いこなせるかどうかは、レベルに直結するものです。例えば、Attribute Promote SOPで最小値、最大値を計算し、Fit Rangeと組み合わせることで、常に一定の範囲に収めるなど、値の取り扱いやすさを向上させてくれます。

    Attribute Remap SOPもクリーンな値、例えば、リニアな変化をもったAttributeが存在したとして、それを保持しつつ、新たな値の幅や、別の補間で新たに値を作成したりする際には欠かせないものです。

    Attributeの扱いや作成にはある程度、慣れが必要ですが、自分で作成するAttributeは“整理されていて使いやすいもの”という前提をもっておくと、作業中の迷いや無駄な計算、エラーなどを避けることができると思います。そういった点に注意して、細かなAttribute関連のノードの引き出しを増やしていければ理想です。

    「Houdini COOKBOOK +ACADEMY」 Houdiniを基礎から楽しく学ぶオンライン講座

    公開日程:毎週金曜日公開(予定)
    価格:1,300円(税込)※セットでの割引販売有
    ※第一回「Houdiniの基本概念とインターフェイス」は無料公開中
    受講対象:Houdiniをこれから学びたい方、Houdiniの勉強で挫折した方など
    cgworld.jp/special/houdinicookbookacademy

    秋元純一 / Junichi Akimoto(トランジスタ・スタジオ/取締役副社長)

    日本でも指折りのHoudini アーティスト。
    アーティスト業務の傍ら、Houdiniアーティスト育成や布教活動に勤しむ

    www.transistorstudio.co.jp
    blog.junichiakimoto.com

    TEXT_秋元純一 / Junichi Akimoto
    EDIT_小村仁美 / Hitomi Komura(CGWORLD)、山田桃子/ Momoko Yamada