LoginSignup
2
0

More than 5 years have passed since last update.

Maya XGen Interactive Grooming Spline を CyHair に変換する

Last updated at Posted at 2018-02-09

maya-preview.jpg

gltf-spline-draw.png

漢なら Maya Gen Interactive Grooming Spline を CyHair 形式に変換したいですね!

やりましょう!

コードはここにあります.

概要

髪の毛や Fur のデータフォーマットとして, CyHair フォーマットが有名です. http://www.cemyuksel.com/cyCodeBase/soln/using_hair_files.html

Maya XGen のカーブを CyHair 形式にしたくなりますね.

ただ, Maya XGen Interactive Grooming の機能では, なぜか Maya NURBS カーブに変換する機能がありません(内部表現が Spline だからでしょうか. Interactive Grooming では無い XGen 機能だと Maya NURBS に変換できます).

調べてみると XGen Spline API というのが提供されていて, これでスプラインデータにアクセスできるようになっています.
(Arnold とか VRay などのレンダラーではこれを介してカーブのデータをやりとりしているようですね)

XGen Spline API 経由ですと, いろいろとアトリビュートにもアクセスできるようなので, これを使ってみましょう.
(キャッシュを Alembic で Curves として書き出すことはできますが, Alembic だとアトリビュートが全部付与できるか? 不明)

Maya から XGen データを書き出す.

XGen Interactive Grooming Spline データは, 以下の MEL コマンドで, ファイルに書き出すことができます.

xgmExportSplineDataInternal -output "/path/to/export.xgen" "[description1]_Shape.outRenderData";

ここで [description1] はノードの名前です. たとえば, xgen1 というノードがあったら, DAG 名(?)は _Shape.outRenderData をつけた xgen1_Shape.outRenderData となります.

この辺りの詳細は xgen の devkit あたりをあさってみてください.

XGen API を使う

xgmExportSplineDataInternal で吐き出したデータを読み込むのに XGen C++ API を使います.

XGen C++ API は, OpenMaya API には依存していないので, スタンドアロンアプリとしてつくることができます.

ちなみに, XGen API を含んだバイナリを実行する時には, Maya のライセンスは求められないようです(もともと XGen は別アプリだったので, ライセンス認証のしようが無い?)

スタンドアロンアプリのビルド

基本的には XGen の includelib にパスを通してあげれば問題なく使えます

詳細はコンバーターの CMakeLists.txt あたりを参照ください.

OpenMaya などには依存していませんが, libclewlibPtex あたりだけ maya 本体の lib への依存関係があるので, 実行時 LD_LIBRARY_PATH でサーチパスを調整する必要あります.

CyHair ファイルをつかう.

コンバートした CyHair データは, PBRTv3 でレンダリングしてみたり,

cyhair_to_gltf https://github.com/syoyo/tinygltfloader/tree/master/examples/cyhair_to_gltf で OpenGL preview してみましょう!

Happy Hair/Fur rendering!

TODO

  • Modifier のつき方によっては期待される形状がエクスポートされないので原因を究明する.
  • XGen のファイルフォーマットは公開されているっぽいので, XGen API を使わずに自作で XGen ファイルをパースできないか検討する.
  • Photobooth hair 形式にも対応する.
  • 優秀な Maya XGen 若人が, XGen C++ API を使いこなすことで, 人類史上最速で優秀な Maya XGen Spline 変換若人へと昇華するスキームを確立する旅に出たい.
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0