Muzzuri
2012/5/29
Tag: mocoly,muzzuri,pymel,pyqt,インハウスツール
こんにちは。ソルです。
今回の記事はMoCoLy(モッコリー)を継承したGUI中心のMOBキャラ作成インハウスツールMuzzuri(ムッツリ)について紹介したいと思います。
元々は以前のバージョンの不具合の修正を担当していましたが、操作が難しい、複数キャラの同時作成ができない、データがツールから独立できないなど、改善の必要を感じ作り直すことにしました。
例えば、同じ学校の学生のMOBキャラーを作るとき同じ服装のキャラを何回も最初から設定し直さないといけないなどの構造的な問題には、一回制服のセットを設定してその後は必要なパーツだけを繋ぎ簡単に複数のキャラの作成ができるようにし改善しました。
後、途中のデータを保存するなどツールの中で管理していた為ツールの流れにあわせて作業しなければいけなかったのですが、ツールへの依存性をなくし、作業途中Mayaシーンファイルで保存したデータでもツールで中身を確認し作業再開できるようにするなど色んなWorkFlowに対応するようになりました。
データの管理をExporerで直接していた所は専用UIで簡単に管理できるようにしました。
弊社の主力ソフトMayaに近い操作性を持たせるため、MayaのHyperShadeを参考にして、
右クリックで拡大縮小したり、Middleボタンでconncect/Disconnect、ダブルクリックで一連のItemを選択するなど
色んな操作性を持たせ触って楽しいツールにしようとしました。
UIはPyQtを使用、中身はPyMelで作られています。(どっちも初めて触るライブラリだったので、何日もネット検索ばかりしていたのは内緒・・・)
PyQtの中でもメインに使っているクラスはQGraphicsScene、線を引いたり、ドラッグ線を表示したりするのは
Event処理でやっています。標準のEventにないものはEventLoopかEventFilterを使っています。
class myView(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.installEventFilter(self) def eventFilter(self, obj, event): if event.type() == QtCore.QEvent.MouseButtonPress: if event.button() == QtCore.Qt.RightButton: print 'Right Button Press' return False myview = myView() myview.show()
≪EventFilterの使用例≫
今年の10月にはバイオハザードダムネーションが公開されます。
公開に向け弊社のスタップが必死に頑張っています。是非お楽しみに!
コメント
コメントフォーム