2018年3月26日月曜日

maya2018のcontrollerノードを使ってみた感想

maya2018にcontrollerノードと云うのが追加されたみたいです。
新機能ダイジェストでは紹介されていない地味な機能ですが、コントローラの可視性を設定することが出来るらしいです。

リグのコントローラへ接続してアトリビュートを設定するとマウスオーバーでリグの表示・非表示が切り替わる。みたいな。

controllerというmelコマンドも追加されているようです。
ドキュメントを読んでみると

string $lct[]=`spaceLocator`;
string $tag=`controller $lct[0]`;

みたいにしたら、作成したノード名を取得できそうな感じを受けますが、何も帰ってこない・・・。
バグってる?
仕方が無いので

string $tags[]=`ls "*_tag"`;
for( $tag in $tags ) setAttr ($tag+".visibilityMode") 2;

とする事にしました。


可視性の設定をしてリグを操作してみた感想としては、
使い物になりません
マウスをコントローラの位置まで持っていかないとリグが見えないので、どこにコントローラが有るかを手当たり次第に探す羽目になります。
リグを作った当事者であれば、コントローラの位置を把握できているハズなので、選択しに行けそうですが、表示非表示の反応がシビアなので何を選択しているのかが分かりづらい・・・。
どうしても使うと言うのであれば、scriptJob でselectionChangedを監視して、visibilityModeを積極的に変更するようにしたら少しはマシになるのかも。

なので、今の段階でコントローラの可視性を設定するのはイヤガラセ以外の何物でも無いみたいな感じですね。

同じノードを使ってピックウォークを設定できるみたいですが、設定が面倒なので、なんか使う気には成れなかったです。
使い道としては、多分、こっちがメインなのだと思うけれども。

autodeskがどう云うロードマップを敷いているのかはわからないですが、もう少しブラッシュアップの必要なノードに思いました。

2018年2月16日金曜日

エクセルでファイルサイズのリストを作る

MS-DOSとEXCELを使用してファイルサイズの表を作成してみるテスト。

まず、ファイルサイズのリストを作成したいフォルダを開きアドレスバーに cmd と入力してDOS窓を開きます。
※こうすると開いていたフォルダがカレントになっているので、 cd(chdir)する手間が減ります

で、2つのファイルを作成するため、以下のようにコマンドを実行します。

2018年1月25日木曜日

MELを使って別名保存を行う

膨大なフラグが存在するfileコマンド。
しかも幾つかのメインフラグと、それを補助する二次フラグに分かれていて、適切に組み合わせないと上手く動作しないクセにサンプルコードの種類が少ない厄介者です。

ふだん何気なく行っている操作で「シーンを別名で保存」というのがありますが、これをMELだけでやろうとすると意外とつまづくみたいです。

参考用にスクリプトエディタの履歴をみても、

file -f -save -options "v=0;";

としか表示されていません。
単純に考えて、

file -save -type "mayaAscii" "d:/hogehoge.ma";

みたいに最後に保存パスを指定してもエラーになります。
エラーを良く見ると、-save ではファイル名を指定できないから、先にリネームしろと言っています。
昔は回避方法とか記されていなかったような気がしましたが、良く起こす間違いなので追加されたのかな?

要は

file -rename "d:/hogehoge,ma";
file -save -type "mayaAscii";

と2つに分けて実行しろと云う事みたいです。

リネームの時、フルパスではなくファイルの名称だけで指定すると、カレントワークスペースへ保存されてしまう罠も仕掛けられているので要注意。

2017年12月12日火曜日

カーブオブジェクトの座標をスクリプトで使いやすくプリントする

昔、カーブオブジェクトのEP座標を表示するスクリプトを作ったのですが、スクリプトに組み込むには少し使い勝手が悪かったので、用途を限定し作り直してみました。

tryPrintCurveEP.mel


こんな感じでカーブオブジェクトを作成したら、選択状態でコマンドラインへ
tryPrintCurveEP 桁数
で実行。


2017年11月20日月曜日

melでフォルダのリストを作成する

たまにしか使用しないため備忘録。

melから指定パス内のファイルやフォルダのリストを作成するためのコマンド
getFileList

-folder(-fld)で調べたいパスを指定すると、そのパス内のフォルダ名とファイル名がリストで返されます。
getFileListには-filespec(-fs)という検索用のフラグがあり、ワイルドカードである程度返ってくるファイルを絞れます。

ここでちょっとつまづきます。
リストをフォルダだけに絞りたい場合は・・?

まぁ返ってきたリストをfiletest -dで判定すれば良いのかも知れませんが、スマートではないのでfilespecで何とかしたいところです。
で、フォルダって言うのは拡張子が無いってことなので、"*."を指定するわけです。こんな風に。

string $list[]=`getFileList -fld $path -fs "*."`;

このリストにはパスが付いていないので、使用する場合には
($path+"/"+$list[0])

みたいにする必要があります。