blenderでPythonのツール開発をしようと思ったところ、デフォルトだとPySideが使えない。
他のDCCツールではPySideでGUIを開発しているので、blenderでもPySideを使う方法を調べていたところ「BQt」というアドオンを見つけました。
BQtのGitHub
BQtはこちらのGitHubで公開されています。
MPL 2.0ライセンスとのことです。
BQtインストール手順
インストール方法についてはこちらのページに書かれています。
https://github.com/techartorg/bqt/wiki/Installation
3種類の方法が書かれていますが、一番上がrecommendedなのでおすすめのようです。
Pluggetを使ったインストール
このrecommendedの手順で行う場合は「Plugget」というアドオンをまずインストールすることになります。
まず、1の”plugget blender addon”というリンクをクリックすると、blendファイルのダウンロードが開始します。
ダウンロードされた”install_plugged_addon.blend”というファイルを開くと、スクリプトが表示され、実行すればアドオンが追加されるようになっています。
ここで問題発生。
blender3.6だとPermissionErrorで失敗してしまいました…
PermissionError: [Errno 13] Permission denied: 'main.zip'
blender4.2だと問題なくアドオンが追加されています。
“pl”と入力してPluggetを探し、Pluggetの中のPreferencesにある検索ボックスから”bqt”を検索して、Installボタンを押します。
次にアドオンの検索ボックスに戻って”qt”と入力し、”PySide Qt wrapper (bqt)”を探してオンにします。
・・・と、ここでも問題発生。
QApplicationがimportできないと言われました。
足りないモジュールを追加
BQtのGitHubでrequirements.txtを見ると「PySide6」と「blender-qt-stylesheet」と書かれています。
blenderのPython環境にこれらがインストールされているかを確認。(blenderインストールフォルダ/バージョン/python/bin/python.exeを使う)
入ってない…
Pluggetを使えば必要なものを1クリックでインストールしてくれるらしいのに、結局うまくいってなかった模様。
ということで手動で追加します。
一旦GitHubからzipをダウンロードして、ここに書いてる通り、pipでrequirements.txtから追加。
追加されました。
再度blender4.2を起動して、”PySide Qt wrapper (bqt)”をオン!
・・・まだ同じエラーが出ます。
pipで追加されている場所がおかしい
requirements.txtのログを見ると、なぜかPySide6などのインストール先が「AppData/Roaming/Python/Python311/site-packages」の方になっている。
blender用のpythonフォルダに入っていないっぽい?
ということで-tでパスを指定してみました。
python -m pip install -r requirements.txt -t C:\Program Files\Blender Foundation\Blender 4.2\4.2\python\lib\site-packages
すると正しい場所にインストールされていそうだったので、再度”PySide Qt wrapper (bqt)”をオン!
無事インストールが完了しました。
手動インストール
blender3.6はPlugget方式だとパーミッションエラーになったので、マニュアルインストールの手順でインストールしてみました。
手順は以下の通り。
- GitHubからzipでダウンロード
- zipを解凍して”bqt”フォルダをアドオンフォルダにコピー
- pipでrequirements.txtのものを追加
これだとすんなり行けました。
BQtの動作確認
インストールができたら動作確認を行います。
ダウンロードしてきたzipにサンプルがいくつか入っているのでそれを使うと楽でした。
bqt_demo/hello_world.pyを実行するとQDialogのウインドウが表示されます。
ウインドウタイトルが固定されてしまう問題の解決法
BQtを有効化していると、blenderを起動した時や、ファイルを開いた時でも「Blender Qt」という表示で固定されてしまいました。
こちらは環境変数「BQT_DISABLE_WRAP」を1に設定すれば対策できました。
https://github.com/techartorg/bqt/issues/68
まとめ
ということでblenderでもPySideで開発できるようになりました。(たぶん)
まだBQtを導入しただけなので何か不具合はあるかもしれないですが、色々試してみようと思います。
blenderにPySide6をインストールするだけだとうまくいかなかったので、BQtを見つけて助かりました。
コメント