You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Houdini中通过编程方式加载shelf

Houdini 编程加载Shelf实现方案

Houdini完全支持通过编程手段实现shelf的动态加载,逻辑和Maya中加载shelf的方式非常相似,核心通过Houdini内置的hou Python模块实现,具体实现方式分为两类:

方法1:加载已有的.shelf配置文件

Houdini的shelf默认以.shelf后缀的XML格式存储,默认存放路径为$HOUDINI_USER_PREF_DIR/toolbar,你可以提前导出配置好的shelf文件,需要时直接调用API加载,和Maya中加载.mel格式shelf的逻辑完全一致:

import hou

# 替换为你的shelf文件实际路径
shelf_path = "/your/custom/path/xxx.shelf"
# 加载shelf文件到Houdini内存中
hou.shelves.loadFile(shelf_path)

# 将加载的shelf显示到当前界面的shelf集中
cur_shelf_set = hou.ui.curDesktop().shelfSet()
if cur_shelf_set:
    # 替换为你的shelf名称,对应shelf文件里的name属性
    target_shelf = hou.shelves.shelves()["your_shelf_name"]
    cur_shelf_set.addShelf(target_shelf)

方法2:动态创建全新shelf

如果不需要提前准备配置文件,也可以直接在代码中构造shelf和对应工具按钮,适合临时生成自定义工具架的场景:

import hou

# 第一步:创建shelf上的工具按钮
custom_tool = hou.shelves.newTool(
    name="my_custom_tool",
    label="自定义工具",
    # 按钮点击时执行的代码
    script="""
print("工具执行成功")
# 这里可以写你自己的工具逻辑
    """,
    # 用Houdini内置图标,也可填入自定义图标文件路径
    icon="SOP_box"
)

# 第二步:创建新的shelf,把刚才的工具加进去
custom_shelf = hou.shelves.newShelf(
    name="my_custom_shelf",
    label="我的工具架",
    tools=[custom_tool]
)

# 第三步:把新shelf添加到当前界面显示
cur_shelf_set = hou.ui.curDesktop().shelfSet()
if cur_shelf_set:
    cur_shelf_set.addShelf(custom_shelf)

常见注意事项

  • 你可以通过hou.shelves.shelves()获取当前所有已加载的shelf字典,key为shelf的唯一名称,可用于判断是否已存在同名shelf,避免重复创建
  • 要移除已加载的shelf,调用cur_shelf_set.removeShelf(目标shelf对象)即可
  • 所有shelf相关的API都归在hou.shelves命名空间下,可通过Houdini内置的Python帮助文档查询更多进阶用法

内容的提问来源于stack exchange,提问作者Rao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:36:02