XGen 用語
XGen paletter : プロジェクトファイル的なもの?
XGen description : シーンファイル, グループのようなもの.
XGen collection : 個々の XGen オブジェクト?
legacy XGen : もともとの XGen. XGen IG の登場によりややこしくなった. アニメーションやバッチレンダーなどする場合はこちらを推奨
IGS(XGen interactive grooming spline) : XGen interactive grooming spline. hair/fur のモデリング(grooming)に特化した感じ. 大量の strands も比較的高速に処理してくれるが, アニメーションやエクスポートさせるとバグが多くクラッシュしたり変なデータがついていたりとする. モデリング(grooming)以外には不向き.
XPD : キャッシュファイル. バイナリ形式. ローダ/saver https://github.com/syoyo/tinyxpd
XGen palette ファイル
テキストファイル.
プロジェクト設定
${project}/xgen
${project}/xgenScript
xgen
に XPD ファイルを配置,
xgenScript
に Xgen palette ファイルを配置します.
XGen palette ファイルを保存しておくことで, width ramp などのパラメータを保持できる.
(プロジェクトのパスを適宜修正)
bind
xgen バインド(T.B.W.)
バインドしたいジオメトリと driver ジオメトリを選択し, mel スクリプトを実行する
doWrapArgList "7" {"1", "0", "1", "1", "1", "1", "1", "1"}
パラメータ詳細は T.B.W.
SubD メッシュで deform させて xgen hair がちらつく場合
xgen を生やすジオメトリ(or scalp geometry)と, visible なメッシュで同じ subdivision level を使う.
offset を与える方法も考えてみる.
IGS -> legay XGen 変換
一旦 XPD 形式で書き出し, legacy XGen の grooming type で File from XPD
で読み込む
(ファイルの命名規則やレイアウトに一定のルールがある)
問題点として, XPD 経由では width ramp の設定や per-CV width を扱えない.
width ramp は python script などで出力する必要がある.
カスタムで legacy XGen で importer を開発して対応か.
coordinate が Local
の XPD を読み込む場合, bound 先の face ids が XPD に存在しないとクラッシュする.
一旦 Object
で生成した XPD を読み込み, Groom bake XGen deformer で XPD に再度書き出すと Local
になり, また face ids も bound geometry のもの全てが XPD に含まれる(XPD をダンプすると, primitive が生成されない face は 0 の prim になっている)
アニメーションについて
batch render する場合は一旦 abc キャッシュに書き出しすのが良い模様. legacy XGen UI で書き出すことができる.
legacy XGen で bound geometry を移動したときに, xgen primitive が移動されない
XGen では各種データを一旦ファイルに書き出すようなので, まずはシーンをセーブする.
また, keyframe を打つと viewport に反映される模様.
あとは, 目のマークで update を有効にしておく.
一部ではマニュアルでアップデートしないと反映されない模様.
Example code is located at xgen/devkit/xgenSampleModules
Generator
UI
Write the UI. You can write it in python.
Put plugin(module) to
${HOME}/xgen/plugins
Xgen search path
Put plugin(module) and python script to plugin directory.
# User repo
${HOME}/xgen/plugins/
NOTE: Xgen repo
# User
${HOME}/xgen/
# Global
${XGEN_LOCATION)/presets
# Local
${XGEN_DATA_PATH}/