最近知ったMayaの事

Mayaを覚えてからずいぶん立ちますが(専門時代も入れれば5年?)今更知った事。

1 Mayaのビューのレイアウトを保存できる

普段、アニメーション作業時は3面(上がレンダリングカメラ・Perspカメラ、下がグラフエディタ)
その他作業のときは4面にしてるんですが、いちいち↑の3面にするのが面倒だったのでMelでビューの切り替えコマンド書いて切り替えてました。
まぁ、コマンドでかいても結果同じですが レイアウトのコマンドって分かりにくいので手軽に登録できるのを知ったときにはかなりショックでした。
コマンド洗いだした私の努力を返せ ウワーン

2 1つのジオメトリに対して複数のコンストレインをすることができる

+  LocatorA

+  ←AとBにPointConstraintしたLocator

+  LocatorB

複数コンストレインをすると、コンストレインした間にLocatorは位置する
これも知らずに↑のように中間地点にいるLocatorを作成するとかをExpressionで全部書いたりした気がします。

他の人と話をしていると、あたりまえのように作業で使っていることでも そんなことしらねーwwwwってことが結構あるんですが、↑のはかなり衝撃でした。
まだまだ知らないこととかいっぱいあるんだろうなぁ

ノードに名前をつける つけない?

Mayaのデータを見ていて最近非常に気になるのが、シーン内の整理と名前付け。
私も面倒くさいので、ちょっと気を抜くとノードの名前付けをサボって Joint1だとかpSphere1だとかlocator1のような名前がずらーっと並び、カオスなことになってしまいます。

単純なシーンであれば、多少名前がカオスになっていても問題ないのですが、スクリプトを通したりするとなると話は別で、いろいろ不都合がでてきます。

Mayaは同じ階層には同じ名前をつけることができませんが、親子の階層が分かれていれば同じ名前をつけることができます。
その場合、ファイルパスと同じように ノードの名前は同じでも
group|node|joint1
のように スクリプト的には↑のようなパスがノード名と扱われてしまいます。
そうなると、コード的には joint1 なのに、一致しない あるいは 同じノードが複数あります といったエラーに繋がってしまうのです。

スクリプトを使わないとしても、オブジェクトが多くなれば多くなるほどどれがどのオブジェクトかわからなくなってしまうので、自分の作業をしやすくする意味でも ある程度名前づけはしておいたほうが良いです。

とりあえず、ものすごい簡単なリネームコマンド

選んでるものをまとめて引数に与えた文字列+ _数字 にリネーム

global proc selectRename(string $rename){

string $selection[] = ls -sl -fl;

int $i = 1;

for ($node in $selection) {

rename $node ($rename + “_” + $i);

}

}

あけました

さようなら2010年 こんにちわ2011年

電車の中でを年をこし、新年おきたら昼過ぎで家族全員でかけてるという まったくもって正月らしくない1日から始まった2011年
みなさまどうお過ごしでしょうか。

とりあえず、私なりの2011年の抱負

・体力つける
冗談抜きで最近体調が思わしくないのと、すぐへばってしまうので体力つける 元気になる

・Mayaのプラグインをかけるようにする
師匠にコンパイル方法やら、基本的な構造やら考え方を教えてもらったので いい加減プラグインをちゃんとかけるように勉強します。
スクリプトはほぼ問題なくかけるんだけど、プラグインかけないとできることには限度があるからね。
そろそろ基礎は終わり、これからは自分の手足となる土台を作りつつ、できるこの幅を広げる

・英語少しはできるようにする
次のシーグラフ(カナダ)に行く予定なので、それまでには多少なりとも英語への耐性をつけたい といってもリスニングとかぐらいしかできないけど。

社会人になってからの1年は、学生のときにくらべて一年後との変化はあんまりないですが
その中でも、自分なりに1つ1つ階段を上って、成長していけたらなと思います。

さて、はたしてこのなかでどれだけ目標は達成できるのかな。

lightLinker増殖バグ 解消法やら

今の仕事を進めていたときに、妙にシーンが重くなって 300kbぐらいのファイルのはずが70MBぐらいになっててまともに作業ができなくなる現象が多発

原因はMayaのシーンをImportExportするとLightLinkerのゴミがゴキブリのように増殖するという かなり昔からあるMayaのバグのようなのですが 未だに治っていない問題のようです。
なので、一気に掃除するためのコマンドで対応してみました。

{
string $selection[] = ls -type lightLinker;

for($select in $selection)
{
lockNode -lock off $select;
catch(delete $select);
select -cl;

print (“delete->” + $select + “n”);
}
}


lightLinkerはNodeLockが掛かっているので、解除して削除 を数分繰り返すスクリプト
あまりスマートな解決法じゃないけど、これぐらいしかないよなぁ

mayaのPython勉強

仕事でまたしばらくセットアップやらをやることになったので、せっかくだから作業につかう補助スクリプトをパイソンで書いてみようと本体の構造考えつつ書き始めてみました。

とりあえず、大雑把なことは前にも書いた気がするのだけどいくつかメモ書き。
1 PythonのMayaモジュールインポート
import maya.cmds as maya
maya.cmds.ls とか全部打つのは長いので変更。
from maya.cmds as * とかでもいいのかなぁ どうなんだろ。

2 melのオプションは
maya.ls(sl=True,fl=True)
のように、
=True で設定する。

あたりを気にしつつ書けばだいたいできたけど、どうもクセが強くてなれるまでに時間がかかりそう。
pythonの文法自体は問題にはならないんだけどね。

そのへんのクセをつかんでしまうと、もともとメインスクリプトとして利用しているだけあって、melよりはるかに便利。

あるていどMayaPythonになれたら、今度はビルダーとかMaxPythonとか手を出してみよう
その前にAdobeのAEのJavaScriptだろうけど。