基于Python的Houdini插件开发过程详情

本文以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()

到此这篇关于基于Python的Houdini插件开发过程详情的文章就介绍到这了,更多相关基于Python的Houdini插件开发内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用python开发vim插件及心得分享

    vim有各种强大的插件,这不仅归功于其提供的用来编写插件的脚本语言vimL,还得益于它良好的接口实现,从而支持python等语言编写插件.当vim编译时带有+python特性时就能使用python2.x编写插件,+python3则支持python3.x,可以使用vim --version来查看vim的编译特性. 要使用python接口,可以用:h python来查看vim提供的帮助文档,本文做一个简单的介绍.我们都知道在vim里可以执行bash命令,只需要:!command即可,那么vim里可以

  • Python 带你快速上手 Apache APISIX 插件开发

    目录 一.了解:项目架构 二.安装:部署测试 1. 下载安装 Python Runner 2. 配置 Python Runner 3. 启动 Python Runner 4. 测试 Python Runner 三.实践:插件开发 1. 插件目录 2. 插件示例 3. 插件格式 4. 插件规范及注意事项 前言: 熟悉 Apache APISIX 的小伙伴都知道,之前在社区中我们已经支持了 Java 和 Go 语言的 Runner,今天 Apache APISIX Python Runner 也来了

  • 使用Python开发游戏运行脚本成功调用大漠插件

    目录 一.搭建python开发环境 二.使用Pip下载pypiwin32库文件 三.下载大漠插件 3.1 下载大漠插件 四.成功调用大漠API 常见错误 闲来无事,想通过python来实现一些简单的游戏辅助脚本,而游戏辅助脚本的主要原理就是通过程序来查找游戏程序窗口,模拟实现鼠标点击和键盘按键等事件来实现游戏辅助的:window系统本身是有提供对应功能的API的,不过这次想通过大漠插件来实现查找窗口,鼠标点击和键盘按键的功能.我们这里使用的是大漠插件(dm.dll)的最后一个免费版: 3.123

  • 2021年值得向Python开发者推荐的VS Code扩展插件

    Visual Studio Code(简称 VS Code)是一个由微软开发,同时支持 Windows. Linux 和 macOS 等操作系统的免费代码编辑器,它支持测试,并内置了 Git 版本控制功能,同时也具有开发环境功能,例如代码补全.代码片段和代码重构等.VS Code 是程序员常用的代码编辑器之一,是一个可在所有平台上使用的开源.可扩展和轻量级的编辑器.这些品质使微软的 VS Code 大受欢迎,并成为 Python 开发的绝佳平台. VS Code 还拥有大量扩展,可以帮助提高开发

  • 教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码

    一.Python下载安装 1.Python官方下载地址:https://www.python.org/downloads 官方下载速度太慢,你可以到公众号"Python客栈"回复"python"下载,里面包括python2与python3所有版本,速度非常快 二.安装Sublime Text 3 Sublime Text 3官方下载地址:http://www.sublimetext.com/3 1.双击下载的.exe文件安装,安装路径不要有中文目录 2.安装Subl

  • 基于Python开发chrome插件的方法分析

    本文实例讲述了基于Python开发chrome插件的方法.分享给大家供大家参考,具体如下: 谷歌Chrome插件是使用HTML.JavaScript和CSS编写的.如果你之前从来没有写过Chrome插件,我建议你读一下这个.在这篇教程中,我们将教你如何使用Python代替JavaScript. 创建一个谷歌Chrome插件 首先,我们必须创建一个清单文件:manifest.json. { "manifest_version": 2, "name": "Py

  • 基于Python的Houdini插件开发过程详情

    本文以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,

  • 基于Python第三方插件实现西游记章节标注汉语拼音的方法

    起因很单纯,就是给我1年级小豆包的女儿标注三国和西游章节的汉语拼音,我女儿每天都朗读 ,结果有很多字不认识,我爱人居然让我给标记不认识的完了手动注音......我勒个去......身为程序员的我怎么能忘记用程序实现呢,特别是咱也会点Python万能语言.哈哈!列举一下使用的技术. 语言:Python3.7 插件:pypinyin0.37.0  和 openpyxl 3.0.3 开发工具:pycharm 社区版 使用openpyxl操作execl的教程多的你无法想. 使用pypinyin将汉字转换

  • 基于Python实现原生的登录验证码详情

    目录 1.概述 2.验证码实现的演进过程 2.1 路由及页面 2.2 视图函数中验证码的推导 2.2.1 图片发送到前端 2.2.2 引入动态图片 2.2.3 内存管理模块图片 2.2.4 完整图片验证码 2.3 登录验证中使用验证码 2.4 前端页面点击自动刷新 3.效果展示 4.小结 1.概述 在前面的文章中,我有分享了vue+drf+第三方滑动验证码接入的实现(文中也留了分享图片验证码功能的实现),即本文将要分享的是基于 python 实现原生的登录验证码 通常的验证码,人眼看上去更像是一

  • 基于Python的科学占卜工具开发过程

    目录 背景 前置知识 基础原理 如何产生卦象 开发 源代码 背景 一直以来,中式占卜都是基于算命先生手工实现,程序繁琐(往往需要沐浴.计算天时.静心等等流程).准备工作复杂(通常需要铜钱等道具),计算方法复杂,需要纯手工计算二进制并转换为最终的卦象,为了解决这个问题,笔者基于python实现了一套科学算命工具,用于快速进行占卜本文的算命方式采用八卦 + 周易+ 梅花易数实现,脚本基于python3.9.0开发.本人对于周易五行研究较浅,如有疏漏请见谅最终效果如图,在运行程序之后,会根据当前的运势

  • 基于Python代码编辑器的选用(详解)

    Python开发环境配置好了,但发现自带的代码编辑器貌似用着有点不大习惯啊,所以咱们就找一个"好用的"代码编辑器吧,网上搜了一下资料,Python常用的编辑器有如下一些: 1. Sublime Text 2. Vim 3. PyScripter 4. PyCharm 5. Eclipse with PyDev 6. Emacs 7. Komodo Edit 8. Wing 9. The Eric Python IDE 10. Interactive Editor for Python

  • 基于Python的Jenkins的二次开发操作

    背景 最近我们在整一个云执行的平台,底层用的是Jenkins来做执行引擎,方便的把我们的脚本做一个统一的调度. Jenkins确实是一个非常方便的框架,它提供了一整套的RESTful的API,可以非常方便的做二次开发,而且提供了一个python的库,操作起来就更加方便了. 常用的Jenkins概念 我们在使用Jenkins的时候,一般看到的都是Jenkins的View. 也就是说我们看到的基本上都是一些视图. 每一个构建的内容,无论是执行用例,跑脚本,还是打包编译发布,都是一个job. 每一个j

  • 基于Vue渲染与插件的加载顺序的问题详解

    Vue实践分享(三)在实际项目的开发过程中,经常会遇到页面还没渲染完成而插件就已经开始加载的问题,这样就会导致显示和功能出错. 可以通过Vue中的nextTick来解决 Vue.nextTick(function() { //widget }); 这样就会在页面渲染完成后再执行nextTick内的插件 以上这篇基于Vue渲染与插件的加载顺序的问题详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: 浅谈Vue的加载顺序探讨 Vue.js学习教程

  • 基于Python打造账号共享浏览器功能

    本篇文章介绍的内容会涉及到以下知识: PyQt5的使用; Selenium的使用; 代理服务器的架设和使用: 一.账号限制之痛 在如今的互联网中,免费的信息和资源占据了很大一部分,各类互联网应用提供了各行各业的资讯和资源.这是互联网能够不断繁荣和扩大的重要原因之一. 与此同时,一些收费或不公开的互联网应用则构成了互联网世界中更有价值和意义的部分. 一些限制性较低的网站,可能仅仅需要进行用户登录即可使用服务: 一些限制性中等的网站,则可能会出于账户安全或是其他方面的因素考虑,限制账号在一定时间一定

  • 基于Python+Appium实现京东双十一自动领金币功能

    背景:做任务领金币的过程很无聊,而且每天都是重复同样的工作,非常符合自动化的定义: 工具:python,appium,Android 手机(我使用的是安卓6.0的),数据线一根: 开搞前先让手机和电脑连上同一个无线网: 1.抓取京东APP的包名和Activity 先连接手机 windows+r输入cmd进入命令行页面 输入:adb devices查看设备是否链接: 输入:adb shell pm list package -3查看手机里面的第三方安装包: 很明显可以看出来京东的package是:

随机推荐