其の弐おはようございます。本日の当番、モーションデザイナーのR.Iです。今回もスクリプトの話をしようと思います。前回のブログではPythonファイル内にウィンドウ生成やボタン生成などを記載していましたが、今回はツールで作ったUIファイルをスクリプトから呼び出したりをやってみようと思います。勉強も兼ねて作成したツールが以下になります。オブジェクトを選択して、「point」「orient」「parent」というボタンを押したら、ロケータを生成。生成したロケータを選択したオブジェクトにコンストレインさせるツールです。生成されたロケータを選択できるようにボタンの下のリストにロケータ名を追加します。リストに記載されたロケータを選択して、右クリックを押すと、ベイクしたり、コンストレインを反転したりと自分がよく使う機能をズラッと参照できるようにしてます。キャラクターを動かすためのコントローラの仕組みを変化させる際に1.ロケータ生成2.コントローラにロケータをコンストレイン3.ロケータをベイク4.「2」の処理でのコンストレイン関係を入れ替えるこの機能をサッとできるだけで作業効率が全然違います。今回はUIファイルの呼び出しやPythonファイルを外部から呼び出したりするので、簡単にパッケージ化します。フォルダ構成は以下になります。Geta_Tool.ui(UIファイル)以下がスクリプトの内容になります。u"想定していないコンストレイントです。MainWindow.show()そしてそれを呼び出して実行するための処理は以下になります。Getareload(Geta)Geta.UiShow()メインファイルの中身について、主にUIとの関連部分を説明していきたいと思います。QtGui.QWidget)上記の部分で必要なライブラリの呼び出し、前回のブログで説明したウィンドウが手前にくるようにする処理です。Tool")上記の部分でUIファイルの呼び出し、取得、ウィンドウの表示位置、サイズなどを指定してます。os.path.dirname(os.path.abspath(__file__))」で実行されているPythonファイルのパスを取得することができ、同階層にあるUIファイルを取得できるようにしておきます。あとは起動時の表示位置とウィンドウサイズを指定、ツールのタイトルを記載しています。自分の周りではロケータを使って構造を変更する際に「下駄をはかせる」などというため、下駄ツールとしています。self.ui.list_locators.customContextMenuRequested.connect(self.list_locators_customContextMenuRequested)上記の部分でUIファイル内に設置されているボタンやリストに対してイベント設定をしています。以下の図のようにボタン、リストに名前をつけています。この名前を使ってUIファイル内のボタンなどにアクセスします。loader.load(uifile)」でUIファイルの情報を代入していました。「self.ui.btn_point」でpointボタンが取得できます。pointボタンは「QPushButton」なので、クリック時のイベントが取得できます。「self.ui.btn_orient.clicked.connect(self.btn_point_clicked)」で「.connect」のカッコ内にイベント発生時に実行される関数名を指定します。self.ui.list_locators.addItem(name)上記の部分はボタンを押された時に呼び出される関数です。「constraintsSpaceLocator()」という関数も処理中に呼んでいます。「constraintsSpaceLocator()」は引数として文字列「pos」「rot」「par」を渡すと文字列によってコンストレイン処理が分岐します。コンストレインするロケータを生成し、戻り値として生成したロケータの配列を返します。その配列を一つずつ「name」に代入し「list_locators」の一覧に加えています。menu.exec_(QtGui.QCursor.pos())右クリックを押した際に出てくるメニューの作成は上記の部分で行っています。始めの方は決まり文句のようなもので、自分もあまり理解できておりません。「QtGui.QMenu」を宣言し、「addAction」メソッド、引数に文字列で右クリック時に表示される項目を追加できます。「triggered.connect」メソッドに項目が選択された際に実行される関数名を指定します。このあたりはボタンの時と似ていますね。MainWindow.show()最後にウィンドウを表示する処理で終わりですね。今回のツールは主にPySideの「QPushButton」と「QListWidget」を使って作成しております。PySideの資料は少ないですが、以下のサイトを参考にしながら勉強しています。documentationhttp://srinikom.github.io/pyside-docs/Mayaのコマンドhttp://me.autodesk.jp/wam/maya/docs/Maya2010/CommandsPython/PySideのドキュメントは英語になりますが、同じような単語が並んでいます。そのため、慣れてくるとヒントも見つけやすくなると思います。今回のスクリプトは勉強用も兼ねているので、まだまだ調整したい所が多々あります。次回のブログで書けることがあったら、またスクリプトについて書きたいと思います。流行りの...(2019.02.28)たまには乗らんとね(2019.01.17)コミュニケーションを語る!(2018.11.22)12個のアニメーション基本原則とは?(2018.10.11)新人研修を終えて(2018.09.06)コメントコメントを書く名前:メールアドレス:(ウェブ上には掲載しません)アドレス(URL):この情報を登録するコメントは記事投稿者が公開するまで表示されません。