houdini 20视窗卡bug脚本开发小记

前情提要: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对象上,

PaneTab Class 帮助文档

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)

hou.SceneViewer Class 帮助文档

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

相关推荐
8年车载测试2 小时前
车载测试中如何通过 Jira 平台提交 Bug:操作步骤与关键要点
bug·jira·uds诊断·hil测试·uds自动化测试·ecu刷写测试·canoe工具
硅基手札10 小时前
SPI技术系列 13 · SPI 调试与排查
linux·运维·stm32·单片机·嵌入式硬件·bug
李永奉12 小时前
杰理可视化SDK开发-【BUG】AC7006F8芯片开启一拖二和双麦通话语音算法后,设置触摸音在唤醒语音助手和通话时触摸音没作用问题
单片机·嵌入式硬件·mcu·物联网·电脑·bug
kyle~2 天前
机器人通信 --- FANUC TCP 并发请求-响应错位 Bug 复盘
tcp/ip·机器人·bug
鬼手点金4 天前
Harness 工程:模型之外的竞争力
服务器·人工智能·深度学习·机器学习·bug
巴巴媛6665 天前
【Debug1】程序死机,while(1)循环,怎么办?
c语言·笔记·stm32·嵌入式硬件·bug
JosieBook7 天前
【多线程】两台机器同时抢一个字典:一次并发 Bug 的排查
java·网络·bug
鬼手点金8 天前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
小玮看世界9 天前
【Bug 报告】腾讯元宝 Windows 客户端 v2.88.1 新建对话卡死、界面残留与输入框乱码
bug
衣舞晨风9 天前
一次升级引出两个BUG:API7 AI 网关流式 500 与低流量 CPU 打满排查
网关·ai·bug·异常排查