月別アーカイブ: 2015年8月

ミニオンズ

最近は2Dイラストを描く時は、3Dのためのスケッチがほとんどなのですが、
先月ミニオンズを見て以来、そればっかり描いてます。
気に入ったのが有ると、しばらくはそればっかり描き続ける傾向は20代からです。

3Dにするイラストは決まったので、
ボツ(=断念)にした絵をさらしておきますね。もったいないので。

ミニオンズ
全員集合。3Dにしたら、ぜったい完成しないのでボツ(苦笑

スカーレット
スカーレット。ノーダルシェーディングで、
スケスケドレスを表現したら面白いかなと思ったのですが、単純すぎ、ボツ

ボブ&ティム
ボブ&ティム。ファーの練習に良いかなと思いましたが。単純すぎ


ミニオンズは、ストーリーは至って単純で、整合性もなんも無いですが、
また見たくなってしまう。魅力のある映画だったと思う。

同じフランス人監督の怪盗グルーシリーズもそうですが、
キャラクターと舞台装置で惹きつけるのが得意ですよね。
60sアメリカの雰囲気が素晴らしかった。

最近ビッグアイズも見たのですが、こちらも50~60sアメリカが舞台で、
ポップアート業界のスキャンダルを描いたものでした。これも面白かったです。

MODOでPySide(Qt)を利用してみよう ~ ビューポートのカスタマイズ

いかがお過ごしでしょうか? あっついですね~
今日は絶好の引きこもり日和です。

今回もMODOの記事です。
ちょっとテクニカルなので、興味の無い方はスルーでお願いいたします。


MODO901から、Win/MacでPySideが利用できるようになり、スクリプト開発の選択肢が広がりました。
ただし、注意点が有ります。

まず、PySideで実装したコードを、そのまま「スクリプトの実行」で実行することは出来ません。

私も勘違いしていたのですが、サポート担当の方に確認したところ、
スクリプト実行においては、「Fire & Forget」タイプのスクリプト(ざっくりいうと非同期)は
実行できないとの事です。
イベントループでデッドロックが起こり、フリーズすると思われます。なるほど。

では、どうすればPySideを利用できるか?

それは、「カスタムビューポート」を使うとの事です。

これは、ビューポート(※)をカスタマイズする機能で、Win/Macでは、MODO901の新機能です。
つまり、自作したビューポートの上に、PySide製のGUIを配置するわけです。

 ※ビューポート:MODOの画面を構成するフレームのこと。
  3Dビューポートだけでなく、アイテムリストやシェーダーツリーなどもそうです。
  ヘルプの「ビューポートってなに?」を参照

以上!

……と言いたい所ですが、
上記のサイトは、MODOでのキット開発に慣れている人向けの記述のようで、
他にもいくつか手順が必要です。
なので、以下にまとめておきますね。

手順1. PySideスクリプトを作成する。

 今回は例として、アバウト画面を表示した後、
 ”Congratulations!”とポップアップを表示するサンプルを作成してみます。

 コードは以下。続いて、内容を順に説明します。

 ■1~5行目:
  lxに加え、lxifcとPysideをインポートします。

 ■8行目:
  ”lxifc.CustomView”クラスを派生し、カスタムビューポート用のサンプルクラスを定義します。
  これが本体です。

 ■11行目:
  customview_Init()関数をオーバーライド実装します。
 
 ■12~28行目:
  この部分は、お決まりで良いと思います。
  paneが渡ってくるので、その親オブジェクトから、GUI部品を配置するWidgetを用意します。

 ■30~43行目:
  PySideを使った実処理。
  「Show [About MODO]」という名前のボタンに、
  スロット(onClicked:クリックされた時の処理)を割り当てて配置。
  最後にTrue(初期化正常終了)を返却します。
 
 ■46~53行目: 
  前述のボタンがクリックされた時の処理。
  アバウト画面の表示と、ポップアップ表示と、「Finished」というログの表示を行います。

 ■55行目:
  上記のクラスを”PySide Sample”という名前でPython serverに伝えます。

 コードは以上です。

手順2. ユーザスクリプトフォルダの”lxserv”フォルダに格納する。

 カスタムビューポートは、Python serverとして起動する必要が有ります。

 ユーザスクリプトフォルダに、”lxserv”という名前のフォルダを(無ければ)作成し、
 手順1.で作ったスクリプトを保存します。

 ファイル名は、かならずクラス名と一致させます。
 今回の場合は、「PySideSample.py」となります。

 場所は、「システム」メニューの「ユーザスクリプトフォルダを開く」で確認できますが、
 通常は、以下です。
   ■Windows:
   C:\Users\(ユーザ名)\AppData\Roaming\Luxology\Scripts\lxserv\

   ■MacOS:
   /Users/(ユーザ名)/Library/Application Support/Luxology/Scripts/lxserv/
 

スクリプトを格納

スクリプトを格納

 このlxservフォルダ、キット開発のベテランにはお馴染みなのかもしれませんが、
 私のようなニュービーが気づくには、ちょっと苦しかったです。

手順3. MODOを起動する。

 MODOを起動すると、スクリプトがコンパイルされます。
 エラーが無ければ、バイトコード(*.pyc)が出来るはず。

MODO起動後

MODO起動後

手順4. カスタムビューポートを表示する。

 では、表示してみましょう。
 適当なビューポート(アイテムリストなど)の「+」マークをクリックします。

新規タブ追加

新規タブ追加

 続いて、「アプリケーション」→「カスタムビュー」を開くと、
 先ほど作成したビューポート(“PySide Sample”)が出てくるはずです。
 これを選びましょう。

作ったビューポートを選べるようになる

作ったビューポートを選べるようになる

 下ようになれば成功です。

完成

完成

 関係無いですが、901の新機能の「Script Editor」が同じところにいますね。
 つまり、スクリプトエディタも、同様の方法で、カスタムビューポートで実装されているのが分かります。
 (こちらは、MODOインストールフォルダの、\extra\scripts\lxservにいます。)

 さて、ボタンを押してみましょう。
 アバウト画面が表示され…

アバウト画面

アバウト画面

 クリックして閉じると…

 

おめでとうございます

おめでとうございます

 はい、おめでと~ございます。

 手順は以上です。
 オリジナルスクリプトをばりばりと作っていきましょう。


ここまで書きましたが、最後に、思ったことを述べておきます。

確かに出来る事は増え、UIもリッチになります。
しかし、この方式だと、結局ユーザーに手順2.~4.を強要してしまう事になるんですよね。

個人的には、PySideの機能そのものよりも、
いちいちユーザーがキット用に設定を変更する手間が省けるかもしれない、
という所にメリットを感じていました。

なので、これを積極的に使っていくかどうかは、ちょっと迷っている所です。

もちろん今後、自作ビューポートの提供が一般的になって、
この手順が当たり前になれば、どんどん使っていけそうです。

ではまた。