kick the base

好きな映画、音楽、マンガ、プログラム、デザイン、3DCG、ゲームのこと。

Houdini: 僕なりの学習法

本記事はHoudini Advent Calendar 2018 5日目の記事です。

Houdiniをはじめて2年目のめんたいこです。最初の1年は勉強に徹し、仕事に導入し始めて1年が過ぎました。(最初の1年の軌跡はこちらにまとまっています)

「Houdiniは難しい!」と変なバイアスをかけるつもりはありませんが、簡単かというとそんなことはないなぁというのが正直なところです。

そこで今回は初心者向けに僕なりのHoudini学習法についてお話します。いつかネットワークを自由に組める日が来る時のためにお互いがんばっていきましょう!

※サンプルデータも配布しますのでご興味がある方はDLください。

サンプルファイル

sample scene

※ぼくが普段使ってるデスクトップテーマも同梱しておいたので使いやすいと思う方は使ってみてください

今回使用するhipファイルの説明

僕が運営しているチュートリアル動画サービス、Plugsにて、黒澤徹太郎氏のUE4シーン作成講座 for アーティストという講座があるのですが、その講座内に「ブループリントでスプライン上にメッシュを発生させて柵をつくる」という内容があり、Houdiniだったらどう作るかな?と思って作成したのがこちらのシーンになります。

本シーンは講座のアプローチとは異なった手法をとっております。またゲームエンジン内でオブジェクトを制御する方法はコリジョンなどの管理も含めて非常に有益なため、あくまで別の視点の作例となっています。

サンプルシーンでは下記機能をもたせています。

  • 柵の間隔を調整できる
  • いつでもカーブを自由に編集できる
  • いつでも地形を自由に変形できる
  • カーブを地形に沿わせる際のベクトルを設定できる
  • 垂直な柵と地形の法線方向の柵を選択できる

挙動は以下の動画を参考ください。

f:id:kickbase:20181116004617g:plain

(注)初見のネットワークをどう読み解いて活用していくか?が本記事のテーマなのでネットワーク自体については解説しません。

本記事の流れ

Houdiniの学習方法には様々な方法があります。書籍や動画チュートリアル、ユーザーフォーラム、職場等々。サンプルのhipファイルを公開してくださる先達も多く、シーンファイルそのものから情報を読み解く能力が必要になるでしょう。

そこで今回は上記サンプルシーンをDLした状態で、解説なしに各ノードの機能を理解していく方法についてご紹介していきます。

ネットワークの全体図は下記のとおりです。(初心者向けということで小規模なネットワークとしています)

f:id:kickbase:20181116005057p:plain

準備

hipファイル内のオリジナルのノードをまるっとコピーしましょう。ここではobj/内のORIGINALMYWORKとしてコピペしました。

これは単純に元のネットワークをとっておくといった意味合いです。Houdiniはファイルサイズが非常に小さいので、カジュアルにガンガンノードをコピペしていきましょう。これでどんな変なオペレーションをしても安心ですね。

はじめの一歩

まずはネットワークの中で分かるところ分からないところを区分けしていきましょう。

これが第一歩です。「なんだか漠然とわからん」という状態では先に進めません。*1

デカルトも言っています。困難は分割せよと。

ネットワークエディタ上でCキーを押すとカラーパレットが表示されますので「今回はじめて知った(理解した)ノードを青」に、「理解できなかったノードを緑」にします。ここで各ノードに紐付いたコメント機能を使うのも良いですし、スティッキーズ(ふせん)を使って疑問をメモっておくこともオススメです。ここまでの手順で下記状態になりました。

f:id:kickbase:20181116010408p:plain

コメントやスティッキーズの作り方は下記動画を参考にしてください。

コメントの作成方法

f:id:kickbase:20181116005427g:plain

スティッキーズの作成方法

f:id:kickbase:20181116005342g:plain

[ コラム ] ノードの効果を確認するには?

分かるノードと分からないノードを区別するのはわかりましたが、各ノードがどんな機能を与えているのかいまいちピンと来ないときもあるかと思います。そんなときにオススメなのが、Rキーを押しながらノードを選択する方法です。

このホットキーは選択したノードにディスプレイフラグを立てるというもので、次々にノードを選択することで、前の状態からどう変わったか?が視覚的にわかるためノードの機能を把握しやすいです。*2

下記動画でディスプレイフラグを次々と変更していっています。CurveSOPからResampleSOPへの流れがわかりにくいですが、途中でDisplay Pointボタン(ポイントのハイライト)をオンしたことで変化がわかりやすくなったことが見て取れるでしょう。

f:id:kickbase:20181116011026g:plain

Step1 最小のネットワークを組んでみる

現時点で理解できるノードが判別できたら、それらのノードをひとつずつピックアップし、最小のネットワークを組んでみましょう。どんなネットワークもノードも自分で組まないと忘れてしまいますし、財産になりません。必ず自分の手を動かしましょう

Attribute Rename

f:id:kickbase:20181116010436p:plain

Mountain

f:id:kickbase:20181116010446p:plain

Polyframe

f:id:kickbase:20181116010457p:plain

Resample

f:id:kickbase:20181116010508p:plain

Transform

f:id:kickbase:20181116014349p:plain

上記は解説の必要もないシンプルなネットワークですが、あえてポイントをあげるとすればVisualizeSOPでアトリビュートを視覚的に確認することやジオメトリスプレッドシートでアトリビュートの変化を確認することくらいです。

Step2 自分の知識と組み合わせてみる

ここまでやるとだいぶ脳に刷り込まれてきます。Step1よりは複雑に、しかし複雑になりすぎないようノードの特性を活かしたネットワークを組んでみましょう。*3

主役はもちろん今回新しく覚えたノードです。

Mountain/Ray

f:id:kickbase:20181116010556p:plain

Resample/Copy to Points

f:id:kickbase:20181116010608p:plain

PointWrangle/Polyframe/Copy to Points

f:id:kickbase:20181116010620p:plain

obj/レベルは、最終的にこのような状態になりました。

f:id:kickbase:20181116014304p:plain

まとめ

今回ご紹介した学習法、いかがでしょうか。Houdiniのノードは非常に多く、手に馴染むまでは下記フェーズが必要なように思います。

  1. 理解するフェーズ
  2. 記憶するフェーズ
  3. 実際に使用するフェーズ

本学習法はこれらのフェーズを一通り組み込んだイテレーションとなっているので、割と効率が良いのではないかなと思っています。

またこのhipファイル自体がリファレンスとなっているので、忘れてもまた見返せばいいというのが大きなポイントです。自分の手で作ったネットワークであり、ミニマルな構成なので後日読み直すときにも把握しやすいと思います。

見返した際に緑色のノードも減っていく(理解できるようになる)はずですので、自身の成長も感じることができるでしょう。

Houdiniの学習曲線との戦い、はじめはしんどいですが自分の背中を押してくれる学習法を採用して、確かな歩みで高みを目指していきましょう!

次の記事はtakavfxさんの「Pixar USD Houdiniプラグインのビルド」です!

参考サイト

*1:万が一すべてのノードがわからん!という方がいたら公式のチュートリアルを一通りチャレンジしましょう

*2:もちろんアトリビュート操作など、一見して変化がないように思えるものもありますが、ジオメトリスプレッドシートを参照することなどによって機能を把握することが可能です

*3:複雑にしすぎると後々リファレンスとして機能しなくなってきます