Labs Repair / Quadrangulate / Remove Inside Facesノードについて


こちらの記事では、「Labs Repair」「Labs Quadrangulate」「Labs Remove Inside Faces」ノードの概要および各ノードのパラメーターについてご紹介します。
SideFXLabsツールのノードは、SideFX社のホームページで紹介されています。併せてご覧ください。


SideFXLabsツールのインストール手順

SideFX Labsツールセットのインストール手順については、以下の記事をご参照ください。

Houdiniの内部システムからの直接インストール

Githubからの手動インストール



Labs Repairとは

メッシュの一部に対して素早く修復を行います。

このノードは、選択されたプリミティブを削除し、生成された穴に蓋ををして、オプションでパッチをリメッシュして元のメッシュに再投影します。
これは、スキャンしたアセットに問題のあるトポロジーのもつれがあるかもしれないものをクリーンアップするために設計されています。基本的には、メッシュ内の問題のある領域を滑らかにするための局所的なリメッシュです。

各パラメーターについて

①Base Group

削除/修復するポリゴンを指定します。

②Fill Mode

作成された穴を埋める方法を指定します。

Remesh

③Post Remesh

生成されたパッチをリメッシュします。このオプションを有効にする場合は、Fill ModeパラメーターをSingle Polygonに設定する必要があります。

④Target Edge Length

リメッシュエッジを最適な長さに設定します。

⑤Reproject onto Original

元のディテールを取り戻すために、パッチを元のジオメトリにレイキャストします。

Smoothing

⑥Smooth Borders

エッジを滑らかにして、元のメッシュへの移行をスムーズにします。

⑦Influence

エッジを元のメッシュにぼかす距離を設定します。

⑧Blurring Iterations

ブラーアルゴリズムを実行する回数を設定します。


Labs Repairノードの機能

Labs Repairノードの機能についてご紹介します。今回は、Houdini18.0.460を使用しています。最初に、Houdiniを起動してSideFX Labsツールが正常に読み込まれていることを確認します。

ジオメトリネットワーク上で、Sphereノードを作成します。パラメーターの[Primitive Type:Polygon]に変更して、[Frequency:5]に設定します。

Sphereノードの下にLabs Repairノードを接続します。

Base Groupパラメーターの右端カーソルアイコンをクリックして、ビューポート上でプリミティブを選択します。選択後、ビューポート上でEnterキーを押します。

Enterキーを押すと、Base Groupパラメーターに選択したプリミティブが格納されたことが確認できます。

下画像は、Fill Modeパラメーターを変更した結果です。Fill Modeをそれぞれ[Single Polygon]、[Triangles]、[Quadrilaterals]に変更することで、単一のメッシュおよび三角形メッシュや四角形メッシュに変更されます。

次に、Remesh > Post Remeshにチェックを入れることで、エッジの長さを調整することができます。

下画像は、Target Edge Lengthを[0.01]、[0.1]に変更した結果です。数値を大きくすると、エッジが伸長します。

■Smoothing > [Influence]、[Blurring Iterations]パラメーターについて
上記のパラメーターをご紹介する前に、事前準備として、ジオメトリネットワーク上でTubeノードを作成します。パラメーターの[Primitive Type:Polygon]に変更して、[End Caps]にチェックを入れます。
そして、[Height:2][Rows:10]に設定します。

Tubeノードの下にLabs Repairノードを接続して、先ほどと同様にBase Groupパラメーターの右端カーソルアイコンをクリックし、ビューポート上でプリミティブを選択します。こちらでは、一番上のプリミティブを1つ選択しています。

プリミティブを選択後、ビューポート上でEnterキーを押します。次に、[Post Remesh]にチェックを入れ、[Target Edge Length:0.1]に設定しています。

そして、Smoothing > [Smooth Borders]にチェックを入れます。チェックを入れると、下の画像のように一段目のエッジにスムージングが割り当てられます。
ここからは、Labs Repairノードの[Influence][Blurring Iterations]パラメーターについて、HDAの内部を確認しながらご紹介します。

この2つのパラメーターは、ノードの内部にあるLabs Group ExpandノードAttribute Blurノードが影響しています。

■補足:Labs Repairノードの内部
Labs Repairノードの内部を確認すると、Labs Group ExpandノードとAttribute Blurノードが使用されていることが確認できます。

最初に、Labs Group Expandノードは、元のグループに基づいてエッジの繋がりを見て、任意の数だけポリゴンまたはポイントを拡張します。

