HOME

Maneki Pipeline

ゲーム開発のためのプロシージャル

Cleanノード

クリーンノードで削除可能な要素の具体例

ノード概要

Houdini Document | Clean
https://www.sidefx.com/docs/houdini/nodes/sop/clean.html

クリーンノード

いくつかのクリーンアップ機能がまとめられているノード。

Clean ノード

まず前提としてこのノードはネットワークノードであり、いくつかの削除系ノードを組合わせて動作している。

Cleanノードはネットワークノードなのでなかを開くと厳密な処理が判る

なので個々のノードを確認すると具体的にどういった挙動をしているかを確認することもできる。

動作

では具体的に何がクリーンアップされるかを確認していく。
Cleanノードはそれぞれチェックボックスによって以下の機能のONOFFができる。

Cleanアップする対象がチェックボックスで選択できる

Consolidate Points

重なっている頂点をマージする 内部ではfuseノードが処理している。

重なっている頂点がマージされる

複数のオブジェクトにまたがっている場合でもマージされるので注意

分離したジオメトリが含まれている場合もマージされるので注意

Remove Degenerate Primitives

面積が極めて小さいポリゴンやエラーvertexを削除する。 内部的にはDeleteノードで削除している。

面積が小さいポリゴンが削除される

vertex参照が正常ではないprimもクリーンアップされる (vexなどで明示的に作れるのでスクリプトエラーにより作られたりする)

重複したvertex参照をしてしまっているprim
不要なvertexが削除される

Primを構成していない独立したpointも削除してしまうので注意

画像のようなpointのみが存在しているデータも削除されてしまう

Delete Unused Groups (Remove Degenerate Primitivesオプション)

Remove Degenerate PrimitivesでPrimを削除した際、含まれるPrimが無くなったGroupがあった場合に一緒に削除するオプション。
同じく内部的にはDeleteノード(Deleteノードに削除時に不要になったGroupを消すオプションがある)

Orient Polygons

反転したpolygonの方向を一致させる。
内部的にはfacetノード。

反転ポリゴンの方向を一致させる

Reverse Winding

ポリゴンを反転する。
内部的にもReverseノードが入っているだけのシンプルな構造
(Clean?という感じの機能だけど多分OrientPolgonの補助機能かな)

Fix Overlaps

同一頂点を持つ重複したポリゴンを削除する。
内部的にはpolyDoctor

重複したポリゴンのクリーンアップ

Delete Overlap Pairs (Fix Overlapsオプション)

有効にした場合、Fix Overlapの削除時に重複ポリゴンはそのペアごと削除する
こちらも内部的にはpolyDoctor

重複ポリゴン発見時に一方ではなく両方のポリゴンを削除してしまうオプション

Remove Unused Points

ポリゴンに接続されていないpointを削除する
内部的にはaddノード

独立したpointを削除する

Remove Attributes / Remove Groups

指定したアトリビュートやGroupを削除する。 内部的にはAttribute RenameとDelete Group
デフォルトではOFFだがON時のデフォルト値が全削除( * )になっているので注意

アトリビュート、groupを削除

Remove NANs

エラー値になっているポイントを削除する。
内部的にはisnanというVEXで検知している。
(基本的にHoudiniでNanは出来なそうだったので確認まではできず。)

FBXだとNan値はよく見るのでそういったデータのクリーンアップかと思われる。

Manifold-Only Topology

非多様体を削除する。
内部的にはPolyDoctor

非多様体の削除

Delete Small Manifold Patches / Primitive Threshold

Manifold-Only Topologyのオプション。
削除対象となる非多様体のポリゴン数

非多様体削除時に対象とするポリゴン分割の閾値

今回調べるまではよくわからないままとりあえずで使っていました。
万能なCleanではなくポリゴン特化のCleanであることも知りませんでした。
調べてみるとあんまり「とりあえずで入れとく」ノードでも無いかも。

中にはエラー要因になりそうな動作(複数ジオメトリで隣接頂点をマージしてしまうといったもの)もあったので調べておいてよかったです。

fish_ball

プロシージャル魚類