V-Ray for Mayaをサーバーに配置して任意に切り替えて使う方法(.env + .bat)

#やりたいこと
1. 実行ファイルインストールではなく手動配置でのV-Rayプラグインロード
2. .batを利用したV-Rayプラグインの参照先指定
3. Maya.envを利用したV-Rayプラグインの参照先指定
4. V-Rayライセンスの参照先の一括変更

# やりたかった理由
V-Rayはひとつのプラットフォームバージョンに1つのバージョンしかインストールすることができません。
同名のモジュールやDLLファイルで内部的にバージョンが違うといったことなので致し方ない部分はあります。

ただ、大量のレンダーノードを所有している場合に全台の再インストールはサイレントインストールが対応していたとしても、めっちゃ大変です。しんじゃいます。

そこで、外部にV-Rayのプラグインを配置し、それをロードさせる方式にすることで再インストールの手間を大幅に削減することが可能です。

またライセンスサーバーへのアクセスも一括で変更することができます。
とっても楽チンです。

円滑にバージョン比較を行いながらの検証を行うべく、やってみました。

実際今回の方法的には非常に簡単にできました。

#1. 実行ファイルインストールではなく手動配置でのV-Rayプラグインロード
V-Rayにははじめから手動プラグインの方法が用意されています。

これは通常パッケージに存在する「vray_adv_34001_maya2016_x64.exe」ではなく「vray_adv_34001_maya2016_x64.zip」で展開されるフォルダ群を適切に配置する方法です。

通常手順であれば[開発元ChaosGroup社の英語ドキュメント](https://docs.chaosgroup.com/display/VRAY3MAYA/Installation+of+V-Ray+for+Maya+from+a+.zip+File)または国内代理店である[株式会社オーク](http://www.oakcorp.net/)から提供されているオンラインドキュメントで日本語解説されていますので、そちらを参考にしてみてください。
※日本語ドキュメントは国内であれば購入時にメールで連絡されているはずです。

公式のサイト内では以下の様に環境変数に設定することが解説されております。

```bash:システム環境変数(例)
MAYA_RENDER_DESC_PATH = D:\vray_builds\vray_adv_30501_maya2015_x64\maya_root\bin\rendererDesc
```

ChaosGroupまたはOAKのドキュメントを例にシステム環境変数に書き込みます。


#2. .batを利用したV-Rayプラグインの参照先指定
前述1の方法では個々のマシンの環境変数に書き込むため、マスターのパスが決まっていれば良いのですが、複数のバージョンを起動することができせん。

そのため英語・日本語UIの切り替えの様にバッチファイルで任意のシステム環境変数を切り替えるバッチファイルを作成してあげることで対応しました。

今回は以下のパスに「**vray_builds**」を配置しました。

```bat:配置先(自環境としてはネットワークドライブをZドライブとしてマウントしています。)
Z:\vray\vray_builds\
```

```bat:V-Rayの手動配置フォルダーも元のフォルダと重複しないように、以下のような形にフォルダー名を編集しています。
~\vray_adv_34001_maya2016_x64\~
↓
~\maya2016_34001\~
```

このパスを参考に以下の用に任意に配置した手動配置フォルダのファイルパスに環境変数がセットされる起動用のバッチファイルを作成しました。

```bat:maya2016_34001.bat
SET VRAY_FOR_MAYA2016_MAIN_x64=Z:\vray\vray_builds\maya2016_34001\maya_vray
SET VRAY_FOR_MAYA2016_PLUGINS_x64=Z:\vray\vray_builds\maya2016_34001\maya_vray\vrayplugins
SET VRAY_AUTH_CLIENT_FILE_PATH=Z:\vray\vray_builds\vrlclient
SET PATH=%PATH%;Z:\vray\vray_builds\maya2016_34001\maya_root\bin
SET MAYA_PLUG_IN_PATH=Z:\vray\vray_builds\maya2016_34001\maya_vray\plug-ins
SET MAYA_SCRIPT_PATH=Z:\vray\vray_builds\maya2016_34001\maya_vray\scripts
SET XBMLANGPATH=Z:\vray\vray_builds\maya2016_34001\maya_vray\icons
SET PYTHONPATH=Z:\vray\vray_builds\maya2016_34001\maya_vray\scripts
"C:\Program Files\Autodesk\Maya2016\bin\maya.exe"
```

ここで注意スべき点としてはプラグインを起動するMayaのバージョンで環境変数のバージョン部分も編集する必要があることです。

上記ではMaya2016用の内容ですが、Maya2015であれば以下のようになります。

```bat:maya2015_34001.bat
SET VRAY_FOR_MAYA2015_MAIN_x64=Z:\vray\vray_builds\maya2015_34001\maya_vray
SET VRAY_FOR_MAYA2015_PLUGINS_x64=Z:\vray\vray_builds\maya2015_34001\maya_vray\vrayplugins
SET VRAY_AUTH_CLIENT_FILE_PATH=Z:\vray\vray_builds\vrlclient
SET PATH=%PATH%;Z:\vray\vray_builds\maya2016_34001\maya_root\bin
SET MAYA_PLUG_IN_PATH=Z:\vray\vray_builds\maya2015_34001\maya_vray\plug-ins
SET MAYA_SCRIPT_PATH=Z:\vray\vray_builds\maya2015_34001\maya_vray\scripts
SET XBMLANGPATH=Z:\vray\vray_builds\maya2015_34001\maya_vray\icons
SET PYTHONPATH=Z:\vray\vray_builds\maya2015_34001\maya_vray\scripts
"C:\Program Files\Autodesk\Maya2015\bin\maya.exe"
```

#3. Maya.envを利用したV-Rayプラグインの参照先指定

上記の方法だとレンダーノードの場合はバッチ経由での起動を選択しなければなりません。

ディスパッチャーを利用していればバッチの実行コマンドに差し込んでしまえば問題無いかと思いますが、念のためMaya.envを書き換えて環境として読み込む場合の内容も紹介します。

[開発元ChaosGroup社の英語ドキュメント](https://docs.chaosgroup.com/display/VRAY3MAYA/Installation+of+V-Ray+for+Maya+from+a+.zip+File)で提供されている**Maya.env**を整理してみました。

上記でも見たシステム環境変数が記載されていますので、こちらのイコールの後に先ほどと同じパスを指定してあげることで対応可能です。

```bat:Maya.env
VRAY_FOR_MAYA2016_MAIN_x64 = 
VRAY_FOR_MAYA2016_PLUGINS_x64 = 
VRAY_AUTH_CLIENT_FILE_PATH = 
PATH = 
MAYA_PLUG_IN_PATH = 
MAYA_SCRIPT_PATH = 
XBMLANGPATH = 
PYTHONPATH = 
```

#4. V-Rayライセンスの参照先の一括変更
さて通常インストールでは「Change License Settings」というプログラムからライセンスファイルを書き換えます。
しかし自動実行型のインストールを行わないのでそれもインストールされませんし、どこから参照するの？となります。

バッチファイル又はMaya.envで記述している以下の文でライセンス参照先を決定するXMLファイルを指定しています。

```bat:Maya.env又はバッチファイル
VRAY_AUTH_CLIENT_FILE_PATH=Z:\vray\vray_builds\vrlclient
```

中身としてはこのようなxmlファイルです。

```xml:vrlclient.xml
<VRLClient>
	<LicServer>
		<Host>127.0.0.1</Host>
		<Port>30304</Port>
		<Host1></Host1>
		<Port1>30304</Port1>
		<Host2></Host2>
		<Port2>30304</Port2>
		<!Proxy></!Proxy>
		<!ProxyPort>0</!ProxyPort>
		<User></User>
		<Pass></Pass>
	</LicServer>
</VRLClient>
```

こちらを先のファイルパスに配置して上げて<Host>にライセンスサーバーにしているIPやホスト名を入れれば今回の方法で参照する場合でのライセンス参照が可能になります。

#【おまけ】DRレンダー用のV-Rayをサーバーモードで起動するバッチ
V-Rayには便利なディストリビューションレンダリングという1フレームを複数台で分散レンダリングする機能があります。
設定方法自体は各種マニュアルを参照いただきたく思いますが、今回の方法だとサービスとして実行するSpawnerがインストールされません。

DR用のプログラムはインストールされる**vray.exe**をコマンドプロンプトなどで「**-server**」として実行すれば利用可能です。
そこで以下の様なバッチファイルを用意しました。

```bat:VRayDR_Starter.bat
Z:\vray\vray_builds\maya2016_31001\maya_vray\bin\vray.exe -server
```

これをDR用のノードで実行して上げる事で、DRの受けの準備は整ったので後はマニュアルにそってDRの設定をしてあげてください。