Maya + Mental Rayの限界?

一瞬で1日が過ぎ去っていく今日この頃です。

「サイエンスを、正しく、楽しく。」を実現するためには、実験データや画像データを直接いじって3Dソフトウェア上に取り込んだりする作業が必要なのですが、最近色々やっていてちょっとした(個人的にはだいぶ大きな)壁にぶつかりました。

以下、3DCGやっている方への僕なりの情報共有。3DCGやっていない方には全くわけがわからない内容だと思いますので無視して下さいw

Maya + Mental Rayの限界の壁にぶつかってしまいました。Instancer (Instanceではなく)で大量のオブジェクトを制御しようとしたときに、Instanced Objectsのcolorを、何をどうやってもvector arrayで制御出来ない、と言う限界。色の制御が出来ない、と言うことはつまり、
http://www.mathworks.com/matlabcentral/fx_files/28211/3/fig_quiver2patch_01.jpg
みたいな、大量のオブジェクトの色を変える画像をMaya + Mental Rayでは作れないことになります。と、言うことは、つまりMaya + Mental RayでData Visualizationは出来ません。。。
Maya関連のこれまでのフォーラムやドキュメントを相当読みあさって、且つ色々な人に聞いてみたりもしましたが、やっぱり出来ないみたいです。超面倒くさいセットアップをすれば理論上は出来なくもないはずなのですが、重すぎて多分動きません。Maya + Mental Rayで基本的には何でも出来ると思ってたのに、非常に残念。
ちょっと考えてみれば、Mayaはinstanceする場合にtransform nodeだけを複製して単一のmesh nodeを参照し、material情報やvertex color情報はtransform nodeではなくmesh nodeに記載されるので、構造上無理そうな予感がしますね。Mayaがそう言う仕様で出来ている以上、特殊なことをしないと解決出来ないのでしょう。

colorをvector arrayとして保持しているrgbPPはParticle Sampler Infoを使ってアクセス出来そうなものなのですが、Particle Sampler InfoはParticle Shapeに接続されたTdynParticleShapeしか読み込めない、とMayaのドキュメントに書かれており、Instancerに接続されたvector arrayは読みに行ってくれないようなのです。ここからは勝手な推論ですが、たぶん、Particle Sampler Infoに近いnodeで、kDynArrayAttrsDataを読んでくれるようなnodeを自作できれば何とかなる…ような気がしなくもないのですが、実現するにはMaya APIを理解して、且つrenderer側のcustom shaderまで書かなければいけないので流石に無理そうです。Mental RayのUser Dataをもっと調べれば出来る…のかもしれないのですが、vector arrayを先頭から3つずつ読んでmaterialに渡すとか出来るんだろうか。

Maya + 3delightであればどうにかなる…かもしれないようなので、無料ですし、この際3delightも勉強してみようかなぁ、と(また仕事が増える…orz)。ただ、その場合、今度は作業する人全員が3delightを使ってくれないといけない、と言うことになるのですが。。。僕がセットアップ全部やっておけば大丈夫か。。。無料だし。
NHKエンタープライズがCGWORLDの記事で3delightを使っていると明言していましたが、真の理由はこれなのかな??
何だか最近、テクニカルサイエンスCGクリエーターっぽい方向になってきている気がします…。

もし良い解決方法をご存知の方がいらっしゃいましたらぜひ教えて下さい。Houdiniに切り替えれば?と言うのは無しで。。。(Houdini嫌いとかではなく、流石に一から全く新しいソフトウェアを短時間で習得するのは難しいのと、Mayaで出力した画像とのコンポジットが大変なことになりそうなので…)


カテゴリー: 3DCG パーマリンク

Maya + Mental Rayの限界? への1件のフィードバック

  1. kaw のコメント:

    通りすがりです。
    お察しの通りPPアトリビュートでインスタンサーの色を制御することはできません。
    矢印程度のジオメトリであれば僕ならインスタンス用にRGB16諧調、計4096個ほどの色違いの矢印を作成します。
    インスタンスするジオメトリをエクスプレッションを使って差し替えることで色の制御をします。
    矢印ではなく直線で良いならストリークタイプのパーティクルを使用すればもっと簡単です。
    シェーダ開発が可能ならジオメトリシェーダーを書くという方法もあります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です