<重要1:2013.11.07> このスクリプトVer1.1をデータサイズが大きいシーン上で使用するとエラーを起こして Poserが完全に固まってしまい、強制終了するしかなくなる場合があります。 そうなると終了させる前にセーブすることは不可能です。
この原因は、ライブラリからPythonを起動するためのダミーフィギュアを削除するための 「DeleteCurrentFigure()」という命令をrunPythonScript経由で走らせた際に、 ある一定以上のデータサイズのシーンになると正常に働かなくなるためです。 (Pythonメニュー経由でなら同じシーンでもなぜか動きます。) ReadMeファイルにも書いていますが、このスクリプトを使用することによって生じた 損害に対する責任は一切負いかねますので、必ず自己責任でご使用ください。
※ポリゴン数が少なくても高解像度テクスチャを多く使用しているシーンは シーン全体のデータサイズが大きくなりますのでご注意ください。
======================================
<重要2:2013.11.07> いろいろ試した結果、この問題を回避する方法を見つけました。 後日Ver1.2としてアップデート公開しますので、Ver1.1をご使用になっている方は それまでくれぐれも慎重なご利用をお願いしますm(_ _)m
======================================
なんだかあっという間にまた一ヶ月ブログを放置してしまいましたorz 別にPoserをいじってないわけじゃないんですが、強いて言えばFF14をやっていたとか いないとか、そんな感じでございます。
さて、今回は新しいPoser用のPythonツールを公開します。 何をするツールかというと、Poserのライブラリ窓から直接サンプル画像を開いちゃおう という非常にニッチなものです。
MH Sample Viewer ver1.1 (1.5MB) このバージョンの公開は停止しました。
MH Sample Viewer ver1.2 http://manihoni.blog103.fc2.com/blog-entry-404.html 最新バージョンのDLと変更点の解説は↑で。
Poser9/PoserPro2012からライブラリ窓に表示されるフォルダにもサムネイルをつける ことができるようになった(参照:ライブラリのサムネイル)んですが、私はこのサムネイル のために「!!!folder_icon」というPNG画像(とcr2やpz2といったPoser用ファイルの組合せ) を用意していたんですね。 このサムネイルを表示するためだけに存在する「!!!folder_icon」に何か他にも役立つ 使い道はないかなーと常々思っていたことが今回のツールを作った第一の理由。

第二の理由はというと・・・ 気に入って購入したはずのPoser服などのアイテムなのにライブラリ窓にずらっと並んだ サムネイルを見ただけではその魅力が伝わって来ず、「この服ってどんなのだっけ?」 という確認をするために一度Poserから離れてわざわざエクスプローラ(MacならFinder)で DL時に保存しておいた商品のプロモ画像を見てみる・・・という回り道的な行為をなくし、 プロモ画像をPoser上で直接&探さずに見れるようにしたい!と。
そんなわけで、「!!!folder_icon」をWクリックすると事前に用意しておいた画像を Poser上で開ける&設定する手間はなるべく少ないほうがいいよね?という流れで Pythonを書き書きしました。 で、変更ずみのサムネイルと区別するためにファイル名も「!!!!!sample」に変更 したものが↓

まず、Poserファイルの「!!!!!sample.cr2」とサムネイル用画像「!!!!!sample.png」の組合せ。 これがPoserのライブラリ窓に「!!!!!sample」と表示されます。
で、その「!!!!!sample」をWクリックするとPythonスクリプトの「!!!!!sample.py」が起動し、 「!!!!!sample.jpg」を表示するヴューアーが立ち上がる、という仕組み。
この同じファイル名の4つのファイル(拡張子 cr2、jpg、png、py)が常に1セットです。

と、ここまで読んで気づいた人もすでにいるだろうと思いますが、Poseファイルを納める フォルダなのに「!!!!!sample」の拡張子が「.cr2」となってます。 いつのバージョンからなのか未確認ですが、少なくともPoser9/Pro2012の頃くらいから ライブラリ窓に表示&ロードできるファイルの種類に制限がなくなっていて、今回は特に ライブラリ窓から円滑にPythonを起動する仕掛けとして「.cr2」を利用しています。 (なぜ「.cr2」のほうがいいのか?という説明は後ほど。) で、この「!!!!!sample」をWクリックすると↓のように画像が開きます。

