MENU閉じる

HEXA BLOG

プログラム

HEXA BLOGプログラム2019.6.25

fileコマンドと仲良くなろう

こんにちは、マイキーです。

先週末は夏至とかニュル24時間耐久とか色々ありましたが、今回はササっと本題に入りたいと思います。

前回のブログでは、コマンドラインからMayaを起動する方法について少し書きました。

コマンドラインで起動した後は、もちろんmelやpythonでMayaを制御する事になります。
上記スクリプト言語のMayaコマンドリファレンスにはMayaを動作させているほとんどのコマンドが記載されており、これらを理解していくことがMaya上で動作するツールの作成に必要になってきます。

しかし、その中には難解・複雑なページがあります。
その代表と言えるのが「file」コマンドのページでしょう。

ページを開いて2~3回スクロールしてウィンドウを閉じた皆さん、正常です。
さて今回は、このフラグだらけのfileコマンドについて「とりあえずコレはよく使うかも…」というフラグと用法を、いくつか挙げていこうと思います。

================

・シーンを開く→open
まずはコレよね!といった感じです。
Mayaのファイルメニューから「シーンを開く」を選択してシーンを開いた際、スクリプトエディタのログにも省略形で出力されていますね。
リファレンスページではコマンド名(例:-open)の後、丸括弧の中に省略形(例:-o)が記載されています。
ログにはフラグが省略形で表示される物も多いですから、それぞれ把握しておくと処理の理解が速くなると思います。

・シーンを保存する→save
作業したらその内容を保存したくなるものです。
「file -save」というこのコマンドだけで現在のシーンが上書き保存されます。
新規シーンの場合は「rename」コマンドを使ってシーン名とそのパスを指定してあげる必要があります。

・新しいシーンを開く→newFile
現在の状態を全て破棄してまっさらなシーンを開きます。
必要に応じて、実行前にシーンを保存しておきましょう。

・シーンへ別のシーンを読み込む
①インポート(追加読み込み)する→import
②リファレンス(参照)する→reference
現在開いているシーン内に、指定されたシーンを配置します。シーン同士を合体させるイメージですね。
importは実行した時点の複製をシーンに配置しますが、referenceは指定されたシーンを都度参照するノードをシーンへ配置します。
リファレンスはシーンを開くリファレンス先シーンをロードしなおす為、リファレンス先の更新が自動的にマージされるような挙動をとります。

・ネームスペースでカプセル化→namespace
指定シーンをインポート/リファレンスする際、指定したネームスペース名でカプセル化します。
読み込もうとしているシーン内に存在するノードと同名のノードが既に存在していると色々面倒なので、import/referenceフラグを利用する際は大体使用する事になります。

例えば、「file -namespace “foo” -reference “bar.mb”」という風にシーンを読み込んだとき、bar.mbにある全てのノードは「foo」というネームスペース名でカプセル化されます。
「|hoge」というノードの場合は「|foo:hoge」に、「|hoge|huga」の場合は「|foo:hoge|foo:huga」といった具合です。

・ネームスペースを統合→mergeNamespacesOnClash
読み込み先のシーンと読み込むシーンに同じネームスペースが存在していた時の挙動を指定するフラグです。
具体的な説明はリンク先でされているので割愛して、簡潔な説明をすると

読み込み先のシーンと読み込むシーンに同じネームスペースが存在していた時、
●trueを指定
・ネームスペースを共有
・ネームスペース内に同じ名前のノードがあったら、読み込まれたシーン側のノードをリネーム
●falseを指定
・読み込まれた側のネームスペース名を変更

といった具合になります。

・リファレンスを削除→removeReference
referenceで読み込んだシーンを、現在のシーンから除去します。
引数には参照されているシーンパスを指定する必要がありますが、これは「referenceQuery -filename [リファレンスノード]」で取得する事が出来ます。
「リファレンスノード」とは、referenceでシーンを読み込んだ際作成されるノードで、大体「RN + シーン名」という名前になっているはずです。
作業者ごとにリファレンス先のパスが異なる状況では、上記コマンドでパスを取得するとトラブルが回避し易いと思います。

・リファレンスをインポート→importReference
既にreferenceで読み込まれているシーンを、現在のシーンへインポートします。
リファレンスは便利ですが、リファレンス元の変更によって引き起こされるトラブルも多々ありますから、状況次第でインポートしてしまうのもアリです。

================

ひとまず、自分がよく使っているfileコマンドのフラグはこんな感じでした。
以外と少なかったなと感じると同時に、「こんな機能あったんや…」という発見もありました。
たまにリファレンスを眺めてみるのも良いですね。

それではまた!

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE