安装Arnold后环境变量被破坏

前言

今天在安装新版本Arnold 4.1.0 for maya后,
打开maya发现一堆报错,其中还有不少乱码字符。

一看就知道是Arnold配置失败了,果不其然打开Plug-in Manager,
Maya直接就崩掉了。

好奇这一堆乱码是怎么来的,安装的路径也没有中文字符啊。
接下来就开始一步步排查。
(节省时间的话可以直接看最后总结)

尝试解决

遇到奇怪的问题,第一个就想到的是重新安装。(把官方的安装文档又仔细看了一遍)
官方安装文档:
https://docs.arnoldrenderer.com/display/A5AFMUG/Installing+Arnold+for+Maya+on+Windows

因为我需要将插件安装到网络路径上,所以是用的手动安装。

安装的步骤很简单,在点击安装程序后,取消勾选Configure MatoA for Maya。

安装的路径输入的是网络路径,比如 \server\arnold\mtoa\2017

然后在安装后去修改\server\arnold\mtoa\2017路径下的 mtoa.mod 文件。
修改为如下所示 (其实安装后,这里它会自动修改为安装时候输入的路径)

1
2
+ mtoa any \\server\arnold\mtoa\2017
PATH +:= bin

然后将这个路径\\server\arnold\mtoa\2017加入到
MAYA_MODULE_PATHMAYA_RENDER_DESC_PATH环境变量中。

MAYA_MODULE_PATH是为了让maya能找到该插件的mod文件的位置。
MAYA_RENDER_DESC_PATH是为了maya在使用arnold批量渲染的时候,
能找到arnoldRenderer.xml 这个文件。

安装完成后打开maya,发现问题依然存在。
报错的信息里出现了一些奇怪的乱码。
于是我查看了下maya里的PYTHONPATH。

1
2
3
import os
for i in os.environ['PYTHONPATH'].split(';'):
print i

结果发现环境路径全被奇怪的乱码破坏了。
怪不得一打开Plug-in Manager软件就直接崩掉。

最早怀疑配置文件里路径反斜杆的原因,导致出现乱码,
于是把\替换成/,结果依旧。

后来尝试不使用网络直接在本地安装,结果是正常可以使用的。
本地安装不用手动去设置上述的两个环境变量,
所以问题应该是出在环境变量的设置中

在排查的过程中Google翻到一篇帖子,帖子的提问者也遇到了同样的问题。

回答里说MAYA_MODULE_PATH里的路径中,不能存在exe等二进制的文件。
所以问题现在就比较清晰了,可以看到Arnold的插件目录下,
有两个exe文件和mod文件在同一个路径。

于是我在这个目录中新建了一个文件夹,名为mod,
并将mtoa.mod文件拷贝到mod文件夹中,将其单独隔离起来。
然后设置MAYA_MODULE_PATH环境变量为这个mod文件夹。
果然到这里问题就迎刃而解了。

总结

在设置环境变量的时候,变量MAYA_MODULE_PATH目录下不能存在二进制文件。
maya奇怪的机制会去搜索给予路径下所有文件,并进行读取。
(按理说应该只过滤 *.mod格式的文件)
最好的解决方法是把所有的mod文件放在统一位置进行隔离配置。