2024年3月4日月曜日

workspace.melファイルを修正する

 Mayaではシーンごとにプロジェクト設定をするのが一般的です。
 しかし分業を行う場合、シーンごとにプロジェクトを分けてしまうと、構成を把握するのに手間が掛かるし設定ミスも起き易くなるので基準となるパスはコチラ側で指定してしまいます。

 まぁこれは多人数で行うゲーム開発向けの特殊な例かもしれません。
 ※対象はキャラクタアニメーション

 プロジェクト内は、こんな感じの構成。

 リグファイルの配置の関係でキャラクタごとにプロジェクトを分けず、全体を1つのプロジェクトとして扱います。chr001~chr005フォルダの中にそれぞれのアニメーション用シーンファイルが保存されている感じです。

 最初にシーンを開く場合には、File > Set Project...でフォルダの指定を行うのですが、指示書に書かれていたとしても、この操作は殆んど実行されません。
 なので、起動スクリプトの中で setProjectコマンドを使い指定のフォルダ(上図では "graphics")をプロジェクト設定します。

 そうすると、フォルダ内に workspace.melというファイルが作成されます。
 ファイルの中身は

//Maya 2024 Project Definition

workspace -fr "fluidCache" "cache/nCache/fluid";
workspace -fr "images" "images";
workspace -fr "offlineEdit" "scenes/edits";
workspace -fr "furShadowMap" "renderData/fur/furShadowMap";
workspace -fr "iprImages" "renderData/iprImages";
workspace -fr "renderData" "renderData";
workspace -fr "scripts" "scripts";
workspace -fr "fileCache" "cache/nCache";
workspace -fr "eps" "data";
workspace -fr "shaders" "renderData/shaders";
workspace -fr "3dPaintTextures" "sourceimages/3dPaintTextures";
workspace -fr "translatorData" "data";
workspace -fr "mel" "scripts";
workspace -fr "furFiles" "renderData/fur/furFiles";
workspace -fr "OBJ" "data";
workspace -fr "particles" "cache/particles";
workspace -fr "scene" "scenes";
workspace -fr "mayaLT" "";
workspace -fr "furEqualMap" "renderData/fur/furEqualMap";
workspace -fr "sourceImages" "sourceimages";
workspace -fr "furImages" "renderData/fur/furImages";
workspace -fr "clips" "clips";
workspace -fr "depth" "renderData/depth";
workspace -fr "sceneAssembly" "sceneAssembly";
workspace -fr "teClipExports" "Time Editor/Clip Exports";
workspace -fr "movie" "movies";
workspace -fr "audio" "sound";
workspace -fr "autoSave" "autosave";
workspace -fr "mayaAscii" "scenes";
workspace -fr "move" "data";
workspace -fr "sound" "sound";
workspace -fr "diskCache" "data";
workspace -fr "illustrator" "data";
workspace -fr "mayaBinary" "scenes";
workspace -fr "templates" "assets";
workspace -fr "furAttrMap" "renderData/fur/furAttrMap";
workspace -fr "timeEditor" "Time Editor";

 のようにファイルルールが記述されています。

 けれども、19,31,36行目のようにシーンファイルのパスが指定されているので、シーンを開くためにファイルダイアログを開くと下のような警告が出てきてしまいます。

// Warning: file: C:/Program Files/Autodesk/Maya2024/scripts/others/setWorkingDirectory.mel line 233: D:/prj/graphics/scenes is not a valid directory. Using D:/prj/graphics/ instead.

 これを解消するためには、File > Project Windowを使って編集する必要があります。

 このツールで Edit > Clear Settingsをせずに [Accept]ボタンを押してしまうと、

 と、余計なフォルダが作成されてしまいます。
 全関係者の Mayaでこの操作を行うとなると、なかなか危険な感じです。
 この操作もスクリプト化したい部分。

{
    string $list[] =`workspace -q -frl`;// ルールをリスト化
    if( !`size $list` ) return;
    
    for($e in $list) workspace -rfr $e; // ルールを削除
    
    workspace -u; // 更新
    workspace -s; // 保存
    
}

 workspaceコマンドを使って、リスト化・削除・更新・保存を実行しています。このスクリプトを毎回起動時に走らせることで、全てのルールを除去します。
 「//Maya 20?? Project Definition」しか書かれていないファイルになってしまいますが、悪影響は出ていないので大丈夫でしょう。
 もちろんフォルダ内の workspace.melファイルはバージョン管理ソフトの対象からは外しておきます。

 必要なルールが有る場合には、リスト化後に削除から除外したり、無かった場合には追加するなど処理が必要だと思いますが、削除よりも追加の方が処理は複雑になり易いようです。



0 件のコメント:

コメントを投稿