読んで触ってよくわかる!Mayaを使いこなす為のAtoZ第71回:Mayaでやってはいけないことをやってみよう!2017.10.17ツイートMayaコラムスクリプト・API中級者ところで、9V電池の端子を舐めたことがありますか?「Make:Electronics」という本に「9ボルト舌テスト」というのがあり、電気を体験するためにそういうテストが紹介されていました。やってみると舌がピリピリして、9ボルトでこれなら100ボルトがいかにヤバイかと言うのが肌で分かります。いうわけで、Mayaでもやってはいけないことをあえてやってみることで「ほんとにだめなんだな」と体験してみましょう。Mayaをクラッシュさせるコマンド実は次のコマンドを実行すると、Mayaがクラッシュします。{}うっかり書かないようにしましょう;)ログファイルがどこに出るかなど、テストするのに便利です。エクスプレッションでMELを呼び出すキューブを作ってアニメーションを付け、次のようなエクスプレッションを書きます。$temp[0];シーンを再生すると、続々とキューブが作成されて大変なことになります・・・。Undoしてノードを削除出来ない、再生する度にまた増えるという恐ろしい状態になります。エクスプレッションからコマンドを実行する場合は注意が必要です。値を照会するだけならパフォーマンスに影響がある程度で問題はそれほど無いですが、「階層を変える」「オブジェクトを作る」「アトリビュートを接続する」などシーンに影響を与えるコマンドを実行すると、シーンを壊してしまいます。シーンを加工するコマンドは、エクスプレッションでは使わないようにして、スクリプトエディタなどから実行するようにするのが安全です。アトリビュートのループアトリビュートの結果を他のノードに繋いで、その結果を元のアトリビュートにつなぐとループ状態になります。この状態を作るには、オブジェクトを2つ作ります。それぞれA、Bと呼ぶとして、A.translateXをB.translateXに接続します。B.translateXをA.translateXにつなぎます。片方が動くともう片方が動き、その結果が元のオブジェクトが動くというループ状態です。普通は入力を受け付けられないで全く動かせなくなりますが、場合によってはどちらかが優先して動かせることもあります。いうループ状態が発生すると、Warningとして「アトリビュートがサイクルしてまっせ」と表示されます。off」と実行するのですが、単にメッセージを出さないようにするだけですので、サイクルしている問題は解決しません。手動で修正する必要があります。Mayaはアトリビュートのサイクルを検出すると、適当なところで処理を中断するようになっていますので、無限ループで延々と計算し続けることはありません。どのタイミングで止めるかは明言していませんので、シーンを開く度に結果が異なる可能性があります。Ext2以降ではaddAttrに–proxyというフラグが追加されていますので、そちらを使います。次のスクリプト(Pythonの例)を実行すると、switchというアトリビュートが追加され、双方向接続になります。どちらのswitchを変えても、もう一つのswitchアトリビュートが変わります。ctrl_a)リグで複雑な制御をするときに便利です。Ext2以前のMayaとの互換性がなくなります。Number)例えば次のようなにキューブを作って、ちょっと横に移動してからmaファイルで保存します。maファイルを開いて、setAttrでtranslateを設定している所に、-1.#INFなどの文字を設定します。それからmaファイルを開くと、アトリビュート値が-infinityとなったり、ものすごく大きな数字になったりします。まれにこういう表示を見たことがある方もいると思います。普通は出てこないのですが、シミュレーションの結果がおかしくなるとか、Softimageのファイルを読み込むとか、FBX経由でデータを持ってくるとかしたときに、この表示になることがあります。要は異常な情報が入っており、数値として正常でないということです。他にも「1.#INF」「-1.#INF」「1.#QNAN」「1.#IND」という表記の場合もあります。直すには新しい値を設定してあげます。MayaのGUI上で設定しても上手く更新されないなら、maファイルとして保存し、テキストを直接0などの数値に書き変えます。独自のメインウインドウを作る次のスクリプトを実行します。-mainWindow;showWindow;すると次のようなwindow1というウインドウが立ち上がります。これ、Mayaと同じメインウインドウ扱いになります。Mayaを選択すればウインドウがMayaの後ろに行きますし、window1を閉じようとするとMaya自体を閉じるときと同じように「シーンを保存しますか?」というダイアログが表示されます。古いMayaでは、window1を閉じてMayaを終了すると、GUIのレイアウト情報がぐちゃぐちゃになるため、次回起動時にエライことになったのですが、Maya2018では大丈夫なようです。いずれにせよ、windowコマンドではうっかり-mainWindowフラグを使わないようにしましょう。既存のアトリビュートと同じ名前のアトリビュートを追加する同一ノードで、同じ名前のアトリビュートは追加できませんが、addAttrには-niceNameというフラグがあり、表示用の名前を設定できます。時々便利なのですが、これを使うとGUIでの見た目のアトリビュート名と本当のアトリビュート名が異なる状態になるため、混乱しやすくなります。次の場合ではアトリビュートaとbが、ともに「watashigaHonmono」という表示名になっているため、どちらがホンモノかさっぱりわからない状態になっています...。たちが悪いパターンとして、既存のアトリビュート名と同じ名前を表示名にするという方法があります。次の例では、悪意に満ちたTAがアトリビュートaの名前をTranslateXにしていますので、いくらTranslateXに値を入れても位置が変わりません...。実際のアトリビュート名を確認するのに簡単な方法は、値を入力してスクリプトエディタの履歴を見る方法です。スクリプトエディタには実際のアトリビュート名が出力されます。不審なアトリビュートを見かけたら、すぐに最寄りのスクリプトエディタで確認しましょう!まとめということで、Mayaで危ないあれこれを実際に試した結果をご紹介しました。Mayaはプロフェッショナル向けのツールですので、あれやらこれやら出来ないように制限するのではなく、ユーザの判断で自由に扱えるようになっています。Unity」という機能で、MayaからUnityのプロジェクトにFBXを書き出せるようになってからしばらく経ちます。30日間無償で体験できます。30日間無償で体験できます。製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。