はじめに
Houdiniを利用して、板ポリゴンに丸石を敷き詰める方法を解説します。
正方形の板ポリを利用した場合は以下のような正方形の丸石の床になります。
星形の板ポリを利用した場合は以下のような星形の丸石の床になります。
この記事で得られるノウハウ
・Houdiniを利用して床に丸石を敷き詰める方法
・Houdiniでの簡単なUV展開
前回の記事
丸石の床の作成手順
板ポリゴンの用意(Gridノード)
まずは丸石を敷き詰めたい板ポリゴン床を用意します。
今回はGridノード(正方形の板ポリゴン)を利用します。
板を分割する(VoronoiFracture)
次に、ボロノイ分割と呼ばれるアルゴリズムを利用してこの板を分割します。
ボロノイ分割についての説明は割愛しますが、以下のように板を分割することをボロノイ分割と呼びます。
分割の中心点を用意(Scatterノード)
板を分割するためには、分割の中心となる点群が必要となります。
Scatterノードを利用して点群を作成します。
点群を利用して板をボロノイ分割する(Voronoi Fractureノード)
次にVoronoi Fractureノードを利用して板を分割します。
Voronoi Fractureノードの左側の入力には板ポリゴン(Gridノード)を、右側の入力には点群(Scatterノード)を接続します。
板が分割されましたが、まだ丸石とは言えない状態です。
補足 : ワイヤー表示
Sceneビューにマウスカーソルを乗せた状態でShift + Wを押すとモデルをワイヤー表示することができます。]
もう一度Shift + W を押すと元に戻ります。
石を丸くする(Resampleノード)
Voronoi FractureにResampleノードを接続して、分割後のパーツをサンプリングしなおすという加工を加えます。
ここで、さらにResampleを適用して石を丸くします。
石に厚みをつける(PolyExtrudeノード)
ResampleノードにPolyExtrudeノードを接続し、石に厚みを付けます。
UV展開(UV Textureノード)
最後に、UV展開します。
UV Quick Shadeノードを接続してUVを表示すると以下のようになっています。
以上で丸石の床は完成となります。
OBJファイル出力(ROP Geometryノード)
ROP Geometryノードを利用することでOBJファイルを出力することができます。
Output Fileの部分にobjファイルパスを入力し、Save to Disk ボタンを押すことでobjファイルがエクスポートされます。
出力したOBJファイルをUnityのシーンに持ってくると、以下のような見た目になります。
マテリアルを整理する
OBJファイルをUnity上で表示するとマテリアルが二つになってしまっています。
Houdini上でGroupを設定することでこれを回避することができます。
先ほど作成したVoronoi Fractureノードを見てみるとGroupを作成するような設定になっているため、これを解除します。
Interior GroupとExterior Groupのチェックを外しましょう。
この状態でOBJをエクスポートするとマテリアルがdefaultのみになります。
UnityからSTYLYにプレファブをアップロードする方法
作成したプレファブをSTYLYにアップロードする方法は、以下のマニュアルを参照してください。
おまけ: 円形の床を作ってみる
これまではGridノードを使って正方形の丸石の床を作りましたが、GridノードをCircleノードに置き換えると円形の丸石の床になります。
CircleノードはGridノードと法線が反対方向を向いているため、ここではReverseノードを使って法線を反転させています。
おまけ2: 星形の床を作ってみる
以下のような星形の床の作り方を紹介します。
星形の作り方
Circleノードを使って正10角形を作成し、偶数番目の頂点を小さくすることで星形をつくることができます。
Circleノードの設定(正10角形を作成)
CircleノードのDivision に 10を設定することで、正10角形になります。
Group by Rangeノードの設定(偶数番目の点を選択する)
偶数番目のポイントにグループgroup1を割り当てます。
Transformノードの設定(選択した偶数番目の点を小さくする)
Transformノードを利用して偶数番目の点に0.5倍のスケーリングをかけます。
星形の床の完成
UV TextureノードのDisplayフラグをONにすることで、以下のような星形の丸石の床が表示されます。