基于Python的Houdini插件开发过程详情
作者:代码输入中... 发布时间:2023-11-28 17:28:02
本文以Python开发为例来进行说明,环境说明:
(1) Python 3.x(我用的版本是 3.9 版本)
(2)IDE开具 PyCharm(我用的版本是 PyCharm Community Edition 2021.3.2)
(3)Houdini,我安装的版本是 Houdini 19.0.455
Python相关环境所在的位置(Shell、Source Editor、Panel Editor)
Shell 就简单介绍一下。当执行 python 代码时,如果没有打开 Python Shell,相应的打印会出现在 Houdini Console(桌面右下角)
如果打开了,则打印信息会出现在 shell 窗口
Python Panel Editor,可以创建界面(New Interface),供panel的tab页签调用,以及下拉菜单使用
也可以通过先打开Python Panel
后,通过右上角的功能按钮打开 Python Panel Editor
创建的界面(Interfaces
),通过设置便可以在其它tab页签中直接调用打开了(按 Apply确认,或者 Accept 确认并关闭窗口)
我们更多需求是在菜单栏上面,自定义很多菜单功能按钮
比如下面这样:
(1)创建一个菜单页签选项卡(New Shelf)
(2)往选项卡里添加功能按钮(New Tool)
按钮被点击时所执行的脚本,在 Script 中进行编写,常用的还有选项(Options)以及Hotkeys(热键)
(3)我们通过在 Scripts 中重新载入代码来执行 python 文件
一种通过切换 python工程目录,os.chdir;另外一种方法是通过 sys.path.append
追加路径
import os
import sys
from imp import reload
houdini_tool_path = 'python文件存放的路径'
if houdini_tool_path not in sys.path:
sys.path.append(houdini_tool_path)
else:
print(houdini_tool_path + " 存在")
import python文件名
reload(python文件名)
// todo...(比如执行python文件名指定的 run 函数等)
为了工具更便捷的开发,界面我们采用了 PySide2
进行搭建。
# 升级系统的pip
> python –m pip install –upgrade pip
# 安装 PySide2
> pip install pyside2
注意创建的是 Widget
,以及控件的名称( Python 代码通过名称获得该控件的引用)
如果想为 Houdini
安装外部的 python库,比如pandas,需要用到 get-pip.py文件
弄完UI,我们来看看IDE编码环境如何搭建。本文用的是PyCharm编辑器,首先需要设置解释器路径为 Houdini 的 Python37目录
并向解释器路径添加以下三个目录
安装Houdini Python Support
插件
将新建的 Python 文件保存至指定目录,以便菜单栏上的按钮 Script 能加载并执行。
剩下主要任务就是编码,首先找到 ui 界面存放路径,然后加载界面,绑定界面事件
# coding=utf-8 #
import hou
import os
from PySide2 import QtCore, QtUiTools, QtWidgets
class CreateNodeDemo(QtWidgets.QWidget):
def __init__(self):
super(CreateNodeDemo, self).__init__()
# 创建界面
ui_file_path = 'UI界面存放的路径'
self.ui = QtUiTools.QUiLoader().load(ui_file_path, parentWidget=self)
self.setParent(hou.ui.mainQtWindow(), QtCore.Qt.Window)
# 绑定界面事件
self.ui.btn_create.clicked.connect(self.btn_click_handler)
print('11111111111111111111') # 打印日志
def btn_click_handler(self):
node_name = self.ui.txt_node.text()
self.create_node(node_name)
def create_node(self, node_name):
hou.node('/obj/').createNode('geo', node_name)
def run():
win = CreateNodeDemo()
win.show()
来源:https://blog.csdn.net/m0_59485658/article/details/123072563
猜你喜欢
- 【ThinkPHP版本查询】dump(THINK_VERSION);模板获取get参数{$Think.get.pageNumber}或者$R
- 1. 需求概述最近接到一份PDF资料需要打印,奈何页面是如图所示的A3格式的,奈何目前条件只支持打印A4。我想要把每页的一个大页面裁成两个小
- 最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),代码已经做了修改 之前的版本是本人疏忽 真对不住大家了
- 解决方法:1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql
- 一,fso.GetFile提取文件相应的 File 对象1,getfile.asp<%whichfile=Serv
- 双屏不是什么新鲜事,不过相信国内前端工程师还是用单屏的多,前端开发需要同时开启的屏幕太多了…你有没有迷失windows任务栏下n个窗口和AL
- phpstorm配置debug环境众所周知,在渗透测试进行代码审计的时候,往往要审计代码的执行过程,亦或是在开发php项目的时候,需要了解代
- 这种情况在Access下可以通过,但SQL则不行,在百度搜索解决方法,发现N多人出现同样问题却找不到解决办法: 代码如下:set
- rem ---表单提示函数 Being-----------------------------CODE Copy ... Fu
- 本篇文章起源于在GCR MVP Open Day的时候和C# MVP张响讨论连接池的概念而来的。因此单独写一篇文章剖析一下连接池。 为什么需
- 本文实例讲述了Python从list类型、range()序列简单认识类(class)。分享给大家供大家参考,具体如下:list类型定义:it
- 首先要注册一个账号密码,通过账号密码登录,并且滑块验证,自动输入搜索关键词,进行跳转翻页爬取数据,并保存到Excel文件中。代码运行时,滑块
- 摘要:对动态SQL的程序开发进行了总结,并结合笔者实际开发经验给出若干开发技巧。 关键词:动态SQL,PL/SQL,高性能 1. 静态SQL
- 只有mdf文件的数据库附加失败的修复 附加时报如下错误: 服务器: 消息 1813,级别 16,状态 2,行 1 未能打开新数据库 '
- 看了cragle的《有没有必要将网站Div+Css重构?》的文章,有一些想法不说不快,我也在文章的评论里提到曾经开除过两个执着使用div技术
- 对于软件来说,每一个新版本的推出都应该是一种进步,不可否认,阿里旺旺2008版相较于之前的版本的确是有很多的进步,但进步的同时却也有着比之前
- 一、查询条件精确,针对有参数传入情况 二、SQL逻辑执行顺序 FROM-->JOIN-->WHERE-->GROUP--&
- 问题:SQL Server 2005中如何利用xml拆分字符串序列?解答:下文中介绍的方法比替换为select union all方法更为见
- 本教程中将详细阐述传统的图形设计元素是如何应用在现代(2.0时代)的页面设计中的,然后我将解释为什么它们能流行开来,以及如何、何时、在哪里使
- 本文实例讲述了Python开发微信公众平台的方法。分享给大家供大家参考,具体如下:这两天将之前基于微信公众平台的代码重构了下,基础功能以库的