基于Python的Houdini插件開發(fā)過程詳情
本文以Python開發(fā)為例來進(jìn)行說明,環(huán)境說明:
- (1) Python 3.x(我用的版本是 3.9 版本)
- (2)IDE開具 PyCharm(我用的版本是 PyCharm Community Edition 2021.3.2)
- (3)Houdini,我安裝的版本是 Houdini 19.0.455
Python相關(guān)環(huán)境所在的位置(Shell、Source Editor、Panel Editor)
Shell 就簡(jiǎn)單介紹一下。當(dāng)執(zhí)行 python 代碼時(shí),如果沒有打開 Python Shell,相應(yīng)的打印會(huì)出現(xiàn)在 Houdini Console(桌面右下角)
如果打開了,則打印信息會(huì)出現(xiàn)在 shell 窗口
Python Panel Editor,可以創(chuàng)建界面(New Interface),供panel的tab頁(yè)簽調(diào)用,以及下拉菜單使用
也可以通過先打開Python Panel
后,通過右上角的功能按鈕打開 Python Panel Editor
創(chuàng)建的界面(Interfaces
),通過設(shè)置便可以在其它tab頁(yè)簽中直接調(diào)用打開了(按 Apply確認(rèn),或者 Accept 確認(rèn)并關(guān)閉窗口)
我們更多需求是在菜單欄上面,自定義很多菜單功能按鈕
比如下面這樣:
(1)創(chuàng)建一個(gè)菜單頁(yè)簽選項(xiàng)卡(New Shelf)
(2)往選項(xiàng)卡里添加功能按鈕(New Tool)
按鈕被點(diǎn)擊時(shí)所執(zhí)行的腳本,在 Script 中進(jìn)行編寫,常用的還有選項(xiàng)(Options)以及Hotkeys(熱鍵)
(3)我們通過在 Scripts 中重新載入代碼來執(zhí)行 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...(比如執(zhí)行python文件名指定的 run 函數(shù)等)
為了工具更便捷的開發(fā),界面我們采用了 PySide2
進(jìn)行搭建。
# 升級(jí)系統(tǒng)的pip > python –m pip install –upgrade pip # 安裝 PySide2 > ?pip install pyside2
注意創(chuàng)建的是 Widget
,以及控件的名稱( Python 代碼通過名稱獲得該控件的引用)
如果想為 Houdini
安裝外部的 python庫(kù),比如pandas,需要用到 get-pip.py文件
弄完UI,我們來看看IDE編碼環(huán)境如何搭建。本文用的是PyCharm編輯器,首先需要設(shè)置解釋器路徑為 Houdini 的 Python37目錄
并向解釋器路徑添加以下三個(gè)目錄
安裝Houdini Python Support
插件
將新建的 Python 文件保存至指定目錄,以便菜單欄上的按鈕 Script 能加載并執(zhí)行。
剩下主要任務(wù)就是編碼,首先找到 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__() ? ? ? ? # 創(chuàng)建界面 ? ? ? ? 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()
到此這篇關(guān)于基于Python的Houdini插件開發(fā)過程詳情的文章就介紹到這了,更多相關(guān)基于Python的Houdini插件開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python讀取JSON數(shù)據(jù)操作實(shí)例解析
這篇文章主要介紹了Python讀取JSON數(shù)據(jù)操作實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05如何使用?Python為你的在線會(huì)議創(chuàng)建一個(gè)假的攝像頭
這篇文章主要介紹了使用?Python為你的在線會(huì)議創(chuàng)建一個(gè)假的攝像頭,在?Python?的幫助下,不再?gòu)?qiáng)制開啟攝像頭,將向你展示如何為你的在線會(huì)議創(chuàng)建一個(gè)假的攝像頭,需要的朋友可以參考下2022-08-08Python爬蟲的兩套解析方法和四種爬蟲實(shí)現(xiàn)過程
本文想針對(duì)某一網(wǎng)頁(yè)對(duì) python 基礎(chǔ)爬蟲的兩大解析庫(kù)( BeautifulSoup 和 lxml )和幾種信息提取實(shí)現(xiàn)方法進(jìn)行分析,及同一網(wǎng)頁(yè)爬蟲的四種實(shí)現(xiàn)方式,需要的朋友參考下吧2018-07-07python實(shí)現(xiàn)逆波蘭計(jì)算表達(dá)式實(shí)例詳解
這篇文章主要介紹了python實(shí)現(xiàn)逆波蘭計(jì)算表達(dá)式的方法,較為詳細(xì)的分析了逆波蘭表達(dá)式的概念及實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-05-05Python類的詳細(xì)定義與使用案例(實(shí)例講解)
這篇文章主要給大家介紹了關(guān)于Python類的詳細(xì)定義與使用案例的相關(guān)資料,在Python中類表示具有相同屬性和方法的對(duì)象的集合,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10Python設(shè)計(jì)模式之享元模式原理與用法實(shí)例分析
這篇文章主要介紹了Python設(shè)計(jì)模式之享元模式原理與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了享元模式的相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下2019-01-01python利用while求100內(nèi)的整數(shù)和方式
這篇文章主要介紹了 python利用while求100內(nèi)的整數(shù)和方式,下面文章要描述的內(nèi)容有1到100的和、1到100內(nèi)的偶數(shù)和、1到100內(nèi)的奇數(shù)和,具體詳細(xì)內(nèi)容,需要的朋友可以參考一下2021-11-11