我为playblast创建脚本。我需要一些在我的视频像用户和场景名称,fps和当前帧的HUD数据。。。在
首先我尝试一下由headsUpDisplay()
创建的HUD很好,但是没有背景。。。我改变了HUD标签的颜色,但有时没有背景就看不清了。在
cmds.headsUpDisplay('HUDObjectSceneName', label='label TEXT',
section=2, block=0, blockSize='large',
dfs='large', labelFontSize='large')
其次,我尝试使用由hudButton()
创建的HUD按钮-它们有背景。但我的标签之一是“当前时间”。headsUpDisplay()
具有刷新和更改标签文本的“命令”。但是hudButton()
没有这个功能。在
hudButton()
有第二个问题-按钮的宽度是手动设置的。当我想要长标签时,我需要计算标签宽度。但HUD字体是不固定的,我不知道如何正确计算标签宽度的像素。经过一些实验,我创建了这个函数来计算宽度。这很粗糙,但至少是这样:
def blockLen(label):
FONT_WIDTH = 8
THIN_WIDTH = 6
BLOCK_ADD = 10
thin_symbol = ' :,.!i[];:\'"|-'
sum = BLOCK_ADD
for x in label:
sum += THIN_WIDTH if x in thin_symbol else FONT_WIDTH
return sum
我需要与背景和动态数据像一个当前帧的HUD标签。但我找不到另一种方法如何创造它?在
当时间改变时,我尝试使用scriptJob()
来更改HUD按钮标签。但它不适用于playblast。。。在
问题的一部分我决定了。我不知道如何直接更新按钮。我创建
headsUpDisplay()
没有标签-他可以更新。我强迫他改了我的hudButton()
上的文字但我的第二个问题没有解决。我无法以像素计算文本大小。正确的解决方案是从Maya中获取用于HUD的字体。然后我可以用wx库计算字体名的文本宽度。。。在
但是如何从Maya获取字体数据(名称、大小和装饰)?在
对于你的第二个问题: 我可以找到所需的字体数据(只有名称,大小),但它并不真正准确(更多的黑客攻击,不需要投票),如果你改变了视口渲染器2.0及以上 更改字体大小时,会出现错误(默认渲染器上也不会):
所以使用的字体是helveticabold并且大小是相对的(您拥有输入或默认值,如
cmds.optionVar(q="defaultFontSize")
)播放动画时不执行脚本作业。如果您确实需要在回放期间更新hud,您可以从表达式内部触发更新。不幸的是,你得从梅尔那里打电话过来。并且尽可能的轻,这将减慢任何人观看动画的交互式播放速度。在
您可能希望在播放预览之前动态创建表达式,然后在播放预览之后立即将其删除,这样就不会让它到处乱放而影响动画制作者。在
您还可以通过创建一个设置为适当颜色的图像平面来摆脱使用HUD按钮的麻烦。在
相关问题 更多 >
编程相关推荐