Houdiniでメッシュの複雑さに応じてポリゴンリダクションする

Houdiniを用いてポリゴンの形状の複雑さを考慮してデシメーション(ポリゴン削減)する手順についてまとめた記事です。

フォトグラメトリで生成したモデルは以下のような難点があり…

  • 平らな面もハイポリになってしまい必要以上に重いデータとなってしまう
  • まるごとリダクションするとディテールを残したいところまで削減されてしまう

というわけで複雑なところはリダクションせず平らな面のところだけリダクションする方法をまとめた。

ここでは「複雑さ」を「エッジの曲率」として取得しリダクションするアプローチを取った。
(他におすすめな手法あったら教えて)

曲率を取得するにはLabs Measure Curvatureノードを使用するが、デフォルトではこのノードが有効になっていないので以下の手順で有効にする。

[+]ボタン > Sheleves > SideFX Labs

SideFX Labsタブが作成されるが作成直後は何もボタンが読み込まれていないのでUpdate Toolsetをクリックしアップデートする。

以上の手順でLabs Measure Curvatureが使用できるようになった。

この状態でTAB MenuにてLabs Measure Curvatureを検索するとノードがヒットするのでこれを選択する。
※Labs Measure Curvatureはジオメトリ用ノードなのでジオメトリノードの中に入った状態でTAB Menuを開くと出てくる (ルートのobjの階層にいると出てこないので注意)

作成したノードと読み込んだモデルのノードを接続する。

赤枠部分で囲った各パラメーターをモデルの形状に応じて調整する。
赤くハイライトされている箇所が後の工程でポリゴンリダクションから除外される。

最後にリダクション用のノードPolyReduceを作成する。

前行程で作成した曲率情報を持ったAttributeを使用したいのでRetain Density by AttributeAttributeにチェックを入れ、Attribute名(ここではconvexity)を指定する。

モデルの形状に応じてWeightの値を調整する。

以上。

チェーンや指、服の皺等の複雑な形状の部分は維持したまま、床や壁面の平らな部分のみリダクションする事が出来た。