絶対に挫折しないHoudini入門 17 - 概念モデル

なぜHoudiniは難しい?

 なぜHoudiniは難しいと感じるのでしょうか。自分は以下の理由からだと思いました。

1. 構成要素が多い(時に冗長)/パラメーター数が多い
 オブジェクト? ジオメトリ? ポイント? シェルフツール? ネットワーク? SOP? VOP? DOP? Mantra? マテリアル? etc?
 Parameterパネルにずらーっとならず入力フォーム、タブ...
2. それらの関係性が複雑
3. 3DCGに関する知識が必要

 3に関してはわからない単語に出会ったら片っ端から調べて学習していくより他無いと思います。

 1に関しても量が多いですが、ヘルプなどを地道に調べることである程度理解できるでしょう。

 問題は2です。1で各要素について調べたとしても、それらがどのように組み合わさってHoudiniというツールを形成しているのか、使い初めの頃は全体を俯瞰してイメージができないのです。

 Houdiniを使うユーザーは様々な作品づくり(チュートリアルを含め)を経ることでHoudiniという仕組みを頭の中にイメージをしていきます。
 このイメージのことをUIデザインの分野では概念モデルと呼んだりしますが、入門者はまずこのHoudiniの概念モデルが頭の中に構築されていないため、チュートリアルをやっても目の前でただ魔法が起きているような感覚になるのだと思います。

 ここまでの記事でHoudiniのメイン機能を一通り説明しました。Houdiniの全体像が見えて来たでしょうか? 改めて、全体を俯瞰してみるためにHoudiniの概念モデルを図にしてみました。今後さらにHoudiniを深く学んでいくための助けとなれば幸いです。
 ただし、これは現在の自分のHoudiniに対するイメージであるため、間違っているところもあるかもしれません。今後変わるかもしれません。また、まだ自分が使ったことが無い機能については書かれていないものもあります。
 しかし、理解の最初の一歩を助ける足掛かりにはなると思います。この図を元に各自アップデートをお願いします。

Houdiniの主な構成要素

 概念モデルを作るために、まずHoudiniを構成する主な要素を挙げます。

シーン: オブジェクトなど全ての要素が含まれる場。
ネットワーク: 様々な処理を行うノードを組み合わせる場。用途に応じていくつか種類がある。
 ・OBJ: シーンの最上位階層。
 ・SOP: ジオメトリを操作する。
 ・DOP: ダイナミクス(シミュレーション)を行う。
 ・VOP: ノードベースのプログラミングを行う。VEXを可視化したもの。
 ・CHOP: アニメーションカーブや音声などの時間ベースのチャンネルデータを制御する。
 ・COP: コンポジットを行う。
 ・ROP: レンダリングを行う。
ノード: 特定の処理が関数の様にひとまとまりになったもの。ノードをつなぎ合わせることで様々な処理を実現する。同じ名前でもネットワークの種類によって処理内容が異なる。
ジオメトリ: 3Dモデルのイメージ。実態はポイント座標や法線などのデータの塊。全てはジオメトリから始まるといっても過言ではない。
マテリアル: 質感やテクスチャ。シェーダー。VOPで作成する。
VEX/Hscript: Houdiniの色んなところで使えるプログラミング言語。
カメラ: シーンを撮影する。
Mantra: レンダリングエンジン。

 SOPやVOPなどが何の略かというのはこちらに書かれています。意味が分かった方が覚えやすいですね。

※POP/SHOPは下位互換のために存在するため、とりあえず無視。古いチュートリアルなど見たときに混乱しないように注意。

Houdiniの概念モデル

 そして、これらの要素の関係を図にして概念モデルを表現します。自分の頭の中ではざっくりとこんなイメージです。

Houdini 概念モデル-Copy of Page-1 (1)

 何はともあれ、まずはジオメトリです。基本的にはジオメトリが様々なネットワーク/ノードで処理されることで、最終的なレンダリング結果を実現します。

 ネットワークの関係については、ちょっと図にするのか難しいですが、言いたいのは、デフォルトで用途別にネットワークの種類が分かれているけど、結構自由に組み合わせられる、ということです。
 例えば、レンダーノードのヘルプには以下の様に書いています。

Houdiniは、/outにデフォルトのレンダーネットワークを作成します。 トップレベルの Render メニュー内の項目では、このネットワーク内にレンダーノードを作成したり編集することができます。 また、シーンレベルで、あなた独自のROPネットワークを作成することもできます。例えば、アセット内に独自のテクスチャを生成できる部分としてレンダーノードを埋め込むことができます。

 色々なネットワークがあり、Network Viewで見ると最上位で分かれているように見えますが、SOP内にVOPを置いたりと用途に合わせてかなり自由に配置が可能です。
 ここまで組み合わせが自由だと、正直ネットワークの種類ごとに分かれている意味はあるのか? と思わなくもないですが、システム上の都合もあるでしょうし、用途別にカテゴライズされているのは分かりやすいかもですね。

 同じ名前のノードでもネットワークの種類が違えば、挙動が違うので今どのネットワークで作業しているのか常に意識する必要があります。全体を俯瞰してネットワークの関係性がわかっていれば混乱しないようになります。

 使い始めの頃は無数の機能やパラメーター群に圧倒されてしまいす。でも、Houdiniの仕組みと呼べるような全体像が分かっていれば、初めて取り組む作業であっても、その処理はこのネットワークでやろうとか、このノードの組み合わせでできそうだぞ、とか色々と発想できるようになってきます。

 それでは皆さん良いHoudiniライフを。

もしこの記事があなたのお役に立てたなら幸いです。 よろしければサポートをお願いします。今後の制作資金にさせていただきます!