こちらはPySideでgui付きのものを開発できるわけですが、
Houdiniは標準じゃついてないってことで、入れてみました。
helpやらネットの情報をいくつか合わせたって感じかしら。
1. Install Python
2. Install PySide
Pythonインストールしとかないとインストールしてくれない!?
3.Copy PySide
(インストール場所いじってない場合)
C:\Python27\Lib\site-packages内、「PySide」フォルダを
C:\Program Files\Side Effects Software\Houdini 13.0.376\python27\lib\site-packages
にコピー。
4.Copy 「pyqt_houdini.py」 file
C:\Program Files\Side Effects Software\Houdini 13.0.376\houdini\help\hom\cookbook\pyqt\part1
内の「pyqt_houdini.py」
を上記にもある
C:\Program Files\Side Effects Software\Houdini 13.0.376\python27\lib\site-packages
にコピー。
※追記 : これのPyQt4もPySideに!
5.書き換え
Nuke
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PySide import QtCore, QtGui | |
import nuke | |
class MyWidget(QtGui.QDialog): | |
def __init__(self, parent): | |
super(MyWidget, self).__init__(parent) | |
self.setWindowTitle('title') | |
self.setWindowFlags(QtCore.Qt.Tool) | |
self.refreshBtn = QtGui.QPushButton("btn") | |
self.treeWidget = QtGui.QTreeWidget() | |
self.treeWidget.setColumnCount(2) | |
self.treeWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) | |
main_layout = QtGui.QVBoxLayout() | |
main_layout.setContentsMargins(6, 6, 6, 6) | |
main_layout.addWidget(self.refreshBtn) | |
main_layout.addWidget(self.treeWidget) | |
self.setLayout(main_layout) | |
f = MyWidget(QtGui.QApplication.activeWindow()) | |
f.show() |
Houdini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PySide import QtCore, QtGui | |
import pyqt_houdini | |
class MyWidget(QtGui.QDialog): | |
def __init__(self, parent=None): | |
super(MyWidget, self).__init__(parent) | |
self.setWindowTitle('title') | |
self.setWindowFlags(QtCore.Qt.Tool) | |
self.refreshBtn = QtGui.QPushButton("btn") | |
self.treeWidget = QtGui.QTreeWidget() | |
self.treeWidget.setColumnCount(2) | |
self.treeWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) | |
main_layout = QtGui.QVBoxLayout() | |
main_layout.setContentsMargins(6, 6, 6, 6) | |
main_layout.addWidget(self.refreshBtn) | |
main_layout.addWidget(self.treeWidget) | |
self.setLayout(main_layout) | |
app = QtGui.QApplication.instance() | |
if app is None: | |
app = QtGui.QApplication(['houdini']) | |
dialog = MyWidget() | |
dialog.show() | |
pyqt_houdini.exec_(app, dialog) |
に。
importの変更と、行末の変更ですな。
houdiniのhelpにあるのを参考にしました。
行末の内容とpyqt_houdini.py内でなにやってるかは要確認。
(pyqt_houdini.py無しにできそう?)
ちなみに、houdiniのhelpにあるサンプルは
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PyQt4 import QtCore | |
from PyQt4 import QtGui |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from PySide import QtCore | |
from PySide import QtGui |
ノードベースのNukeとHoudini。
共通のツール作れないかなぁ。
PySideで移植も多少簡単になるし。
Houdiniでシェルフみたいにアクセスしやすくて、
ノードのパラメータみたいに、hipファイルごとに
固有の値を持ち続けられるpythonを埋め込める場所はどこに....?
追記
Houdiniで外部エディタでスクリプト書きたいときは、
$EDITOR
にエディタのexeの場所を入れておく。