背景
XGen の hair/fur を幅を持たせてポリゴンにしたい.
今回は Maya の標準機能だけで行う
制約
- XGen, XGen IGS ともに, 短冊状ポリゴンのみで, tube 状は作れない模様.
- 生成されるテクスチャ UV は strand ごとに同じである
XGen
Generate
-> Convert XGen primitives to Polygons
を使う.
(XGen Editor の Preview/Output
-> Operation "Create Geometry" も同等)
XPD でファイルからデータを読んでいるばあい, width の変更はできないので注意(width ramp は変更できるが, [0.0, 1.0] の範囲の値に限られる).
Preview での表示パーセントの設定で, Generate mesh することができる(たとえば表示率を 10% にすると, 全体の 10% の strands に対してメッシュが生成される.
Combine Mesh が off だと, Strand ごとに node が生成されるため, 本数が多いと時間がかかる(e.g. 1 万 strands など).
Combine Mesh
on だと高速であるが, 一つのメッシュになるため, その後 strand ごとにポリゴン面を選択して処理がやりずらくなります.
XGen igs
ポリゴン生成は Generate
-> Convert Interactive Groom to Polygons
で行けます.
width の設定で少し幅を持たせておくとよいでしょう.
XGen のように preview percentage の機能は無い(?)ようなので, 本数制御はできない模様.
(Density parameter で調整は, 動くときと動かないときがある?)
XGen IGS -> XPD -> XGen?
igs を XGen に変換すれば, preview percentage で生成本数制御できます.
XGen igs -> XPD は, XGen SDK にあるプログラムで変換できる
ただし, XGen SDK サンプルコードでは width taper の設定は適切に設定されていないため, 以下のように少し変更が必要です.
また, width ramp の設定は XPD ファイルに記述できないため, python script などで別途 export/import が必要です.
生成された strand mesh の本数を減らす.
Python でランダムにノード選択 -> 削除でいけるでしょう.
TODO
- Ornatix などの hair plugin を使えばよりよいポリゴン化機能があったりするかしら?
- XGen の開発は止まっているようでこれ以上の改善は期待できないため, Alembic 書き出しして自前でポリゴン化するプログラムを書く
- e.g. tube 状ポリゴンを生成など
- 生成したポリゴン面に, hair のシェーディングを bake するプログラムを書く
- ptex を使うなどして, strand ごとに unique な UV をアサインする