目次

  1. プロジェクトの環境設定
  2. プロジェクト一覧
  3. プロジェクトディレクトリ
  4. project.xml
      1. application
  5. 最もシンプルなproject.xml
  6. より複雑なproject.xml
    1. drive mapping
    2. logical path mapping
    3. name mapping
  7. プロジェクトの派生

プロジェクトの環境設定

JCGS Launcherからアプリケーションを起動することでプロジェクトの環境が設定されてアプリケーションが立ち上がる

プロジェクト一覧

JCGS Launcherは、設定ファイルに書かれているディレクトリを全て走査して、その中にあるプロジェクト一覧を表示する

プロジェクトディレクトリ

プロジェクトディレクトリの構成は以下のとおり

+Project_Base
  +baseProject
  | +conf
  |  +project.xml
  +projectA
  | +conf
  |   +project.xml
  +projectB
    +conf
     +project.xml

conf/project.xml にプロジェクトの設定を記述する

project.xml

<?xml version="1.0" encoding="UTF-8" ?>
<projectInfo>
  <name value="inheritedProject" />
  <inherits value="baseProject" />
  <fps value="24" />
  <pathMapping type="logical" logicalPath="/" physicalPath="W:\" />
  <application>
    <python>
      <version version="2.5" arch="x86" os="win">
        <version name="Qt" version="4.5.3" arch="x86" />
        <environ name="PYTHONVERSION" set="Python25_x86" />
        <environ name="JCGSPYTHONLIBDIR" set="%JCGSLIBDIR%\python\25" />
      </version>
    </python>
    <maya defaultVersion="2011" defaultArch="amd64">
      <version version="2009" arch="amd64" os="win">
        <version name="python" version="2.5" arch="amd64" />
        <environ name="PYTHONPATH" prepend="%JCGSLIBDIR%\maya\modules\2009\win\amd64\python\Lib" />
      </version>
    </maya>
  </application>
</projectInfo>

projectInfo プロジェクト全体の情報を記述する。inherits 項で、プロジェクト設定の派生元を指定できる。 これにより、元プロジェクトからの差分のみ記述することでプロジェクトを定義できる。

application

アプリケーション毎の設定内容を記述する。application タグ以下にアプリケーション名、その中の version ブロックで各バージョンの設定、更にその中で実際に設定する値を指定する。この中で指定できるタグは以下の通り

version ブロックで version/arch/os いずれかのパラメータが設定されていない場合、全ての version/arch/os で設定が有効になる。例を上げる。

    <maya defaultVersion="2011" defaultArch="amd64">
      <version arch="amd64" os="win">
        <environ name="FOO" prepend="C:\path\for\amd64\win" />
      </version>
      <version version="2009" arch="x86" os="win">
        <environ name="FOO" prepend="C:\path\for\2009\x86\win" />
      </version>
      <version version="2009" arch="amd64" os="win">
        <environ name="FOO" prepend="C:\path\for\2009\amd64\win" />
      </version>
    </maya>

このような例の場合、 Maya 2009 64bit を起動すると環境変数 FOO は以下のようになる

FOO=C:\path\for\2009\amd64\win;C:\path\for\amd64\win

対して、Maya 2009 32bit の場合はこのようになる

FOO=C:\path\for\2009\x86\win

また、 Maya 2011 64bit の場合はこのようになる

FOO=C:\path\for\amd64\win

これらの設定は派生元→派生先プロジェクトの順に、同じプロジェクト内であれば上から順に評価されていくため、prepend を使用すると最後に指定したものが先頭に来るようになる。

最もシンプルなproject.xml

全てのプロジェクトは baseProject をベースに、必要な部分をカスタマイズして設定を行う。このカスタマイズはプロジェクトディレクトリ直下の conf/project.xml に記述する。最もシンプルな project.xml の例を上げる。

<?xml version="1.0" encoding="UTF-8" ?>
<projectInfo>
  <name value="inheritedProject" />
  <inherits value="baseProject" />
  <pathMapping type="logical" logicalPath="/" physicalPath="W:\" />
</projectInfo>

この設定では、プロジェクト名を "inheritedProject" 、設定の派生元を "baseProject" としていて、ほとんどの設定はそれを参照する。 ただし、唯一実データの置き場だけを "W:\" に設定している。この設定で注意しなければいけない点が一つある。論理パスを指定する際、 末尾の "/" と "\" は必ず対応関係にある必要がある。

