kick the base

Houdiniと、CG技術と、日々のこと。

Houdini: 部屋と詰Houdiniと私

もうアドベントカレンダーの季節とか嘘でしょう…?(N回目)

気を取り直して皆さんいかがお過ごしでしょう。

今年もおかげさまでHoudini三昧の毎日をおくらせていただいています。そしてなにより今年は僕の主催している勉強会、「Houdiniゆるゆる会」を再始動しまして、それがうまくいっているのがとても嬉しいです。

Houdiniゆるゆる会についてだけ語ってもひとつ記事が書けるほど思うところはあるのですが、本日はその会から派生した詰Houdini*1についてお話をしたいと思います。

本記事はHoudini Apprentice アドベントカレンダー2022 8日目の記事です。

目次

詰Houdiniとは?

こういうやつです。

「最も小さいネットワークであること」にはそれほど重点をおいていないところがポイントで、クレバーな回答や高速なもの、柔軟であることを重視してみんなでチャレンジするところが非常に面白い試みです。

勝敗を競うのではなく、新しいアプローチを発見した際などは惜しみない賞賛を送り合う、そんな紳士淑女のスポーツです。

具体的にはこんな感じで日々ネットワークを組んでいます。

データ配布

記事で使用したシーンはこちらからダウンロードできます。

  • Windows10
  • Houdini 19.5.403

今回のお題

「ボクセル状のジオメトリの一番外側だけを抽出する方法について」

ちょっと言葉にすると難しいので下記動画をご覧ください。(ちゃんと再生できるかな)

簡単に言うとボクセル状のジオメトリ(各々ボックスとして分離している)ものの、一番外側だけを残して中身は削除するというお題です。

それぞれの回答

ここでの登場人物は下記のとおりです。それぞれ素晴らしいアイデアを出してくれました。この場を借りて重ねてお礼を。

ぼくの回答

当日発表したものをわかりやすくするため少し手を入れたものです。*2

ロジックとしては下記のとおりです。

  1. Points from Volumeでグリッド状にポイントを敷き詰め、Boxをコピーする
  2. primidというプリミティブアトリビュートを作成
  3. FuseとCleanのコンボでガワだけのメッシュにし、Attribute Promoteでprimidを配列に保管
  4. ボクセル化されたオリジナルのジオメトリの各プリミティブに対して、自身のprimidアトリビュートが配列内に存在していたら(つまりガワのプリミティブだったら)outsideグループに入れる
  5. Group Expandでoutsideプリミティブグループを含んでいるジオメトリをまるっとoutsideグループに広げる
  6. Blastでoutsideグループ以外を削除

このネットワークの反省点は最後のまとめに記載します。

くろさわさんの解法

先にグリッド上にポイントを敷き詰める手法とは異なり、ジオメトリ表面上のポイントの位置を量子化しようというアプローチです。ボリュームを用いず、手順もスマートかつ直接的なグッドアイデアです。

まさきさんの解法

上下左右のベクトルを用意し、それらと交点を取ることによって内側・外側を判定する手法です。非常にパワフルなアプローチで、VEXの柔軟性を感じさせてくれます。瞬発力とそれを形作る実力が垣間見えますね。

おかださんの解法

今回のお題ではベストなアプローチと個人的に思っています。実行速度の素晴らしさ。ロジックのコンパクトさ。実にエレガントです。

Points from Volumeでグリッド状にポイントを敷き詰めたあと、コピーする前の段階でnearpoints関数により上下左右にポイントがあるかどうかを調べるというもの。実に直接的ですが、これがスッと出てくるところに多くの研鑽をつんだことを伺わせてくれます。素晴らしい。

そしてもうひとつのアイデアとしてVDB Visualize Treeを用いたものもアップしてくれました。衝撃の短さに震えましたね。ええ。

まとめ

様々な手法が出てきましたね。ぼくのアプローチも間違いではないのですが、ここで反省をしておきましょう。

Houdini以外にも当てはまることがありますが、「最初に思いついた方法」に拘泥してしまうと遠回りをしてしまうことが多々あります。 設計や実装の途中でも、一歩うしろに下がって全体像を見つめ直し、根本的に違うアプローチはないかを考える癖をつけたいものです。

ときに捨てる勇気が大切になってきますね。

Houdiniゆるゆる会*3はクローズドな勉強会ですので勉強会募集ページなどでは参加者を募集していないのですが、過去のイベント詳細をご覧の上興味がある方はぜひ主催のめんたいこまでDMをください。完全無料の互助会として運営しています。

houdini-teaparty.connpass.com

明日はBorndigital_Yoshidaさんの記事です。

ではでは!

*1:"詰め"Houdiniでも良いと思いますが、以下送り仮名のない詰Houdiniで統一しています

*2:まとめでも触れますが、スマートな解法とはいえないロジックです。ですが、違うケースでは有用な場合もありますし、記録に残しておくことは大切なのでここで供養します

*3:自身も必ず発表を行う勉強会です。自助努力なしで教えてばかりの方は残念ながらご参加できません。「ともに学ぶ」がモットーです。