Labs Group Expandノードの[Iterations]パラメーターを調整した場合、同じ値がLabs Repairノードの[Influence]パラメーターに入力されます。

[Influence]パラメーターは、パラメーターの数値に応じて元のグループからポリゴンをぼかすことができます。
つまり、[Influence:4]に変更した場合、HDA内部のGroup Expandノードの[Iterations:4]になり、下画像のような結果になります。

次に、Attribute Blurノードを確認します。Attribute Blurノードの[Blurring Iterations]パラメーターを調整した場合、同じ値がLabs Repairノードの[Blurring Iterations]パラメーターに入力されます。

この状態で、ビューポートを確認すると、[Influence:4]の部分に対して、ブラーが掛けられた分かります。

Attribute Blurノードを確認すると、[Attributes:P]と入力されています。これは、Attribute BlurノードがGroup Expandノードで拡張されたグループ内の空間座標Pに対して掛けられていることを意味します。

Pに対して、スムージングを掛けることで滑らかな結果になります。
下の動画は、[Influence]、[Blurring Iterations]パラメーターを調整した結果です。

Labs Repairノードについては以上です。次に、Labs Quadrangulateノードについてご紹介します。



Labs Quadrangulateとは

三角形化されたメッシュから対角線エッジを除去して四辺形主体のメッシュにします。

Quadrangulateノードは、三角メッシュから明らかなエッジを取り除き、元の四角形メッシュがどのように見えていたかを再現するように設計されています。

各パラメーターについて

Reduction Method

①Method

[Vertex Order]
モデルのN番目のエッジを全て削除します。

[Longest Edge]
四角形だけが残るまで、メッシュの最も長いエッジを繰り返し削除します。

②Edge to Collapse

Vertex Orderモードでは、三角形のどのエッジを折りたたむか、1番目、2番目、3番目を選択します。

③Protect Silhouette

シルエットを崩すようなエッジの削減を回避します。

④Normal Angle

Protect Silhouetteパラメーターがオンの場合、2つの面の間に割り込む角度を決定します。

Refine Method

⑤Refine Method

[PolyFill]
PolyFill Quadrilateralsオプションを使用して、NGon(N多角形)を解決します。

[Iterative Divide]
NGon(N多角形)がすべて四角形または三角形になるまで繰り返しスライスします。

⑥Fallback Fill Mode

PolyFillモードの時、Quadrilateralsオプションが失敗する状況を解決する方法を指定します。


Labs Quadrangulateノードの機能

Labs Quadrangulateノードの機能についてご紹介します。こちらも同様に、Houdini18.0.460を使用しています。
ジオメトリネットワーク上にTestgeometry Rubbertoyを作成します。

四角形メッシュのTestgeometry Rubbertoyを三角形メッシュにするために、ノードの下にDivideノードを接続します。ディスプレイフラグを付けると、メッシュが三角形になったことが確認できます。

この状態でLabs Quadrangulateノードを接続します。Labs Quadrangulateノードは、三角形メッシュを四角形メッシュに変換します。このノードは、とてもシンプルです。ノードを接続して、ディスプレイフラグを付けると、メッシュが四角形になったことが確認できます。

また、その他、Sphereオブジェクトに対して、Labs Quadrangulateノードを適用しました。Sphereノードを作成して、パラメーターの[Primitive Type:Polygon]に変換し、[Frequency:10]に設定します。Primitive TypeをPolygonにすることで、メッシュが三角形になります。

Labs Quadrangulateノードを接続します。デフォルトの状態でディスプレイフラグを付けると、メッシュが歪な形状に分割されます。

Labs Quadrangulateノードの[Method:Longest Edge]に変更することで、三角形から四角形メッシュに変換されたことが確認できます。

よって、入力ジオメトリに応じて、パラメーターのMethodを変更する必要があります。また、このノードは、四角形のメッシュを再現するノードですが、三角形のメッシュから明らかなエッジを除去できない場合、三角形メッシュが一部残存することがあります。

Labs Quadrangulateノードについては以上です。次に、Labs Remove Inside Facesノードについてご紹介します。



Labs Remove Inside Facesとは

このツールは、交差しているオブジェクトの内側の面を削除します。ブーリアンのように既存のジオメトリを変更せずにこれを行います。(隠れたプリミティブを削除することを除いて)このツールは閉じたジオメトリでのみ機能します。

各パラメーターについて

Inside Faces

