[Houdini] MayaユーザのためのSOP入門前夜

しばらくぶりの更新です。

そろそろ10月も近づいて来ていて、Houdini12はまだかまだかと皆さんソワソワしている頃だと思うので、Houdini入門の為になりそうな?なればいいな、という内容のポストでも書きます。

とりあえずはタイトル通り、MayaユーザのためのSOP入門の前に覚えておきたい基礎知識に関するあれこれを書いてみたいと思います。


毎度毎度言ってることなんですが、Houdiniの話をしているとき、非ユーザの皆さんからはなんとなくパーティクルだとかRBDだとか流体だとか、そんなような単語が聞こえて来ることが多いように思います。

でも実際のユーザの皆さんから聞こえて来るのはやはりSOP最高SOP万歳

この温度差は一体!?
そもそもSOPて何???

SOPとはSurface Operator、つまりざっくり言うとモデリングモジュールの事です。
なんて言うと、ああおれはモデリングはやらないからいいや、となってしまいそうなのですが、SOPはもっとずっと広い用途で用いられるので、その他の一般的なソフトのモデリングとはある種別物です。
なんならモデリングとは言わず、SOPの名前のままSurface Operationと思った方がしっくりくるかもしれません。

SOPなくしてHoudiniは語れず、パーティクルだろうがRBDだろうが流体だろうが、
Houdiniでエフェクトを作るならば避けては通れない道なのです。
というわけでぼちぼち行きます。

 
まずSOPを習得する上で必要な概念として、AttributeGroupがあります。

アトリビュートなんてMayaにもあるわ。覚えるまでもない。とか思ってると混乱します。
Mayaのアトリビュートは、ざっくり言うとHoudiniのチャンネルとアトリビュートが混在したものなのです。

たとえばMayaのtransformノードにはtranslateやrotateなどのアトリビュートが存在します。
これは各ノードに1つの値を持ち、それに応じて処理を行います。

こういうタイプの値はHoudiniではチャンネルと呼びます。
例えばHoudiniのGeometryOBJにもtranslateなどが入力できる箇所がありますが、
これはあくまでもチャンネルであってアトリビュートではありません。
これ重要ですよ!!

じゃあHoudiniのアトリビュートとは何か。
イメージ的にはMayaのパーティクルのPer Particle Attributeに近いと思われます。

Houdiniのアトリビュートは、それが格納される要素に応じて4種類存在します。
低レベルなものから、Vertex, Point, Primitive, Detailの4つです。
一番メインで使うのはPointとPrimitive、その中でも特にPointです。

Pointタイプのアトリビュートは、各ポイントごとに値が保存されます。
これをいじることでジオメトリの色や形を変えたりすることができます。

アトリビュートにはP(ポイントの位置)、N(法線ベクトル)、Cd(頂点カラー)、v(ベロシティ)などの決まった名前のものもあれば、AttribCreateSOPなどを使って自分で好きな名前のアトリビュートを作ることも出来ます。

アトリビュートの詳細はまた後ほどということにして、
次に大事なのがGroupです。

