前情提要:houdini20面世后,体验非常糟糕的就是动不动资产显示不更新了。官方提供重置视窗命令,但设置好的拍屏参数及视窗设置也都会被重置,也就是解决了一个问题又带了一个问题。
所以写个脚本优化一下,大概思路也就是重置视窗,然后把旧视窗的设置再给还原上。
写之前,需要先了解一些houdini视窗的基本概念。
tab 面板,这个好理解,我们经常用到SceneView(视图显示窗口),RenderView(渲染窗口),NetworkView(节点编辑面板),Parameters(属性面板)
pane 可以理解成承载摆放这些窗口面板的布局容器,类似于盖房子的地
开始编写,第一步要获取当前使用的tab
hou.ui.currentPaneTabs()
获取tab的类型
tab.type()
打印出来看看
py
# 获取当前使用的tab
cur_tabs = hou.ui.currentPaneTabs()
# 过滤出SceneView类型的tab
for tab in cur_tabs:
print(tab.type())
# Result:[paneTabType.SceneViewer,paneTabType.Parm,paneTabType.NetworkEditor]
进行过滤
py
# 过滤出SceneView类型的tab
for tab in cur_tabs:
if tab.type() != hou.paneTabType.SceneViewer:
continue
新建SceneView面板,这里面板要新建在pane对象上,
tab.pane().createTab(hou.paneTabType.SceneViewer)
拍屏数据获取,这里也需要对拍屏数据结构有清晰的理解,通过帮助文档理解数据结构
stash函数是克隆副本
tab.flipbookSettings().stash()
这里可以很方便的拷贝过去,不用一个一个属性设置
new_tab.flipbookSettings().copy()
对SceneView面板上的其他设置进行恢复
py
# 过滤出SceneView类型的tab
for tab in cur_tabs:
if tab.type() != hou.paneTabType.SceneViewer:
continue
new_tab = tab.pane().createTab(hou.paneTabType.SceneViewer)
fb_settings = tab.flipbookSettings().stash()
new_tab.flipbookSettings().copy()
new_tab.setPin(tab.isPin())
new_tab.setLinkGroup(tab.linkGroup())
新建的SceneView左侧toolbar会默认折叠,为了展开它找了半天函数
new_tab.showSelectionBar(True)
py
# 获取当前使用的tab
cur_tabs = hou.ui.currentPaneTabs()
# 过滤出SceneView类型的tab
for tab in cur_tabs:
if tab.type() != hou.paneTabType.SceneViewer:
continue
# 新建SceneView面板
new_tab = tab.pane().createTab(hou.paneTabType.SceneViewer)
# 拷贝拍屏参数
fb_settings = tab.flipbookSettings().stash()
new_tab.flipbookSettings().copy()
# 拷贝paneTab参数
new_tab.setPin(tab.isPin())
new_tab.setLinkGroup(tab.linkGroup())
# 展开toolbar
new_tab.showSelectionBar(True)
祝你今天愉快"
waY