①Remove Inside Faces

内側の面の削除を有効/無効に切り替えます。

②Border Precision

このパラメーターは、オクルージョンのチェックに使用される内部生成されたVDBの解像度を制御します。値が小さいほど、精度が高くなりますが、計算コストも​​高くなります。

③Border Threshold

この値は、ツールが隠れたプリミティブの開始位置をオフセットすることを可能にします。値が高い場合、プリミティブをカリングするために、閉ざされた部分の内側を深くする必要があります。

Clipping Surface

④Clip Surface

第二入力がある場合、入力サーフェス以下のクリッピングを有効/無効に切り替えます。

⑤Up Vector

プリミティブがクリッピングサーフェス入力の上下を決定するために、使用されるアップベクトルを指定することができます。


Labs Remove Inside Facesノードの機能

Labs Remove Inside Facesノードの機能についてご紹介します。こちら同様に、Houdini18.0.460を使用しています。
ジオメトリネットワーク上でSphereノードを作成します。パラメーターの[Primitive:Polygon Mesh]に変更して、[Rows:30]、[Columns:35]にします。

Sphereノードの下にUVUnwrapノードを接続します。

UVUnwrapノードの下にMountainノードを接続します。パラメーターの[Height:1.5]、[Element Size:1.3]に設定します。

再度、Sphereノードを作成します。こちらは、パラメーターの[Primitive Type:Polygon]に変更します。

Copy Stampノードを作成して、先ほど作成したSphereジオメトリの周りに、Mountainノードを適用した岩のようなジオメトリを複製して貼り付けます。
Copy Stampノードの入力にそれぞれMountain、Sphereノードを接続します。

Copy Stampノードの下にUVQuickshadeノードを接続します。UVQuickshadeノードは、イメージファイルをサーフェスに適用します。こちらでは、デフォルトの[uvgrid_grey.pic]を使用しています。

■補足:UVUnwrapノードについて
UVUnwrapノードを適用することで、ジオメトリの形状の歪みを最小限に抑えます。下画像は、UVUnwrapノードのBypassを切り替えた結果です。

Labs Remove Inside Facesノードの[Remove Inside Faces]、[Clip Surface]パラメーターの機能をより分かりやすく確認するために、追加でジオメトリを作成します。

Gridノードを作成して、パラメーターの[Rows:20]、[Columns:25]に設定します。

Gridノードの下にMountainノードを追加して、グリッドに凹凸を加えます。

Labs Remove Inside Facesノードを作成して、第一入力にUvQuickshadeノード、第二入力にMountainノードを接続します。

パラメーターの[Clip Surface]にチェックを入れることで、第二入力に接続したGridジオメトリに沿ってクリッピングすることができます。

Remove Inside Facesにチェックを入れることで、内側の面を削除することができます。

■補足:Labs Remove Inside Facesノード(HDA)の内部
Labs Remove Inside Facesノード(HDA)の中に入ることで、ノード内ではVDBボリュームが生成され、ボリュームベースでグループポイントを作成して、グループ内に含まれる内側の面を削除するように定義されていることが分かります。この機能は、[Remove Inside Faces]パラメーターに該当します。

また、下画像のノードツリーでは[Clip Surface]パラメーターに該当する機能がHDAの内部で構築されていることが確認できます。

■補足:Switchノードによるクリッピングの切り替え
Remove Inside Facesノードの下にMergeノードを2つ作成します。こちらでは、クリッピングしていない方を[No_Clip]として、クリッピングした方を[Clip]と名前をつけています。
また、判別しやすいようにノードを色分けしています。

[No_Clip]ノードには、UVQuickshade、Mountainノードを接続しています。ディスプレイフラグをつけることで、クリッピング非適用の状態を確認することができます。

次に、[Clip]ノードに対して、Remove Inside Faces、Mountainノードを接続します。同様に、ディスプレイフラグをつけることでクリッピングされた結果を確認することができます。

最後に、Switchノードを作成して、[No_Clip]、[Clip]ノードを接続します。

Switchノードの[Select Input]パラメーターの数値を変更することで、クリッピング有 / 無を切り替えることができます。

「Labs Repair」「Labs Quadrangulate」「Labs Remove Inside Faces」ノードについては以上です。

これらのノードを使用することで、メッシュの修復や三角形メッシュから四角形メッシュへの変換およびジオメトリの分割やプリミティブの除去など、Labsツールを使用することで容易に作業を行うことが出来ます。