<pathMapping type="logical" logicalPath="/" physicalPath="W:\" /> <!-- 末尾に"/"がついているので、physicalPathにも"\"をつける -->
<pathMapping type="logical" logicalPath="/mocap" physicalPath="M:\mocap" /> <!-- 末尾に"/"がついていないので、physicalPathにも"\"をつけない -->

末尾に "\" をつける必要があるケースは logicalPath="/" の場合のみである。それ以外は logicalPath の末尾に "/" を含めてはいけない

Path Mapping についての詳細なドキュメントは こちらにある。

より複雑なproject.xml

次に、より複雑な設定例を示す。通常はここまで設定をする必要はなく、むしろトラブルの元になるのでやるべきではない。

<?xml version="1.0" encoding="UTF-8" ?><projectInfo>
  <name value="inheritedProject" />
  <inherits value="baseProject" />

  <!-- drive mapping -->
  <mapDrive uncPath="\\nas01\PJ\inheritedProject" drive="W:" />
  <mapDrive uncPath="\\nas01\MoCap\inheritedProject" drive="M:" />

  <!-- map by logical Path -->
  <pathMapping type="logical" logicalPath="/" physicalPath="W:\" />
  <pathMapping type="logical" logicalPath="/mocap" physicalPath="M:\mocap" />

  <!-- map by name -->
  <pathMapping type="name" name="projectRoot" srcPath="W:\" mappedPath="V:\" />
  <pathMapping type="name" name="imageRoot"   srcPath="W:\" mappedPath="\\nas01\imageRoot\" />
  <pathMapping type="name" name="work"   srcPath="W:\" mappedPath="C:\temp\" />
</projectInfo>

drive mapping

<mapDrive uncPath="\\nas01\PJ\inheritedProject" drive="W:" />

ネットワークパスを Windows のネットワークドライブとしてマウントするための設定である(現状では設定項目はあるが実装していない)。 この設定があると、プロジェクトが開始するときに自動的に指定したドライブにマウントする。この機能を使用するとドライブレターが被るプロジェクトを 複数同時に作業ができなくなってしまうので、使うべきではない

logical path mapping

<pathMapping type="logical" logicalPath="/" physicalPath="W:\" />
<pathMapping type="logical" logicalPath="/mocap" physicalPath="M:\mocap" />

logical path と実際のパスの変換を行う設定である。この場合、プロジェクトのデータ(assets や shots)は W: 直下に 配置されるが、 mocap 関連のデータは M:\mocap 以下に配置される。

name mapping

name mapping は少々特殊なパスの扱いを可能にする。

<pathMapping type="name" name="imageRoot" srcPath="W:\" mappedPath="\\nas01\imageRoot\" />

プロジェクトで別に定義するディレクトリ構成の設定(directory.xml)と連携して動作をおこなう。 directory.xml 中のオプションとして option="pathMapping:imageRoot" が指定されているノードのみに対して この変換を行う。これにより、レンダリングした画像だけといった、特定のデータだけ別のサーバーに格納することができる。

特に他の設定がない場合、このノード以下は全て変換されたパス上に格納される。 logical path mapping が ディレクトリに対して縦方向のマッピングだとすると、 name mapping は横方向のマッピングと言える。

プロジェクトの派生

最初にあげた最もシンプルな project.xml の例でもプロジェクトは稼動し、 JCGS Launcher でツールを立ち上げれば必要な環境が整う。 これを可能にしているのがプロジェクトの派生である。この派生は少々複雑だが、 JCGS のプロジェクト情報管理の要となっている機能である。 プロジェクトの派生を使うことで、あるプロジェクトで設定された情報を他のプロジェクトで流用し、かつ必要な部分だけ上書くということができる。

ProjectInheritance.png

図の例で言えば baseProject, companyBase, projectA, projectB という 4 つのプロジェクトが存在している。

JCGSとしては各社このようなプロジェクト構成を推奨する。baseProject では全社共通の、JCGS Tool 標準の設定を行う。 これには Maya や 3ds max、Python や PyQt を動作させるための環境変数の設定などが含まれる。

companyBase では、baseProject の設定を引き継ぎつつ各社独自の設定を記述する。例えばメールサーバーのアドレスや 社内独自プラグインへのパス、社内ルールに則ったファイルの命名規則などである。

projectA や projectB は、プロジェクト毎の設定をおこなう。プロジェクトルートのパスや各種 Path Mapping の設定である。