いやいやまたしても馬鹿にすんなMayaにも(略、となりそうですがこれもまた違います。
HoudiniのグループはMayaの様に階層関係に依存するものではありません。
ざっくり言うならば、任意の選択やルールに従って作られたまとまり、って感じでしょうか。
Mayaで言うならsets(Object Setと言った方が分かり易い?)に近いイメージだと思われます。

Houdiniのグループは、何らかの処理をする際のフィルタとして使われることが多いように思います。
例えば$TY < 0のルールを満たすものだけをグループに入れておいて、後で色を変える、とか。 グループにもアトリビュート同様タイプがありますが、PointとPrimitiveの2種類だけです。 これはPointのグループか、Primitiveのグループか、というだけの違いです。 1つのグループにPointもPrimitiveも入れる、というようなことは出来ません。   とこの2つさえ抑えておけば、もはやSOPで勉強することはノードの扱いぐらいです。 またしてもざっくり言うと、SOPは各ポイントやプリミティブのアトリビュートをいじって欲しい形を作る、というモジュールです。 ただし全ての処理を自分で記述するわけには行かないので、最低限必要な、またはそれを組み合わせた便利なノードが用意されているという感じになっています。 HoudiniユーザがこぞってSOP最高!!!という理由はやはり全てのデータに自分でアクセス出来る点、じゃないですかね。 これがどういう意味かは各自Houdiniを触って実感してもらうしか無いですね:D まぁとにかく便利なんで是非使ってみて欲しいです。   さて、グループに関してはもう特に言うことも無いので具体的なシーンの中で使い方を学んでもらえば良いと思うのですが、アトリビュートに関してはもうちょい説明してみます。 まずは先程紹介したアトリビュートのタイプに関して簡単に紹介します。 Vertex →頂点単位のアトリビュート Point →ポイント単位のアトリビュート Primitive →プリミティブ単位のアトリビュート Detail →オブジェクト単位のアトリビュート ってこれだけ見せられてもわかりませんよね。。 ではVertexとPointの違いから。 Houdiniでは3次元空間上で定義された任意の点をPointと呼びます。 これは3次元上のどこを指し示してもPointと呼びます、というややこしいことではなくて、 何らかのノードでPointという要素を作る必要があります。 Pointはジオメトリを構成する際に必要ですが、必ずしもポリゴンなどのジオメトリを構成しなくても良く、 単独で存在することが出来ます。これって地味ですが結構大きな特徴にも思えます。
ただの点、というものを扱えるツールって他にないんじゃないですかね。
とにかくPointは3次元空間上の任意の点、です。

次にVertex。
これはジオメトリの構成要素としての、いわゆる頂点です。
ポリゴンの頂点、NurbsのCVなど、そんなようなものです。
Vertexは単独では存在できず、常に何らかの構成要素となります。

また、Vertexはそれ自体に3次元座標を格納しません。
つまり任意のPointを参照し、そのPointの位置に存在します。

とか言うとますますわけが分からなくなりますよね。

一応画像で表すとこんな感じです。

なんか圧縮汚くてサーセン。Gimpの野郎のせいです。フォントもアレだし使いづらい!!!

と一瞬話がそれましたが気をとりなおして、、。
誤解を恐れずに、もっともっとざっくりぶった切ってしまうと、
Vertexは位置をいじることが出来ません!以上!です。

つまりVertexをいじることでジオメトリの変形をするようなことは不可能で、
あくまでもいじるのはPointとなります。

なので一応紹介はしましたが、実際には大体VertexはUVぐらいしかいじる必要はなくて、
Pointをいじることが9割以上じゃないかと思います。もちろん全てがその限りでは無いですが。

UVでPointをいじる理由は上記画像の通り、ポリゴンごとに異なる値を持てるので、例えばここでぶった切ってあっちに配置して、みたいなことが出来るというわけです。
Pointではそれが出来ません。
なのでUVはVertexの方が良いのです。

と、あれこれ言いましたが、SOPの基本はPointだと覚えて下さい。それで十分です。

 
次、Primitive。
プリミティブってMayaユーザ的にはあまりパッと来ないですよね。
は?球?ボックス?ぐらいの感じですかね。

これは完全にRenderManのPrimitiveとほぼ完全に同じで、
例えばポリゴンは1枚で1プリミティブです。
Nurbsは1つのサーフェスで1プリミティブ。
わかりますかね?

じゃあ5000ポリゴンで作られてるこのオブジェクトは何プリミティブ?となると、
そのままシンプルに5000プリミティブです。

この画像の場合だと1617ポリゴン=1617プリミティブ存在しているのが、
右下の黒いポップアップ(ノードの上で中ボタンクリックで出せます)で確認出来ます。

つまり、数式で宣言出来る1つの形状が1つのプリミティブとなります。
Nurbsはいくら複雑な曲面でも1つの数式で表せますが、
ポリゴンメッシュは多数のポリゴン面からなる複合ジオメトリとなります。
上記画像のティーポットはポリゴンメッシュなので大量のポリゴンプリミティブが定義されています。

Mayaのプリミティブはただ単にPrimitive(原始的)なジオメトリという意味で、
Houdiniのそれとはまた違った意味で使われています。
基本的なオブジェクトの名前としてPrimitive以外選択肢がないから、ってだけなんじゃないですかね。
他のソフトでも大体プリミティブと呼ばれてますし。

ところでHoudiniのプリミティブにはPolygonやNurbs以外にも種類があって、
例えばSphereやTubeなどの数式で定義された形状。
ポリゴンで作られたものなどとは違い、完全な球体、円柱です。

あとはParticle。
これもParticle Systemsというプリミティブ。
パーティクルという点群を1つにまとめたもの、というイメージなんですかね。

そしてVolume。
Mayaで言うFluidコンテナ1個が1プリミティブになります。

と言った具合であれこれあります。
これらに対してのアトリビュートがPrimitiveアトリビュートになります。
Pointとはまた違った用途、要求で用いられます。

 
最後にDetialですが、オブジェクトごとのアトリビュート、ってだけです。
特に何かはありませんw

 
さ、て。
とりあえずAttributeとGroupに関して駆け足でざっくり紹介しました。
この2つはホントに大事なので、サンプルデータなどいじる際も是非意識してみてください。
アトリビュートをいじることこそがSOPの肝!ですよ!!!!

アトリビュートに関してはまたそのうち何か書くかも知れませんので詳しくはその時、って書かなかったらごめんなさい:P

何かあれば質問してください。
答えられる範囲でなら何でも答えますよー:D

 
>Houdinist各位
間違いあったら是非ご指摘下さい。
補足なども大歓迎です。宜しくお願いしますm(__)m

 
次は基本概念とかじゃなくてちゃんと使えるネタで何かやれたらいいですけど、やはり未定です:P
自分でもちゃんと使えるようにならなくては・・・!!!

 
以上、Houdini推進委員会でした:D

「[Houdini] MayaユーザのためのSOP入門前夜」への4件のフィードバック

  1. これは、いろいろと詳しい説明ありがとうございます。
    まだ消化しきれない部分がありますが、チャンネルとアトリビュートの違いなど初めて知り、目から鱗です。
    自分はHoudini初心者ですし、Mayaもハードな使い方はできないへっぽこなんでここで語るのは恐縮ですが、先日のツイッタでのやりとりで、Houdiniは純粋な3Dソフトだと思いました。
    どういう意味かというと、ここで書かれているとおりなんですが、パーティクルとポリゴン、Nurbs等の境界が基礎部分においては無く、すべてポイントという概念に集約される。
    xyz座標値であるポイントをすべてほぼダイレクトにコントロールできる。
    まだUIの無い時代の純粋な3DCGソフト。レンダリングするためにポリゴン・サーフェイスの概念を生み出さなければいけなかった時代のソフト。そんな感じです。

    ポリゴンであろうとなんであろうと、パーティクルのコントロールに直接還元できる、これはエフェクトにおいては表現力を一気に高めてくれるように思います。

    Mayaだと複雑なスクリプトやエクスプレッションでコントロールしなくてはいけないことがノードの組み合わせでできてしまう。
    MayaだとUIによって、ユーザー側からは隠されている動きなどがHoudiniだと一つ一つくみ上げていかないといけないというちょっとしたハードルはありますが、これも乗り越えるのはさほど難しいモノではなく、一度乗り越えてしまえば、Mayaほど複雑な手順や作業を必要とせずに簡単に目的を達成できる(特にパーティクル・エフェクトにおいて)。
    それでいて、個々のコントロールは細かいところまで可能。
    実際にHoudiniをやり始めてまだ短いのですが、CGソフトでのプログラミング的思考能力は少しですが高まったと思います。
    おかげで、Mayaを使っていても、以前よりはいろいろとやりやすくなりました。

    まさにエフェクトにおいては最高ですね。

  2. >melonさん
    どもです。読んで頂いてありがとうございますm(__)m
    Houdiniはあれこれ複雑なんですが、慣れてしまえばこれほど便利なソフトもないとおもうんですよね、エフェクトに限りますが:P
    微力ながらHoudiniのユーザ数向上に貢献できたらと思うので、
    ちょいちょいこう言うネタを書いていけたらと思っています!
    今後ともよろしくどうぞ:D

  3. こんにちは。以前twitterでmayaのseed関数について教えていただいた者です。
    その節はありがとうございましたm(_ _)m
    とても分かりやすくて勉強になりました。Houdiniは小難しいというイメージがあったのですが、なんとなく概念が掴めた気がします。
    これを機に少しずつHoudiniを触って行こうかな〜と考えています。
    今後とも記事を楽しみにしております。

  4. >Yuki Sugiyamaさん
    コメントありがとうございます。

    本ポスト、少しでも参考になれたなら光栄です:)
    実際Houdiniは小難しいですし、他のソフトとも思想違いすぎますし、決して取っ付き易くはないと思います。
    しかしエフェクトアーティストとしては一番融通の利く自由度の高いツールだとも思います・・・!!
    もしエフェクトアーティストを志望されているようであればガンガン触りましょう!!!:)
     
    何か面白い記事思いついたらまたUPします!
    気長にお待ちくださいww

コメントを残す

メールアドレスが公開されることはありません。