【发布时间】:2016-12-22 02:54:35
【问题描述】:
我为播放预览创建脚本。我的视频需要一些 HUD 数据,例如用户和场景名称、fps 和当前帧...
首先我尝试headsUpDisplay()创建的HUD很好,但没有背景...我改变了HUD标签的颜色,但有时它们在没有背景的情况下无法阅读。
cmds.headsUpDisplay('HUDObjectSceneName', label='label TEXT',
section=2, block=0, blockSize='large',
dfs='large', labelFontSize='large')
其次,我尝试使用由hudButton() 创建的 HUD 按钮 - 它们有背景。但我的标签之一 - 是当前时间。 headsUpDisplay() 有“命令”来刷新和更改标签文本。但是hudButton() 没有这个功能。
label = 'FPS: 25 FRAME:'
cmds.hudButton('HUDHelloButton3', s=9, b=0, vis=1, l=label,
bw=blockLen(label), lfs='large')
cmds.headsUpDisplay('HUDCurentFrame', label=label,
section=9, block=0, blockSize='large', dfs='large',
labelFontSize='large', atr=True,
command=lambda: cmds.currentTime(query=True))
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 标签。但我找不到另一种方法来创建它?
ps。我尝试在时间更改时使用scriptJob() 更改HUD 按钮标签。但它不适用于播放预览...
【问题讨论】: