2015/07/07

【Maya】XGen使ってみましたメモ

XGen最近さわったので備忘録。

Maya2014 Ext1あたりで追加された気がする機能です。
http://area.autodesk.jp/product/maya/extension_2014.html
(▲)こちらの記事によると、ディズニーの「ラプンツェル」「ボルト」やピクサーの「トイストーリー3」で使われているとのこと。
特に後者に関しては、画像検索するとイチゴの匂いのするピンク色のクマが出て来ますので、その辺で活躍した模様。

Autodesk社の紹介動画でもヘア、ファー関連が全面にアピールされている気がしていて、てっきりそのための機能だと思ってたのですが、
本質的にはオブジェクトを大量にインスタンスするための機能群(その一環としてのヘア、ファー)ということになるでしょう。
ここでは、ヘア・ファーの部分はおいておいてXGenを概観してみます。


※もろもろの事由により日本語UIですがご了承ください。
個人的には作業時は英語UIなのですが(^^;


以下、Maya 2016で使ってみたところ。
  • 『アーカイブ』
  • エクスプレッション(SeExpr)
  • マップの指定
この三点が特殊だなと思いました。


■『アーカイブ』を用意する


インスタンスするためのオブジェクトは、あらかじめ所定の形式( .xarc )にしておく必要があります。シーン内のオブジェクトをささっとインスタンス出来る訳ではないところにちょっと肩すかし。

(ちなみに、球形状は選択肢にあるのでそこから作成できますが、Cubeありませんので、アーカイブを作成して読み込む必要があります)

アーカイブ形式( .xarc )の正体は、圧縮されたマテリアル(.mi.gz)、Alembicジオメトリ…などの場所を記述したファイルになります。

マテリアル設定は、たぶんアーカイブ書き出しの前に行っておく必要があります。また、アーカイブ書き出しの際にはシーンを保存する必要があります。


■整列させるかランダム配置かを選ぶ


選べます。
ランダムを選択することがほとんどじゃないかなと思います。

■エクスプレッション



すべてではありませんが、アトリビュートに直接エクスプレッションを記述できます。
直接書き込める感じがちょっとHoudiniっぽいんじゃ!?と思いました。違ったらすみません。
(でも、Mayaのほかの項目もひととおり直接書き込めるようになったら楽しいなと思うんですが。ですが。)

しかも書き込むエクスプレッションが、MayaのExpression(実質mel)とは違って、「SeExpr」というなんか新手のやつです。新手といってもMaya2014から居るんで別にニューじゃないですが。
http://www.disneyanimation.com/technology/seexpr.html

どこかのプレゼン動画によると、発音は「エスイー・イーエックスパー」でした。「セーックス・プロ」じゃありませんw

アトリビュートの右の方にエクスプレッションボタンがあって、そこからエクスプレッションエディタを開きます。
ここで記述したものがシーンに適用されるほか、書いたものを保存して自分のSeExprライブラリを作ったり、すでに用意されてるサンプルを呼び出したりできます。
このサンプルで遊ぶだけでもけっこう楽しいです。

エクスプレッションの中で変数を用意すると、それに対応したスライダがXGenパネルの中に現れ、以後はエクスプレッションエディタ開かなくても調節できるようになります。これはありがたい。

$a=0.0300;#0.05,5.0
$b=10;
$a=$a+$b;
$a
たとえばこんな(▲)エクスプレッションを書くと…
このように、AとBが自動で作成されます。

■画像の読み込み


これが若干めんどうというか、ほかに良いやり方あるんじゃないかと思っちゃうんですが……
一応、以下のような手順でやるようです?

(▲)エクスプレッションエディタを呼び出すボタンの右にあるプルダウンから「マップを作成」。ついで出てくるダイアログで画像の解像度を指定します。ここでは200としておきます。

するとアトリビュート自体がマップとつながってる用のものになり、それに関するエクスプレッションが記述されます。

同時に、ジオメトリには所定のアトリビュートが追加され、そこにFileノードがつながります(この時点ではファイルパス欄にはなにも入力無し)。
そのFileノードで、あらかじめ用意していた画像を指定します。
……一連の流れでツールが「ペイントツール」に持ち変わっちゃってるのですが、ここではそれで描き込んだりはしないので無視(というか注意)です。

画像を指定したら、ここ重要なのですが、「ペイントを保存」ボタンを押します。
左から二番目。
なんでこっちで用意した画像を使うのに保存しなければならんのや?
と思ったのですが、XGen内ではPTEXに変換してそちらを読んでいるようです。
なるほどディズニーの技術って感じですね(?)
http://ptex.us/

……なので、XGenでの標準的なフローと今回のフローを比べると、以下のような感じ。

【ふつう】

マップ作成(Fileノードが出来る)

ペイントツールで描き込み

マップを保存( .ptex 作成)

XGenに反映


【今回】

マップ作成(Fileノードが出来る)

Fileノードにて、画像指定

マップを保存(これによって .ptex に変換

XGenに反映


というわけで、使いたい画像を指定した後PTEX作ってもらうのがミソです。

このPTEXの解像度は、「マップを作成」ダイアログで指定した値に依存するようで、広い面積に大量に物体を配置する場合は大きな値を指定することになるんだろうなと思います。


画像ファイルを修正したりしたら、またマップを保存ボタン押してPTEXを更新してもらいます。


■XGenの更新



基本的には見える範囲でインスタンスされるので、
ぐーっと寄って作業してからビューを引くと、インスタンスされてるはずの場所にオブジェクトがなかったりします。一瞬びっくりしますが機能が働いてないとかではなく、メモリ節約の一環のようです。
見えなくていいとこはカリング

更新ボタンを押すと、いまのビューにあわせてインスタンスが行なわれます。
また、作業に合わせて不要な部分はいつのまにか節約されます。





……ざっとこのような感じでした。
いじいじしながらできた画像。





エクスプレッションをちょっといじるだけで
大量のオブジェクトをごっそり並べ替えられるのは楽しいですねー
ビュー内のコントローラで直感的に操作するのとは違い、思った通りにするには歯ごたえがありますが。
ほかにもヘア・ファー関連の大量のツールが内包されてますが、ここではカッツアイ


■参考

XGen ジオメトリ インスタンサ @ Maya2016 ヘルプ
http://help.autodesk.com/view/MAYAUL/2016/JPN/?guid=GUID-C6324505-BD4F-4FD2-B340-CF99158D4819

XGen エクスプレッションエディタ @ Maya2016ヘルプ
http://help.autodesk.com/view/MAYAUL/2016/JPN/?guid=GUID-BA150C17-65E0-4688-91F4-73C4F857689E

XGen エクスプレッション リファレンス @ Maya2016ヘルプ
http://help.autodesk.com/view/MAYAUL/2016/JPN/?guid=GUID-AFB8F7F3-DCCC-414A-9EC3-83B97FCC8C30

一番いいと思ったチュートリアル動画が見つからない…どこでみたんだろ…

Creating Topological Art with XGen
https://youtu.be/L7XZxffWork

Scaling Spheres Uniformly using Expressions @ AREA
http://area.autodesk.com/tutorials/scaling_spheres_uniformly_using_expressions

Controlling Primitives with a Texture Map @ AREA
http://area.autodesk.com/tutorials/controlling_primitives_with_a_texture_map

↑…このへん、Arnold Renderのマニュアルの中にあるのとそのまま同じなんですが、仲良しなんでしょうか↓

Scaling Spheres Uniformly using Expressions
https://support.solidangle.com/display/mayatut/Scaling+Spheres+Uniformly+using+Expressions

Controlling Primitives with a Texture Map @ SOLIDANGLE
https://support.solidangle.com/display/mayatut/Controlling+Primitives+with+a+Texture+Map


0 件のコメント:

コメントを投稿