リグログ!

【Maya】Expressionが重い説

「MayaのExpressionは重いから…。」
と実はいろんな人から聞いたことがあります。
ですが、それはどこから来ているのでしょう?
あまり出元がわからないのですよね…。

結論として言えるのは、「軽くも重くもない」です。
とあまりにも当たり前の回答なので申し訳ないですが…。
ただ個人的には利便性を考慮するとExpressionで処理することは良い選択だと思われます。

例えばRotationに割り算を施した結果を目的ノードに繋ぐ場合様々なやり方があると思います。
transform.rotation -> multiplyDivide.input1 -> multiplyDivide.output -> transform2.rotation
Mayaですとこんな感じなコネクションになると思いますが、rotationの場合はrotationの間にはunitConversionノードが入ります。
その結果、Expressionより全体的に重い処理になります。
コピー・ペーストで別のノードにすぐ適用もできるのは利便性が高いといえますね。
Expressionを視覚的に見やすくしたのがFabricEngineのCanvasみたいですね。

と…脱線しましたが…。
Expressionお作法をまとめてみましょう。

Expression設定お作法

スクリーンショット_050416_055527_PM
Convert Units:None(推奨)
これをNoneにするとConversionUnitノードができなくなります。
但し、RotationをRadianとして記述しなければならないので慣れが必要になります。

Evaluation:On Demand(必須)
こちらはかなり効果が高い設定です。
そもそもExpressionのデフォルトの設定ですと、「フレームの変更=評価される」という設定です。
例えば、
1. TranslateXに依存するExpressionを作成します。
2. TranslateZを使うアニメーションを作成します。
この場合は1のExpressionは評価してほしくないですよね?
ただ、EvaluationがAlways(既定値)の場合はExpressionが評価されてしまいます。
なのでこのような場合はOn demandにします。
要求があった時だけ評価されるようにしておけば無駄な評価を避けることができます。

詳細

以下のようなどうでもいいExpressionを作成しました。

pCube1.translateXが変わればscaleXが変わるというどうでもいいExpressionです。
※ちなみに自身のtransformをドライバーとして、自身のtransformのドライブするのは危険な結果になる可能性がありますので推奨しません。

上記の設定でpCube1のtranslateZでアニメーションをつけました。
1-640フレームでの評価状況は以下になります。

Always評価

On demand評価

結論

On demandだと評価されていないことがわかりますね。
基本的にはOn demandでExpressionを作成するよう心がけると無駄な評価が減らせます。
また、複雑なコネクションよりかはExpressionの方が高速という場合も多くあります。
個人的にはExpressionが最高のノードとすら思っているので普及していってほしいです。(笑)

デメリット

・ inputを無駄に多くしたり、outputを無駄に多くしたりすると恐ろしいほど重くなる場合があります。
・ 記述の仕方によっては、Expressionのせいでシーン開くの30分かかる時もあります。
※ Expressionは短いコードでの利用を推奨します。


MAYA キャラクタークリエーション -プロが教えるフォトリアル人体制作術-
Jahirul Amin 3DTotal.com
ボーンデジタル
売り上げランキング: 2,352

関連記事

コメントをお待ちしております

HTMLタグはご利用いただけません。

HelloWorld!

// サイトについて
主に3DCGのテクニカル関係の
ネタを取り扱うサイトです。

情報提供随時お待ちしております。


//管理人経歴

CADデザイナー

DTPデザイナー

3DCGインストラクター

UI/UXデザイナー

3Dジェネラリスト

アートディレクター

テクニカルアーティスト

リギングスーパーバイザー

テクニカルアーティスト

免責事項

本サイト内で公開している
全ての情報に関しては、安全性等、
いかなる保証もされません。

これらの情報を利用したことにより
生ずるいかなる損害に対しても
当方は一切責任を負いません。

使用する場合、
自己責任でご使用ください。

アーカイブ

カテゴリー