HoudiniのPoint・Vertex・Primitiveについて

INDEX

はじめに

こんにちは。モノリスソフト テクニカルアーティストの廣瀬です。
今回はHoudiniの基本であるPoint・Vertex・Primitiveについて解説していこうかと思います。
絵作りに直結しない少しつまらない内容かもしれませんが、Houdiniに限らずCGに共通する内容なので他のDCCツールでも役に立つかもしれません。

2枚の三角ポリゴンを構成する要素は、一般的には4つの頂点(Vertex)と2つのフェース(Face)という認識だと思います。しかしHoudiniでは、4つのPoint・6つのVertex・2つのPrimitiveという構成になっています。

この図を頭に思い浮かべながらこの記事を読んでいただくと理解の手助けになるかもしれません。

tech_17_02.jpg

Point

Pointは他のDCCツールで言うところの位置(座標)情報をもついわゆるパーティクルの概念に近いものです。
Pointは後述するVertex・Primitiveが無くても独立して単体で存在することができます。
HoudiniではこのPointをベースにして様々なパーティクルやモデルの形状を作っていきます。

Network ViewSphere SOP (Primitive Type: Polygon) の上でマウスの中ボタンをクリックし Node Info を表示したり、Geometry SpreadsheetScene View でPoint番号や情報を表示することができます。
Geometry Spreadsheet でPointには位置情報が存在しているのが分かります。

tech_17_03.jpg

Primitive

Primitiveとは他のDCCツールで言うところのフェースの概念に近いものです。PointをVertexでつないでいったものを1つのPolygonとして扱います。

NOTE:

PrimitiveにはPolygonやMesh・Volumeなど様々なタイプが存在しますが、今回はHoudiniで最も扱うことの多いと思われるPolygonタイプに絞って解説しています。

1つのPolygonを形作るVertex(Point)数に制限はありません。三角形や四角形はもちろん、様々な多角形の形状を作成できます。

tech_17_04.jpg

Houdiniでは基本的にこのようなPolygonを複数組み合わせてモデルの形状を形作ります。
Pointの時と同様に、Network ViewSphere SOP の上でマウスの中ボタンをクリックし Node Info を表示したり、Geometry SpreadsheetScene View でPrimitive番号や情報を表示したりしてみると、複数のPolygonで1つのスフィアを形作っているのが分かります。

tech_17_05.jpg

また、Polygonには開/閉の概念が存在しています。つまり、ラインの状態とフェースの状態を自在に行き来することができます。
開 / 閉は Ends SOPPrimitive SOP を使うだけで変更できます。

tech_17_06.jpg tech_17_07.jpg

Vertex

Houdiniでは、VertexはPrimitiveとPointを結びつけるためのものです。
Vertex情報は 以下の図のように Geometry Spreadsheet で確認できます。Pointは複数のPrimitiveと結び付けることができますが、Vertexは1つのPrimitiveにしか結びつけないことがわかります。

tech_17_08.jpg

"Vertexが結び付けられているPrimitiveは1つしかない" ため、VertexにUVを持たせることで他のDCCツールと同じようにUVの島や切れ目などを作成することができます。

tech_17_09.jpg tech_17_10.jpg

【左】VertexにUVがある場合UVの島が作成できる【右】PointにUVがある場合UVがつながってしまう

UVに限らず、カラーなど他のアトリビュートでも同様の考え方をすることができます。

tech_17_11.jpg tech_17_12.jpg

Edge

HoudiniにはEdgeが存在しません。それはPoint・Vertex・PrimitiveがあればそれらからEdgeの表現ができるからです。
ただし、それだけでは不便ですので Edge GroupHalf Edge といった概念が存在しています。

Group SOP などで Edge Group を作成できます。

tech_17_13.jpg

Point・Vertex・Primitive間のアトリビュート・グループの移動

HoudiniにはアトリビュートやグループをPoint・Vertex・Primitive間で簡単に移動できるノードがいくつか存在しています。
この操作は非常に強力で他のDCCツールでは困難な処理を簡単に実現することができます。

アトリビュートの移動の一例。VertexにあるUVをPointに移動し位置情報に設定しています。

tech_17_14.jpg


アトリビュートの移動の一例。UVを島ごとに0-1の範囲にスケールして並べます。

tech_17_15.jpg tech_17_16.jpg

代表的なノードをいくつか紹介します。

  • Attribute Promote SOP
    最大値や最小値・平均値など、様々な手法に基づいてアトリビュートを移動することができます。

    tech_17_17.jpg

  • Point Split SOP
    VertexのアトリビュートをPointに移動させるとVertexの継ぎ目が消滅してしまいますが、このノードは、継ぎ目のPointを分割することで適切にVertexのアトリビュートをPointに移動することを可能にします。

    tech_17_18.jpg

  • Group Promote SOP
    様々な手法に基づいてグループを移動することができます。
    tech_17_19.jpg tech_17_20.jpg

さらに詳しく

さらに詳しくHoudiniのPoint・Vertex・Primitiveを理解したい方はHDKのHelpが参考になります。

HDK、Geometry Introduction
https://www.sidefx.com/docs/hdk/_h_d_k__geometry__intro.html

執筆者:廣瀬

映像業界を経てモノリスソフトへ入社。 以来、テクニカルアーティストとして主にエフェクト関連の業務を担当。 好きな食べものはソフトクリーム。

ABOUT

モノリスソフト開発スタッフが日々取り組んでいる技術研究やノウハウをご紹介

RECRUIT採用情報