基于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 就簡單介紹一下。當(dāng)執(zhí)行 python 代碼時,如果沒有打開 Python Shell,相應(yīng)的打印會出現(xiàn)在 Houdini Console(桌面右下角)

如果打開了,則打印信息會出現(xiàn)在 shell 窗口

Python Panel Editor,可以創(chuàng)建界面(New Interface),供panel的tab頁簽調(diào)用,以及下拉菜單使用

也可以通過先打開Python Panel 后,通過右上角的功能按鈕打開 Python Panel Editor

創(chuàng)建的界面(Interfaces),通過設(shè)置便可以在其它tab頁簽中直接調(diào)用打開了(按 Apply確認(rèn),或者 Accept 確認(rèn)并關(guān)閉窗口)

我們更多需求是在菜單欄上面,自定義很多菜單功能按鈕
比如下面這樣:
(1)創(chuàng)建一個菜單頁簽選項卡(New Shelf)

(2)往選項卡里添加功能按鈕(New Tool)

按鈕被點(diǎn)擊時所執(zhí)行的腳本,在 Script 中進(jìn)行編寫,常用的還有選項(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)行搭建。
# 升級系統(tǒng)的pip > python –m pip install –upgrade pip # 安裝 PySide2 > ?pip install pyside2
注意創(chuàng)建的是 Widget,以及控件的名稱( Python 代碼通過名稱獲得該控件的引用)

如果想為 Houdini 安裝外部的 python庫,比如pandas,需要用到 get-pip.py文件

弄完UI,我們來看看IDE編碼環(huán)境如何搭建。本文用的是PyCharm編輯器,首先需要設(shè)置解釋器路徑為 Houdini 的 Python37目錄

并向解釋器路徑添加以下三個目錄

安裝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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
django中的數(shù)據(jù)庫遷移的實現(xiàn)
這篇文章主要介紹了django中的數(shù)據(jù)庫遷移的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Pycharm中import?torch報錯,python中import?torch不報錯的解決
這篇文章主要介紹了Pycharm中import?torch報錯,python中import?torch不報錯的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
Python如何將圖像音視頻等資源文件隱藏在代碼中(小技巧)
有朋友問小編使用pyinstaller打包源碼時,因為代碼中使用了圖像、音頻、視頻等資源文件,無法將程序打包成單一的可執(zhí)行文件,怎么處理呢,下面小編通過代碼給大家介紹Python如何將圖像音視頻等資源文件隱藏在代碼中,感興趣的朋友一起看看吧2020-02-02
Python機(jī)器學(xué)習(xí)10大經(jīng)典算法的講解和示例
10個經(jīng)典的機(jī)器學(xué)習(xí)算法包括:線性回歸、邏輯回歸、K-最近鄰(KNN)、支持向量機(jī)(SVM)、決策樹、隨機(jī)森林、樸素貝葉斯、K-均值聚類、主成分分析(PCA)、和梯度提升(Gradient?Boosting),我將使用常見的機(jī)器學(xué)習(xí)庫,如scikit-learn,numpy和pandas?來實現(xiàn)這些算法2024-06-06

