对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崩溃(尤其在渲染环节)。
图1:使用uiDrawManager绘制出的二维图形,可调参数非常多。
第二种,用Maya拍屏拍出不含任何HUD信息的序列帧,然后在序列帧上使用第三方绘图工具后台绘制信息,再把序列图合成视频。通常都是使用ffmpeg.exe进行信息的绘制以及序列的合成,非常方便。用过羊大插件的同学都知道羊大写过一个拍屏插件Maya拍屏王,大概就是使用这个方法:https://mp.weixin.qq.com/s/I9X-9q2DrE4Er46CefC0Jw
羊大威武!
但是羊大没给咱开源,咱也不能做自定义二次开发。而且HUD信息的位置、字体等都是固定的,还有无法隐藏的黑框。
第三种方法:我还不知道,希望各位大大们给我指点指点…
==========开始分割==============
那还有别的好的工具吗?其实使用前两种方法我都开发过相应的工具,最近在开发的就是使用第二种方法开发的。下面本菜鸟开始班门弄斧了。。。
先启动插件看看长啥样把:
第一个界面是拍屏界面,左侧是摄像机视窗,右侧是拍屏设置。可以在左侧进行显示设置,需要拍哪些物体,也可以设置Resolution gate等等。
第二个界面就是HUD设计界面,我管它叫“HUD designer”,这里可以进行HUD的内容、位置、字体、颜色、透明度、背景板等等设置。这里的HUD信息可能是不准确的,只起到设计作用。
可以针对每个项目、每个部门采用不同的设置,所有的这些设置(包括拍屏基本设置和HUD设置)都可以通过左上角的settings菜单进行保存(默认保存路径在我的文档中)或导出(任意路径)给他人共享。
看看拍出来的样子:
还有带有背景板的:
基本实现了HUD的完全自定义化。目前还在优化代码。代码写的太丑不敢直接放出来,现在放在github,想来把玩的话微信关注这个号(DanggooTD),后台回复“拍屏工具”吧,我会提供git地址。