Vtx Point Primitive Mesh Polygon について
Houdini を調べていると、Maya 以上に細かくノードやコンポーネントに
名前が付いていて???になることが多いです。
とくに分からなかったのが、 Polygon と Mesh の違い。
Maya 使い的には「同じじゃね???」になりましたが
別の物として区別されている。ということはこれには意味があるはず。
ということでまとめてみました。
Geometry の要素¶
まず、Geometry。
Maya 的に言えば Geometry は Shape ノードに近い?
そして Geometry は、 Point Vertices Primitives を持っている。
Maya の場合は、
Vertex - Edge - Face
このような関係になっているのが、
Houdini の場合、
Point - Vertex - Primtive - Detail
このようになっている。
また、この Point Vertex Primitive のように Geometry を構成する要素のことを「エレメント」と呼ぶ。
Vertex と Point¶
Point が Maya の Vertex に近い。
Vertex は、Face 単位の Vertex で、複数の Vertex→Point のような構造になっている。
GeometrySpreadSheet を確認すると、Vertex はいずれかの PointNum と対応した構造になっている。
Primitive¶
Primitive は、Maya でいうところの Face にあたる部分。
いろいろな意味合いをふくんでいて
「ポリゴン・カーブ・サーフェイス・メタボール・パーティクル・ボリューム」
など、を含んでいる。
Face にあたると書いたけれども、
ポリゴンの場合は 1Face=1Primitive になるが、サーフェイスの場合は複数面=1 プリミティブ扱いでもある。
Detail¶
Detail は、Point・Vertex・Primitive の要素をすべて含む単位のこと。
Mesh と Polygon¶
Point - Vertex - Primitive の構造を理解したところで、
Mesh と Polygon の違いとはなにか?という話。
ありがたいことに、Twitter 上で教えて頂きました。
TAさんならHoudiniのからシンプルなGridとかをGeoアスキーファイル出力して中身眺めるのも面白いと思いますよ。ジオメトリスプレッドシートでも良いですが。
— Ryu (@dragonboy765) 2019年3月22日
まず、内部の構造がどう違うのか確認します。
Polygon¶
Polygon の表示を見ると、
それぞれの Primitive ごとに ID が振られていて、それが結線情報になっています。
Mesh¶
対して、Mesh の場合は 1 つの Primitive のみ。
ID を確認してみても Primitive の ID は1つのみで、Point が 9 点あるのみになっています。
Polygons and Meshes のヘルプを確認¶
Polygons are shapes constructed from a series of straight edges.
Help を確認すると、Polygon についてはこういう記述があります。
いわゆる Maya のポリゴンと Houdini のポリゴンは同じニュアンス。
A mesh is a collection of polygons with guaranteed ordering.
It is much more efficient that the equivalent polygons,
and unlike most regular polygons you can convert it directly to NURBS.
Mesh とは、順番の決まったポリゴンの集まりで、ポリゴンより効率的。
そして、そのまま NURBS に変換することができる。
さらに、Twitter で教えていただきました。
Houdiniでいうメッシュは実体がNURBSで表示がポリゴンのことです。
— Kaz-Kitaguchi (@kit2cuz) 2019年3月22日
なのでNURBS系ツールで制御可。
ポリゴンはポイントを結んでできた面のことです。ポリゴン系ツールを使って制御可。
ポリゴンメッシュはメッシュとポリゴンの中間で実体がポリゴンだけどNURBSのようにサーフェスUVを持っています。
フェースが複数あるけれど、それを一枚のサーフェスとして扱うものとしてポリゴンスープというものがあります。データ量が軽くできるものの、個々のフェース情報を持ちません。水のようなポリゴンの表現に適しています。
— Kaz-Kitaguchi (@kit2cuz) 2019年3月22日
つまりは、Mesh とは Maya でいうところの History を維持した状態の Surface to Mesh Convert した
オブジェクトのこと。
Cube の Primitive Type を Polygon にした場合は、
ポリゴン系ツールが使用できるので、ベベルの効果がかかっているが
Type を Mesh にした場合は、ベベルの効果はかからない。
このように、Mesh から Polygon に変換すれば
効果がかかる。
なるほど。
まとめ¶
PolygonMesh と PolygonSoup はまだ使いどころが来ていないのでまたこんど。
データ構造は Point > Vertex > Primitive > Detail それぞれを Geometry を構成するエレメントと呼ぶ。
Mesh は、内部的には NURBS で1つのサーフェースとして扱われているので
プリミティブは1つ、また Polygon 系ノードは使用できず NURBS 系のノードが使用できる。
Polygon は Maya の Polygon と同等で、ポイントを結んでできた面を指す。
GeometrySpreadSheet で構造を確認すると、Mesh と Polygon では構造の持ち方が違う。
Polygon は、1つの面がプリミティブで、Point から Face が構成されている。
Mesh は、内部的には NURBS からサーフェイスが作られていて、サーフェイス自体が1つのプリミティブとして
扱われているので、Primitive は1つしか存在しない。