对Maya自带的拍屏的诟病由来已久:HUD的可调参数太少,字体太少,字号太小,没有背景板容易看不清,支持的编码也很少…所以很多公司都针对生产专门开发了属于自己的拍屏插件。虽然编码上可以忍受,但是绝大多数都摆脱不了使用Maya自带的HUD的困扰。
那有摆脱Maya自带HUD、自己创建HUD的方法吗?Of course.下面我介绍两种方法:
第一种,在Maya视窗里自己绘制二维图形。Maya API提供了这样的绘制方法,有兴趣的话可以研究一下OpenMayaUI部分,创建MPxLocatorNode节点,继承MPxDrawOverride来进行绘图。官方恰好提供了这样的示例,有兴趣的话请去Maya开发人员帮助中去找:pyUiDrawManager.py或者uiDrawManager.cpp(需要编译),可以直接用,有很多参数可以调。我曾经用过此种方式绘HUD,可能当时水平太低(虽然现在也不咋高),虽然解决了HUD字体等的问题,但是只能在viewport 2.0渲染器下面才能被渲染出来,也产生了占用渲染资源、加载速度慢(viewport 2.0 processing…)等等诸多问题,尤其是在专业显卡(例如丽台系列显卡)上加载尤慢,而且自己创建的该节点不可避免地要用到表达式getAttr和setAttr,这两个方法极易导致在Parallel求值模式下的Maya崩溃(尤其在渲染环节)。