maya_eyecatch

MARCH 17, 2017

絶対パスの書き換えを自動で行う!社内向けのmayaツールを公開『CrMayaPassFix1.0』

はじめに

はじめまして。植松俊介です。
私はクリーチャーズ開発2部でゲーム開発の3Dアセットのデザイナーを担当しております。
これからこのクリーチャーズガレージで、ゲーム開発用の技術情報などをコラム形式で紹介していきます。
社内のゲーム開発中に使うツールやTipsなどを公開していくことで、社内以外の多くの人にも役立てて欲しいと考えています。

さて、今回ですが Autodesk maya 用のインハウスツールを公開したいと思います。
これはmayaの絶対パスの書き換えを簡単に行うツールです。
本ツールを使用すると、mayaのプロジェクトフォルダを別の場所に移動・コピーしても、テクスチャとリファレンスファイルのパスを、すぐに新しい場所に変更する事ができます。
このツールは、同じくゲーム開発部署のプログラマーが開発しております。

このツールができること

指定プロジェクト内の.mbが参照するリファレンスとテクスチャのパスを修正してくれます。
書き換えの対象は「scenes」フォルダ直下の.mbです。
リファレンスパスは「scenes」フォルダ直下の.mbへのパスが対象です。
テクスチャパス は「sourceimages」に入っているテクスチャが対象となっており、サブフォルダも含まれます。

ツールの入手と使い方

  1. 上記のダウンロードボタンより圧縮ファイルをダウンロードします。
  2. 圧縮ファイルを解凍して、フォルダを好きな場所に置きます。
  3. app.iniでmayaのバーションを指定してください。デフォルトでは2015です。
  4. パスのリネームをしたいプロジェクトフォルダをCrMayaPassFix.exeにドラッグすると書き換えが始まります。
  5. テクスチャパスとリファレンスパスが、ドラッグしたフォルダに修正されます。

※プロジェクトフォルダ名をリネームしていても問題ありません。
※mb名をリネームしていても問題ありませんが、リファレンスパスは元のmb名のままです。したがってリファレンスされている.mb名はリネームできません。

その他の注意事項

  • .maは対象外です。
  • プロジェクトフォルダ外のファイルパスは修正されません。
  • 変更後の.maを残したい場合、app.iniのNOTERASEMAをNOからYESに書き換えてください。
  • app.iniへのバージョン記載ですが、extensionの場合、「_5」を入れる必要があります。(mayaのバージョンにより異なります。mayaのインストールパスが20xx.5の場合のみ必要です。)
  • mayaのバージョンの指定がmbと異なる場合は機能しません。.mbを作成したバージョンを指定して下さい。

mayaのユーザーであれば非常に便利なツールではないかと思います。
ぜひ、多くの方に役立てて頂ければ幸いです。

ところで、ツール紹介を読んではみたけれど「何のためにパスの書き換えが必要になるのかがわからない」という方もいらっしゃるかと思います。
そこで、本ツールがどんな目的で開発されたのか?というところをこれから詳しく解説していきたいと思います。
それが、このツールの本懐でもある「mayaの絶対パス問題」の解消です。

mayaにおける絶対パス問題

mayaを使用する際に、多くの人が煩わしいと感じているのが「パス」の存在だと思います。
mayaはファイルにリンクする他のファイルを「絶対パス」で記録しています。
ただし「相対パス」という機能もあるために、プロジェクトフォルダを別のディレクトリに移動しても、「セットプロジェクト」すればテクスチャやリファレンスファイルが参照できなくなることはありません。

多くの人が、データのコピーや移動を行った際には、相対パス機能を使用しているのではないでしょうか?

例として下記のようなプロジェクトがあるとしましょう。

「Ant」というフォルダがプロジェクトフォルダです。
“AntModel.mb”は、”T_01.tga“をテクスチャとして参照しています。
さらに、“AntMotion.mb“は、”AntModel.mb“をリファレンスして参照しています。

image1

下記は”AntModel.mb”内部の”T_01.tga”テクスチャのパスです。

setAttr “.ftn” -type “string” “C:/oldPass/Ant//sourceimages/T_01.tga”;

上記のようにテクスチャのパスは 「C:/」から始まっています。

これを「絶対パス」と呼んでいます。
さて、よく見るとパスの中に 「//」という部分があるのがわかります。

これが「相対パス」です。

相対パスは絶対パスと別に扱われているわけではなく、絶対パスの中でプロジェクトセットされた場所を「/から//」として記録しています。
この場合は「Ant」フォルダをプロジェクトセットしている、ということが分かります。
このお陰でAntフォルダを別の場所にコピーしても、「Ant」フォルダをセットプロジェクトすることで、リンクが切れることが無くなるわけです。

しかし、「絶対パス」が移動先のパスに上書きされる事はありません。

また、セットプロジェクトをしないでファイルを読んだ時には、mayaは「絶対パス」のファイルを参照しようとします。

これにより下記のような問題が出てきます。

  • 絶対パスの参照先にすでにファイルがない場合、テクスチャなどは読み込みエラーとなる。
  • 逆にコピー元の参照先にファイルが残っている場合、古いテクスチャを参照している事となり、混乱してしまう。

また、もともとセットプロジェクトをしていないで作成されたデータの場合は、「//」が存在しないため、常に絶対パスが参照されます。
上記の問題と同じように、コピー先の「/sourceimages/T_01.tga」を読み込むことができません。

mayaの相対パスには、もう1つ注意すべき点があります。
たとえセットプロジェクトされていても、相対パスより絶対パスの参照が優先されるという点です。
テクスチャ等の参照が相対パスで行われるためには、コピー元の「C:/oldPass/Ant」が削除されていなくてはいけないのです。

したがって、ミスをなるべく防ぎたい場合は、プロジェクトフォルダの移動・コピー、またはリネームの際に、必要なパスを新しいディレクトリのパスに修正する必要が出てきます。
しかし.mbがたくさん存在する場合、手動でmayaから1つ1つの.mbを開いて、パスの変更をするのは時間がかかります。
そこでmayabatchを利用して、全ての .mbを一度 .maに変換し、パスを書き換えを行ったあと .mbに変換する、というところまでを簡単にできるようにしたのが今回のツールです。


いかがだったでしょうか?
この連載では、これからも様々な3DCGにおける技術Tipsなどを掲載していきますので、お楽しみに!

免責事項

  • 本サイトが提供しているコンテンツについては、特に断りのある場合を除き、株式会社クリーチャーズ(以下、クリーチャーズ)が著作権を有します。
  • 本連載が提供するツールや情報は、個人・法人・商用・非商用を問わずに無償で使用できますが、その完全性を保証するものではありません。
  • 本連載で提供するツールは、基本的に複製・配布・改変することができますが、プログラムの悪用・悪意あるプログラムへの改変は禁止します。
  • 2次配布の際に著作権料や使用料を請求することを禁止します。
  • ソフトウエアを使用・改変して発生するあらゆる損害(金銭的損害・物理的損害・ほかのプログラムが動作しなくなる等)のリスクや責任はすべて利用者が負担し、クリーチャーズは一切の責任を負いません。

PAGE TOP