画像の拡大縮小やページ送りといった凝った機能は一切ありません。 閉じるときは、普通にヴューアーの右上にあるクローズボックス(×印)をポチっとするだけ。 Simple is best ということで。
ちなみにファイル名は4ファイル1セットを統一させさえすれば、どんなものでも可。
※拡張子は変更不可。 ※上位フォルダのサムネイルとして機能させるためには、ファイル並び順で先頭に なっている必要がある(同列のフォルダは除く)ので、ファイル名の頭に「!」を つけるといった工夫は必要。
ただし、ファイル名を変更する場合、.cr2ファイルの内容を一ヵ所だけ書き換える 必要があります。 .cr2を普通のテキストエディタで開いて、24行目の
runPythonScript ":!!!!!sample.py"
の太字の部分を変更したファイル名と同じものにしてください。 この変更を施さないと、cr2をWクリックした後にファイル検索がはじまってしまいます。

↑の例では、!!!!!sample01 と !!!!!sample02 の2セットを用意しています。 もちろん、Wクリックしたファイル名に応じたサンプル画像が開きます。

配布されたパッケージの中の「sample01&02」というフォルダに同じものが入ってます。 当然それぞれの.cr2の24行目は書き換えてありますのでご確認を。
実際にこのSample Viewerを利用する際には、まず最初に「!!!!!sample.py」を 普通のテキストエディタで開いて17行目と18行目のモニターの縦横のピクセル数を 書き換えることをおススメします。 で、書き換えた「!!!!!sample.py」を複製して使いまわす方向で。
ちなみにデフォルトでは以下のようになっています。
############### # Please set Width(=mW) and Height (=mH) of your monitor mW = 1920 mH = 1200 ###############
私の調べ方が足りなかったのかもしれませんが、Pythonにはなぜかモニター解像度(縦横の ピクセル数)を自動検出するための一般的なOS関数が用意されていません。 (外部ライブラリを利用する方法は見つけましたが、Poserにはミスマッチでした。) そのため、表示しようとするサンプル画像のサイズがモニターよりも大きい場合、ヴューアー がモニターからはみ出してしまう(=閉じるボタンがモニター外へ行ってしまう)ことになり、 致命的なトラブルというほどじゃないにしても、いろいろと美しくないことになりかねません。 もちろん、表示しようとするサンプル画像(.jpg)のサイズについて事前に気を付けておけば 済むことなんですけどね^^;
あと、サムネイル画像(.png)とサンプル画像(.jpg)は、自分のPC内で使うだけなら Renderosityのプロモ画像を流用しても何も問題ないです。 たぶんいないだろうと思いますが、もし配布したいという場合は自分でレンダリングした 画像を素材にして自分で用意してくださいね。
最後になりましたが、なぜ!!!!!sampleが「.cr2」なのかについての説明を。 ライブラリ窓でWクリックすることでPythonを走らせる命令としてPoserには以前から runPythonScript ":~.py"というものがあるんですが、この命令は基本的に Poserのシーン内にフィギュアデータが存在しなければいけないんですね。 ところが、このツールはシーンが空っぽのときに「さてどのフィギュアを出そうか」と判断 するために使うこともあるわけです。 そこで、「!!!!!sample.cr2」をWクリックしたら真っ先に空っぽのダミーフィギュアを シーン内に発生させ、Pythonが起動したら最初にそのダミーフィギュアを削除する、という 荒業を使うことで上記の問題を100%回避しています。 で、ダミーフィギュアをシーン内に発生させるためには、拡張子がPoserフィギュアを示す 「.cr2」となっている必要があった、というわけです。
以上、だいたい思いつく説明は一通りやったつもりですが、何か質問がある場合は コメントよろしくお願いしますm(_ _)m
|