HeightFieldからConvertHeightFieldでPolygonに変換した場合、HeightFieldの設定によっては下記画像のようにポリゴンがのびてしまう場合があります。
この状態でpolyReduceを接続したとしても下記のように他の場所に比べて細長いポリゴンが生成されてしまいます。
これを防ぐために一旦HeightFieldからVDBに変換します。
その後、VDBをポリゴンに変換します。
これで均一に分割できます。Adaptivityを設定することで、分割が必要な部分に頂点を追加することもできます。
polyReduceを追加して、更にポリゴン数を減らし、平均化します。
ただ、VDBを間にいれると元々Grid状だったモデルに
側面や底面が追加されてしまいます。
この側面は底面を削除します。
ここまで作成したデータをboxにつなぎます。
これで、作成したモデルのBBoxと同じ大きさのBoxが作成されます。
Transformで少し縮めます。
pivotはcentroidを使用して、Boxの軸の中心にくるようにしてください。
これを元のpolyReduceとBooleanします。
この時に、一番底辺になっている部分に穴が空いてしまいます。これを防ぐ必要があります。
Convert HeightFieldノードに戻り、Depthを-10にしました。
これにより、HeightFieldをVDBにした際のDepthを増やし、HFの一番下に位置する部分とボリューム底面に幅を持たせることができました。
Boolean結果を確認すると先ほど削れてしまった部分がきちんと残っていることがわかります。
BooleanのオプションでA inside Bをオンにして、その部分をグループにします。
この場合、Aが元の地形で、BがBBoxです。
最後にDeleteをつなぎます。
Groupでainsidebをを指定して、OperationをDelete Non-Selectedにします。
これでVDBで平均化+AdaptiveしつつGrid状態の低解像度地形を取り出すことができました。
GridにしたのでUV展開も楽に行うことができます。
必要があればUV Smoothノードを追加してください。NormalMapをベイクする場合は、Normalを追加してください。
これでローポリモデルとハイポリモデルを作成することができました。
あとは、既にご紹介したBakeTextureを使用してNormalMapなどをベイクして、適用すれば完成です。
Houdiniはノードの組み合わせでにより、同じような結果を様々な手法で作成することができます。
今回の低解像度ポリゴンを作成する方法はたくさんある手法の中の1つで、もっと良い方法をぜひ探してみてください!