Maya疑难杂症备忘录 Vol.1

这个系列主要是收集一些Maya中遇到的疑难杂症,
有自己工作中遇到的,有从网上或者博客中看到记录的。
总之当作一个备忘录。

1.打开软件崩溃

双击打开软件,出现一个下面这样的弹窗,Maya就崩溃退出了。

出现这样的情况通常重置用户预设文件夹即可解决:
...\Documents\maya\<版本>\prefs

自己遇到几次这种情况,是因为在Plug-in Manager为某些插件勾选了Auto Load,
如果不勾选它,在打开Maya后再开启这个插件就没有问题,
没有细究过原因,暂时就让制作们手动加载。

还有种情况是因为OpenCL导致的Maya启动崩溃。
解决方法是在Maya.env文件中添加环境变量来禁用它:

1
MAYA_DISABLE_OPENCL = 1

2.打开文件崩溃

(1.)文件里包含了Maya没有加载的插件。
比如一个场景文件中,人物的资产带有RenderMan的材质球。
这样的情况需先开启插件,再打开文件。

(2.)文件里加载了多个且臃肿的引用。
Maya一次性加载这些Reference文件,可能会导致进程卡死崩溃。
通常在打开文件的时候在右侧选项里选择Load no reference,
然后在Maya文件打开后,进入Reference管理器中一一勾选加载资产。

(3.)有些文件默认打开文件的时候,会开启了Hypershade窗口。
一些过多或未使用的材质球也会导致Maya打开文件时的拥挤。
解决方法是找到预设文件:...\Documents\Maya\<版本>\prefs\userPrefs.mel

打开这个文件并通过搜索minorNodeTypesDisplay,修改为:

1
-iv "minorNodeTypesDisplay" 0

修改后重启Maya。

除此之外,当对文件进行open操作会导致崩溃的话,可以尝试import这个文件试试。
导入文件在大多情况是可行的,然后在保存文件之前,最好对文件进行场景优化和清理。

也可以尝试使用最新版本的Maya2022打开文件。

3.进行某项操作崩溃

对于这样的情况非常多,列举几个自己遇到的。

打开Plug-in Manager的时候崩溃,这可能是一些第三方插件导致,
在安装Arnold的时候配置mod文件的时候出现过类似问题,
这里有篇文章记录过:安装新版本Arnold for maya后环境变量被破坏

对一个绑定文件进行位移选择操作的时候崩溃:
打开预设设置,修改求值模式为DG(脏值运算)。

在动画烘培的时候崩溃:
因为Maya在进行烘培的时候会跑一遍时间滑块,对于一些臃肿的文件(帧数长,文件大),
可能在跑到一半的时候Maya就闪退了。可以把主界面显示修改为其它窗口:

这样减少了Maya烘培时候,对图形多余的计算(因为在时间滑块一帧帧播放的时候,图形一直在刷新)。

还有种方法则是使用脚本进行烘培,跳过跑时间滑块的步骤。
在这篇文章也讲过:Maya的效率使用和技巧(一)

4.透视图相机属性值变为了无穷大

在按下f键,对模型在视图局中显示的时候,容易触发这个问题。
通常可能是因为模型过大,损坏的模型,或者打开一些有问题的Maya文件所导致。

暂时修复的话,选择透视图摄像机:
1.执行 Modify - Reset Transformations 操作
2.将下图的数值改为1

需要完全修复它的话,关闭maya,找到预设文件:
...\Documents\Maya\<版本>\prefs\userPrefs.mel
搜索并修改“FitFactor”的数值,为0.01-1.0之间。(一定要带小数点)

5.Maya中看不到位移或选择轴向控制

这里选择了Move Tool但是没有轴向控制显示。

双击Move Tool打开选项窗口,把Tweak Mode勾选去除即可
(或者直接Reset Tool将设置还原为默认值)

可以看到轴向控制正常显示了。

6.文件无法保存

比如在保存文件(保存为ma文件的时候),遇到这样的提示。

因为文件中存在了未知节点,清理后再进行Save即可:


还有些未知情况,保存文件的时候出现一行报错(具体没有截图也没法还原场景)。
尝试在Script Editor输入这行Mel命令,改个名字就可以了:

1
file -rename "newName.ma";

7.在大纲视图选择一个对象后报错

Error: Cannot find procedure "look"

在透视图选择物体没有问题,只有当在Outline视图里选择物体的时候会出现报错。
虽然暂时看来说没什么影响,不过每次报错很烦。
解决它只需要在mel里执行一行命令即可:

1
outlinerEditor -edit -selectCommand "" "outlinerPanel1";

8.”Can’t find procedure xxxx” 报错

诸如这样的报错:

1
2
3
// Error: line 1: Cannot find procedure "onModelChange3dc". //
// Error: line 1: Cannot find procedure "CgAbBlastPanelOptChangeCallback". //
...

之前在智伤帝的博客看到类似的问题,今天自己也遇到了。
关于”CgAbBlastPanelOptChangeCallback”的错误可以参考他的博客:
Maya奇怪的callback报错

而”onModelChange3dc”我在google搜到一篇帖子,执行一个python脚本进行修复:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
needs_fixing = False
try:
expression_str = cmds.getAttr('uiConfigurationScriptNode.before')
fixed_expression_lines = []
for line in expression_str.split('\n'):
if '-editorChanged "onModelChange3dc"' in line:
needs_fixing = True
continue
fixed_expression_lines.append(line)
fixed_expression = '\n'.join(fixed_expression_lines)

if needs_fixing:

cmds.setAttr('uiConfigurationScriptNode.before', fixed_expression, type='string')
except:
pass

帖子链接:https://forums.autodesk.com/t5/maya-animation-and-rigging/onmodelchange3dc-error/td-p/8124149

这样的问题google搜索基本能找到解决方法。

9.Maya窗口丢失

有些情况是因为改变了界面布局,这里重置布局即可:

或者把一些UI元素给隐藏了起来,在这里进行还原:

再者是因为从双屏切换到了单屏,导致一些窗口保留到了另一个屏幕。
我自己经常遇到这样的情况,后来在劲爆羊的博客里翻到了一个方法。
参考来自:http://blog.sina.com.cn/s/blog_4413e58d0102x5rp.html
大致意思是把所有窗口给移到指定的位置,用这个python脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pymel.core as pmc
try:
from PySide.QtGui import QApplication#(2015-2016)
except:
from PySide2.QtWidgets import QApplication#(2017-2018)

for one in QApplication.topLevelWidgets():
try:
one.move(100,100)
except:
pass

for one in pmc.lsUI(type='window'):
try:
one.setTopLeftCorner((100,100))
except:
pass

10.渲染层切换的时候报错

来自Adu的博客:https://www.aducg.com/2015/03/23/maya-renderlayer-batch-rendering-errors/

Error: Cannot switch from 'bottle' to 'defaultRenderLayer1' because of an override to a missing node within a referenced scene

之前遇到类似的报错,是因为在渲染层里把一些Reference资产给remove掉了,
导致渲染层丢失了这个节点,在切换到默认渲染层的时候出现报错,且无法切换回去。
博客里有一个解决方法,一行mel命令:

1
fixRenderLayerOutAdjustmentErrors;

有时候它可以解决问题,但有时候又没有效果。

后来问了同事,打开Node Editor找到defaultRenderLayer的节点,
断开那条爆红(或者好像是有个警告的标志)的Input连接即可。
(这里没有图,也没法还原当时的场景,就是提供这个思路)