Poserの画像を貼ったり情報をメモしたり。 

プロフィール

manihoni

Author:manihoni
3DCG歴そろそろ20年。
現在はPoserのベンダーとして
Renderosityでぬる~く活動中。

ManiHoni.net
Twitter
mixi
Gallery@Renderosity


ブログ内検索


INDEX


最近の記事


最近のコメント


カテゴリー


タグ


アーカイブ


ブログ全記事表示


Poser@Renderosity


DAZ3D


RSSフィード


今何時?


販売申請ガイドライン


メールフォーム

名前:
メール:
件名:
本文:


Copy Values
今回はPoser11/Pro11に標準装備されているPythonツール「Copy Values」
紹介と簡単な解説です。
(※Dimension 3Dさんのサイトで無料配布されているものと中身は同じです。)

これは、以前このブログで紹介した「モーフの値をコピーする」ことに特化したCopy Morphs
後継にあたり、「フィギュアの様々なパラメータの値をコンフォーム服にコピーする」ことが
できるようにと豊富なオプションが追加された便利なツールです。

copyvalues_01c.png

…が、この豊富なオプションが逆に敷居を高くしてしまったところも正直ありますので
Poser初心者さん(いるのか?)のためにも、基本的なところから説明しませう。

<このツールの特徴>

・スーパーコンフォームやPoserの自動同期設定を利用しない(できない)状態を
 前提にしたツール。(モーフの自動同期については前記事を参照のこと。)

・コンフォーム服にモーフデータを自動生成できるツールではありません
 あくまでも「パラメータの値(ダイアルの数値)」をフィギュアから服にコピーするだけです。

パーツ名(Body, chest など)とパラメータ名(Young, WaistWidth など)が
 両方とも一致したパラメータのみ、その値がコピーされます。

マグネタイズできます。


パーツ名に関しては、例えばコンフォームタイプの髪の場合、頭部に関連したモーフ(PHM)の
納まっている場所が人体フィギュアと同じ「Head」ではなく「Hair」だったり「Neck」だったりと
パーツ名が一致しないケースが多々あるので、仮に後述するHead Morphsのオプションを
ONにしたとしてもパラメータの値のコピーが空振りすることが多いです。
大文字小文字の違いは気にする必要ありません。(これはパラメータ名でも同様)

パラメータ名に関しては、内部名称(InternalName)と外部名称(Name)の2種類の
どちらかが一致していれば同じ名称ということになります。
OptionのPartial MatchをONにした場合、完全に一致しなくても名称の大半(細かい条件
までは未確認)が一致していたらこのツールは動作するようです。(詳しくは後述)

マグネタイズに関しては、過去記事「超初心者向けV4解説」の「Q2:モーフで
変形させたV4に、服を一発でフィットさせる方法は?」をご覧ください、

<基本操作>

1) V4などの人体フィギュアに服をコンフォームさせる。
  (フィギュアのパラメータを変更するタイミングはコンフォームの前後どちらでも可。)

2) Copy Valuesを起動する。
  (「Scripts」メニューから「Partners」→「Dimension3D」→「Copy Values」を選ぶ。)

3) PoserのPreviewで人体フィギュアかコンフォーム服を選択する。
  (部位はどこでも可。Copy Valuesを起動前に選択しておいても可。)

4) Copy Valuesの「Init」ボタンを押す。
  (3で選択したものに応じたコンフォーム服のリストが表示される。詳細はボタンの解説で。)

5) 値をコピーしたいコンフォーム服をリストから選択する。

6) オプションを確認する。
  (各オプションの解説は後述。)

7) Copy Valuesの「Apply」ボタンを押す。


これはあくまでも基本なので、実際に操作してみると順番が前後してもなんとかなる
ことが多いです。極端な例で言うと、Copy Valuesを起動した後にコンフォーム服を削除したり
別のコンフォーム服を追加してもまったく問題なく動作します。

あと、操作対象はだけじゃなく、コンフォームできるものならでもでもOKです。

<ボタン>

Init
 基本操作3の「PoserのPreviewで選択」したものに応じたコンフォーム服のリストを表示する。

  ・人体フィギュア(=コンフォーム元)を選択 → すべてのコンフォーム服のリスト
  ・コンフォーム服を選択 → そのコンフォーム服のみ
  ・コンフォーム元・コンフォーム服のどちらでもない → 空欄

Apply
 リストで選択されたコンフォーム服にオプションで設定されたパラメータの値をコピーする。

Test
 ログ関連のオプション(Log Morph Transfer、Log Missing Morphs)がONになっている場合、
 パネル下部にテスト結果のログのみ表示される。
 コンフォーム服へのパラメータの値のコピーが実際におこなわれるわけではないので
 Previewでの変化はなく、ログ関連のオプションがOFFの場合は何も表示されない。

Clear
 パネル下部のログを消去する。


「このコンフォーム服だけ処理したい」という場合は、「Init」ボタンの説明で書いたように
基本操作3でコンフォーム服を選択したほうがリスト操作を省けてラクです。

次はオプションについての説明…なんですが、最初のこのツールの特徴でも挙げたように
スーパーコンフォームやPoserの自動同期設定を利用しない(できない)状態を前提
した内容ですので、その点をご留意ください。

<オプション>

Body Morphs
 体型などを変更するFBMPBMなど、Body階層で操作できるモーフの
 値のコピーを許可します。これは基本ONでしょう。

Head Morphs
 Body階層で操作できるモーフの値のコピーを許可します。服の場合は基本OFFで。
 コンフォーム髪の場合はこれをONにしないと意味ないですね。

Actor Morphs
 Poserのフィギュアに関連して「Actor」という場合、NeckやChestといった各パーツのこと
 を指します。つまり、このオプションをONにすることですべてのパーツのモーフの値がコピー
 されることになるわけです。
 人体フィギュアも服もBody階層でモーフを調整する方法が基本であることを考慮して、
 私はOFFのまま使うようにしています。

Joint Control Morphs
 服によってはJCMの値を調整することで関節等の破綻を防いでいることもあったはずなので
 人体フィギュアの値をコピーしてしまうとよろしくないかも…と考えて私はOFFにしてます。

Body Scaling
 身体全体のスケール。これは当然ONで。

Actor Scaling
 各パーツに個別設定されたスケール値をコピーします。
 私はStephanie 4のBody階層にあるProportionsの各パラメータをよく利用するのですが、
 このProportionsはジオメトリではなく各パーツのスケール値を上手い具合に変更するための
 パラメータなので、このActor ScalingをONにするだけで対応できちゃうんです。
 
Deformers
 人体フィギュア側の隠しマグネットの影響がコンフォームさせた服にも及ぶようにします。
 要するにマグネタイズです。
 このオプションをONにすることで、「マグネタイズ用のPoseファイルを探してクリックして…」
 という作業が今後一切不要になります。
 PoserPro11の場合は、迷わずONでいいと思います。
 …が、通常版のPoser11の場合は、ちょっと問題が発生してしまうんだなぁorz
 詳しくは後述のHide Deformersの項目を読んでください。


<オプションのOptions>

Partial Match
 パラメータ名が完全に一致しなくても名称の大半(細かい条件までは未確認)が
 一致していたらコピーが実行されるようになります。
 実際に試してみたところ、「Voluptuous」から「Voluptuous_B」へのコピーは実行されましたが
 「FBMVoluptuous」から「Voluptuous」へのコピーは実行されませんでした。
 想定外の誤動作をする可能性もゼロではないので、ONにする人はそのつもりで。

Include Hidden
 人体フィギュア側の隠しパラメータ(モーフとスケール)の値をコピーの対象にします。
 V4などのPoserで一般的に使うフィギュアでそういう値を服にコピーしなければならない
 ケースがあるとは思えないのでOFFで。
 でもまぁ、こういうオプションがあるということは、それを必要とする特殊なフィギュアが
 実際にあるということなんでしょう。
 うーん、ONにしてもたぶん弊害はないはずなんで、正直どっちでもいいかな。
 
Hide Deformers
 コンフォーム服にある「マグネットの影響度を調整するダイアル」をすべて非表示にします。
 前述のDeformersオプションをONにしてこのツールを実行すると、コンフォーム服側に
 マグネタイズされたマグネットの影響度調整ダイアルがずら~っと表示されてしまうことに
 なるので全部非表示にしてしまおう、というオプション。
 一度ONで実行して非表示になってしまうと、OFFにして再実行しても表示状態には
 戻らないので注意。

 問題は、表示させたままにしたいマグネットの影響度調整ダイアルが既にあるケース。
 PoserPro11ならオプションONにして全部非表示になってしまっても、パラメータパレットの
 右上の▲から「Show hidden parameters」をONにして隠しパラメータを全表示させた後、
 表示させたままにしたいパラメータをWクリックしてParameter Settingダイアログを表示させ
 HiddenのチェックボックスをOFFにすることでまた表示状態に戻すことができます。

 …が、通常版のPoser11の場合はこの手が使えないんですよねorz
 エディタなどを使ってサクサクとHidden属性の書き換えができる人なら問題ないと思いますが
 そうじゃない人はDeformersHide Deformersの両オプションともOFFにして
 通常のマグネタイズ用ポーズでやっつけたほうがいいかもしれません。

Log Morph Transfer と Log Missing Morphs
 パネル下部のログを有効にします。
 前者はコピーに成功したモーフ名と値、後者はコピーに成功しなかったモーフ名。
 Testボタンを使う際にもこのオプションのONは必要なので、迷わずONにしておきませう。
 


ということで、このツールについてみなさんご理解いただけましたでしょうか?
私自身ちょっと知識的にあやふやな部分もありますので、「そこは違うぞ、こら!」という
箇所がありましたら、ツッコミコメントをいただけると幸いです。

次は、スーパーコンフォーミング服をコンフォーミング服に戻す方法でも書きましょうかね。
お疲れ様でしたm(_ _)m

Tag: <>Python
Category: Tool

MH Sample Viewer 1.2
拙作のPoser用無料Pythonツール「MH Sample Viewer」の最新版です。

MH Sample Viewer ver1.2 (1.5MB)
http://www.manihoni.net/dl.php?dl=MH_Sample_Viewer_v1_2


前Ver1.1に「データサイズが大きいシーン上で使用するとエラーを起こして
Poserが完全に固まってしまう」という問題があることを見つけたので
その対策を施してあります。
前Ver1.1をご利用の方は、「~.cr2」と「~.py」をこのVer1.2に差し替えてください。
(前Verと同様に、差し替える前の「~.py」内のモニター解像度の数値書き換え推奨)

どんな問題だったのかは、2013.9.30に公開した前記事「MH Sample Viewer」に
追記してありますのでご確認を。
基本的な使い方も前記事とほとんど同じなので、そちらを参照して下さい。

変更点は以下の通りです。



・エラーの原因が「DeleteCurrentFigure()」だったので、この命令を使わずに済む方法を
 探して試行錯誤していたところ、「シーンにフィギュアが存在しないときにライブラリから
 Pythonを起動する方法がないため、一旦ダミーフィギュアを作成し、Python起動直後に
 それを削除する」という旧来のやり方(レンダロで売られているWetSkinなどがこの方法を
 とっていた)が、現在のPoserPro2014では必要なくなっていたことが判明。
 そこで「ダミーフィギュアを作らない=DeleteCurrentFigure()を使わない」という
 とてもスマートな方法で解決することができました。

・上記の変更により、このツールを構成するファイルの記述内容が一部変わり、
 ファイル名変更時に利用者自身が手を加える必要がある「~.cr2」の次の記述が
 24行目から6行目に移動しました。

   runPythonScript ":!!!!!sample.py"

 「~.py」内のモニター解像度を指定する行数には変更ありません。

・Ver1.1ではViewerウィンドウのタイトル部分にファイル名が表示されるだけでしたが、
 きちんとVer1.2に差し替えられたかどうかを確認できるようにするため同タイトル部分に
 「MH Sample Viewer Ver.1.2 : 」という文字列を加えました。



以上です。
  

Tag: <>Python <>Free
Category: My Products

MH Sample Viewer

<重要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」に何か他にも役立つ
使い道はないかなーと常々思っていたことが今回のツールを作った第一の理由。

library01.jpg

第二の理由はというと・・・
気に入って購入したはずのPoser服などのアイテムなのにライブラリ窓にずらっと並んだ
サムネイルを見ただけではその魅力が伝わって来ず、「この服ってどんなのだっけ?」
という確認をするために一度Poserから離れてわざわざエクスプローラ(MacならFinder)で
DL時に保存しておいた商品のプロモ画像を見てみる・・・という回り道的な行為をなくし、
プロモ画像をPoser上で直接&探さずに見れるようにしたい!と。

そんなわけで、「!!!folder_icon」をWクリックすると事前に用意しておいた画像を
Poser上で開ける&設定する手間はなるべく少ないほうがいいよね?という流れで
Pythonを書き書きしました。
で、変更ずみのサムネイルと区別するためにファイル名も「!!!!!sample」に変更
したものが↓

files01.jpg

まず、Poserファイルの「!!!!!sample.cr2」とサムネイル用画像「!!!!!sample.png」の組合せ。
これがPoserのライブラリ窓に「!!!!!sample」と表示されます。

で、その「!!!!!sample」をWクリックするとPythonスクリプトの「!!!!!sample.py」が起動し、
!!!!!sample.jpg」を表示するヴューアーが立ち上がる、という仕組み。

この同じファイル名の4つのファイル(拡張子 cr2、jpg、png、py)が常に1セットです。

library02.jpg

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

viewer01.jpg

画像の拡大縮小やページ送りといった凝った機能は一切ありません。
閉じるときは、普通にヴューアーの右上にあるクローズボックス(×印)をポチっとするだけ。
Simple is best ということで。

ちなみにファイル名は4ファイル1セットを統一させさえすれば、どんなものでも可。

  ※拡張子は変更不可。
  ※上位フォルダのサムネイルとして機能させるためには、ファイル並び順で先頭に
   なっている必要がある(同列のフォルダは除く)ので、ファイル名の頭に「!」を
   つけるといった工夫は必要。

ただし、ファイル名を変更する場合、.cr2ファイルの内容を一ヵ所だけ書き換える
必要があります。

.cr2を普通のテキストエディタで開いて、24行目の

  runPythonScript ":!!!!!sample.py"

の太字の部分を変更したファイル名と同じものにしてください。
この変更を施さないと、cr2をWクリックした後にファイル検索がはじまってしまいます。

files02.jpg

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

viewer02.jpg

配布されたパッケージの中の「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


Tag: <>Python <>Free
Category: My Products

DSON Importer for Poser
DSON Importer for Poserとは、Genesis関連のDAZ Studio専用データ
(フィギュアやキャラモーフなどのdufファイル)をPoserのライブラリパレットから
シーン内に直接ロードできるPoser用プラグインです。
日本時間の10月12日にリリースされ、しばらく無料でしたが現在(10/25)は
プラチナ会員価格で70%OFFの$7.49。



この製品にはGenesisを使い始めるためのGenesis Starter Essentialsという
基本データセットも同梱されているので、Genesis関連のデータを一切持っていない
という人でも安心して使い始めることができます。
もちろん、DAZ Studio本体のインストールは不要です。

というか、重要な点はむしろPoserのバージョンで。
Poser9/Pro2012のSR3以降をインストールしていないと動きません。
まだSR3にしていないという人は、Poser UpdatesからSR3.1を入手しましょう。
DLにはシリアル番号が必要なので用意用意。

ちなみに、Poser9/Pro2012 SR3からPoserPythonにAdd-onのライブラリを追加できる
ように仕様拡張され、「Reality3やGoZがPoserに対応!」という感じに発表されたわけですが
今考えるとこの時すでにDSONの計画がSmithMicroとDAZ3Dの間で進んでたんでしょう。
とにかくビックリさせられました。
※SR3.1ではこのAdd-onに利用できるメモリの制限が解除されたっぽいです。

さて、DSON Importer for Poserに話を戻しましょう。
まず、Poserのプラグイン(正確にはPoserPythonのDSONライブラリ)をインストール。

インストール先が自動認識できないときは、Poser9/Pro2012のアプリ本体の場所を
指定してあげましょう。

次にGenesis Starter EssentialsGenesis Starter Essentials PoserCF

これはPoser用のRuntimeとは別にDAZ Studio用のコンテンツフォルダを(Win7のようにUACの
縛りがあるOSの場合は、マイドキュメントかDドライブなどに)新規用意したほうがいいですね。
(私は、D:\DAZ Content に全部インストールしました。)
あ、もちろんすでにDAZ Studioも使っているという人は、そちらのコンテンツフォルダ
でOKだろうと思います。

インストールが済んだら、Poserのライブラリパレットに先ほど作ったコンテンツライブラリを
追加のRuntimeとして登録します。

Genesis Starter EssentialsでインストールしたDAZ Studio専用データと同じディレクトリに
Genesis Starter Essentials PoserCFでインストールしたPoser用(というかDSON用)のデータが
配置されていれば、Poserのライブラリパレット上にGenesisフィギュアが表示されるはず。

そのGenesisフィギュアをV4やM4などと同じようにWクリックすると、GenesisをPoser用に
変換するプログレスバーが表示され、シーン内にGenesisフィギュアがロードされます。

DSONの仕組みは、

1)D:\DAZ Content\Runtime\libraries\Character\にあるGenesis.cr2をWクリック。
2)Genesis.cr2内に記述されているrunPythonScript "Genesis.py"が実行される。
  ※Genesis.pyはGenesis.cr2と同じディレクトリにある。
3)Genesis.pyからadd-onのDSONライブラリが呼び出され、Genesis.cr2と同じディレクトリ
  にあるGenesis.dufがPoser用に変換される。

という感じ。
Genesis.cr2とGenesis.pyとGenesis.dufが同じディレクトリにあるってのが重要なんじゃ
ないかと思いますたぶん。

とりあえず今日はこんだけ。また気が向いたら書くぜ。

Tag: <>Python <>HOWTO <>Genesis
Category: Poser全般

wxPythonとか
SkinBlenderV3_pre.png

SkinBlender3を製作中です。
ご覧のとおり、GUIライブラリをTKinterからwxPythonに変更しました。
これでやっとMacOSX+Poser9/Pro2012でも動かせるはず。
現時点でGUIのレイアウトはほぼ終了。
Tan~Tattooの各チェックボックス、スライダー、ファイル選択等の機能実装もほぼ終了。
Preset以下のボタンの機能実装と、従来のMATとSSS-MATの自動判別&ブレンド方法切替
などの新機能追加はまだ手付かずです。

で、今回は wxPython に関するメモ。
wxPythonは「まとまった日本語情報」が少ない…と思いつつGoogleをフル活用してスクリプトを
書き書きしてるんですが、TKinterよりもシンプルで使いやすいのである程度やり方を把握したら
あとはリファレンスでも足りるという感じ。

私が参考にさせていただいたサイトは以下のとおり。

wxPython
http://www.wxpython.org/
たぶんここがオフィシャル。英語。
左のメニューにある「New wxPyDocs」からリファレンスが見れる。

wxPython — wxPython v2.8.9.1 documentation
http://xoomer.virgilio.it/infinity77/wxPython/APIMain.html
個人サイトっぽいが、オフィシャルのリファレンスよりも見やすい。英語。
「Major wxPython Widgets」から主な関数の目次へ。

Getting started with wxPython(日本語訳) - BTY-Wiki
http://bty.sakura.ne.jp/moin.cgi/Getting started with wxPython(日本語訳)
いわゆる"Hello, World"。英語オリジナルはこちら

GUI - python入門から応用までの学習サイト
http://www.python-izm.com/contents/gui/
Python全般を取り扱っているが、wxPythonについても一通り網羅されている。
パーツごとの簡単なサンプルと実行例が豊富にあるため、このサイトを見ながら
「自分がやりたいこと」にマッチする実行例を探して、細かいリファレンス的な
情報はオフィシャル等でGETする方向で。

おっさんにも解るPython: 変数とか関数とかメソッドとかコンストラクタとか
http://op-py.blogspot.jp/2010/09/blog-post_7090.html
日曜プログラマーなおっさんのための。



Tag: <>Python <>WIP <>HOWTO
Category: Poser全般

MH Grouping Lights
Twitterでこっそり公開していた「ライトをグループ化」するための自作Pythonツールを改良し、
ManiHoni.netでVer1.1として公開しました。

MH-Grouping-Lights04.jpg

ManiHoni.Net :: Free Stuff :: MH Grouping Lights
http://www.manihoni.net/freestuff/mh_grouping_lights.html

※15:00頃の公開から約1時間、ダウンロードされたZIPファイルが壊れていました。
 現在は修復済みですので、該当時間内にZIPファイルをダウンロードした人は
 再ダウンロードをお願いしますm(_ _)m
  「壊れてますよー」とTwitterで教えてくれた三児さんに感謝!


以前にT2さんが公開されていたPropを利用したライトのグループ化ツールと違い、
Poser9/Pro2012の新機能「Grouping object」を利用したものなので、
Poser8/Pro2010以前のバージョン、DAZ Studioではこのツールは動作しません。
(あ・・・Poserのバージョン判定する処理も追加しておけばよかったな・・・反省)

使い方はいたってシンプルで、事前に何か用意したり選択したりする必要は一切なく、
スクリプトを走らせれば勝手にシーン内のすべてのライトをグループ化してくれます。
グループ解除も同様にそのときに何を選択しているかなどは関係なく、グループ化された
ライト群があれば勝手に解除し、グループ化のためのオブジェクト「Grouping_Lights」
をさくっと削除してくれます。

MH-Grouping-Lights06.jpg

グループ化されたライト群の位置調整をしたい場合は、Parameter Dialsパレットの
左上にあるプルダウンメニューから「Groupings > Grouping_Lights」を選択し、
yRotateなどをいじってください。
この「Grouping_Lights」のパラメータをどんなにいじっても、各ライトの位置パラメータ
の数値は変動しないので、グループ解除をするだけで各ライトが元の位置に戻せます。



Tag: <>Python <>Free
Category: My Products

Metadata Builder
4月1日エイプリルフールでございますが、私はそういうのにまったく触手が動かないので
通常通りのPoserネタをお送りいたします。

さて。
時間に余裕があるときは相も変わらずライブラリ(特に髪)の整理をしているわけですが、
いつも「もうちょっとスマートにまとめられないかなー」と思ってまして。

「この髪はV3系とV4系対応。で、こっちの髪はV4系だけじゃなくM4系にも対応」という感じに
髪によって対応しているフィギュアの種類が違うので、今まではファイル名の末尾に
対応するフィギュアの名前を追加して「Foxy V4A4G4.hr2」なんて風にしてみたり、
男性用の髪だけ複製してまとめた「MENS」なんてフォルダを作ってみたりしていたんですが
どうにもスッキリしない。
せっかくPoser8/Pro2010以降はHairフォルダの中にポーズファイル(Pz2)を突っ込んでも
認識&適用もできる(Mac環境によってはNGなこともあるようですが)ようになったり、
シンボリックリンクも認識できるようになり・・と便利になったので、その技術の発展に応じた
整理方法をそろそろ見つけたいなーと考えていて、ふと思いつきました。

そうだ、京都へ・・・じゃなくて、METADATAを利用しよう!

というわけで、Poser9/Pro2012に標準装備されているMetadata Builderを使ってみる
ことにしました。
以下、そのキャプチャと簡単な説明。

まず、PoserのScriptsメニューからMetadata Builderを起動させます。

mb01.jpg

次にBuilderの左側の一番上にある「Select one file」ボタン(1)を押して、METAデータを
追加したいPoserファイル(cr2とかhr2とかpz2とか)を選びます。
間違っても「Select one runtime」は押さないように。
これを押して選んだruntime内のPoser関連ファイルがすべてピックアップされることになるので、
ファイル読み込みにものすごく時間がかかります。気が遠くなるほどに。

続けて、METAデータを追加したい項目(今回は「Name of item required」にしました)に
テキストを入力します(2)

最後に「Apply」ボタン(3)を押して終了です。
既存のMETAデータファイル(.xmp)が存在しない場合は、勝手に新規作成してくれます。
METAデータのフェイル名は、(1)で選択したファイルと同名+拡張子xmpです。
場所は当然、(1)で選択したファイルと同じディレクトリ。

こうして追加したMETAデータは、ライブラリ窓の下部にある詳細情報の部分に表示されます。

mb02.jpg

実際に新規作成されたMETAデータファイル(.xmp)はこんな↓感じ。

mb03.jpg

今回 Metadata Builderをいじってみた感想ですが、項目名がすべて英語でしかも
記入内容を限定するような感じだったので、特に日本人ユーザーにはとっつきにくい
んじゃないかなーと。
もしもっと自由に自分にとって役に立つ情報を追加できるフリーメモ的な項目があれば、
もっとユーザーに受け入れられていたんじゃないか?と思うと、ちょっと残念な仕様ですね。

<追記2012.4.2>
一度このXMPファイルを作ってしまえば、あとはコピペ複製してファイル名変更
6行目 dc:requires="~"フィギュア名部分を書き換えて作業完了。
お手軽お手軽。

Tag: <>Python <>HOWTO
Category: Poser全般

IDLで光っちゃう肌対策
※MH delAlterateDiffuse.zipのURLを2015.07.24に修正しました。


Forum3Dでの「IDLの肌の発光の抑え方について教えてください」スレをきっかけに
2つのPoserPythonツールを作成したので、このブログでも配布しますねぃ

MH ambientValue0
http://www.manihoni.net/freestuff/mh_ambientvalue0.html

MH_delAlterateDiffuse_101 (直DL/1kb)
http://www.manihoni.net/dl.php?dl=MH_delAlterateDiffuse_101

どちらもZIP解凍後に「Runtime\Python\poserScripts\ScriptsMenu\」に置いてください。
使い方は、肌の発光を抑えたいフィギュアを選択して、PoserのScriptsメニューからMH~を
選択するだけです。
どちらか一方だけ使ってもいいし、両方使ってもいいです。
私の作ったキャラセットのMATの場合はMH ambientValue0.pyだけでも十分効果がでますが、
Alice4などのように発光が著しいMATの場合は、MH delAlterateDiffuse.pyも合わせて
使わないとほとんど効果がありません。

テスト環境はPoserPro2012+Win7ですが、特殊なメソッドやGUIなどは使っていませんので
Poser8・MacOSXでも動作するだろうと思います。
マテリアルによっては期待した結果が得られない場合があります。
このスクリプトに関する動作保証及びサポートはいたしません。自己責任でご利用ください。

詳細は前述のForum3Dのスレをお読みください。


Tag: <>Python <>Free
Category: Poser全般

SkinBlender2.1公開
Poser9/Pro2012に対応したMH SkinBlender2.1をリリースしました。
このブログの右側にあるMy Productsから製品ページに飛ぶことが出来ます。
ちなみに製品ページのタイトルはベンダーが任意に修正できないのでMH SkinBlender2
ままになっておりますが、中身は2.1です。

予告通り、MH SkinBlender(Ver1.x)~SkinBlender2の全ユーザーが無料でアップデート
できるようにしました。
Renderosityのメニューから「Members > My Account > Item list」と進み、表示されたリスト
の右上にある「Updated?」をクリックするとファイルの更新日順にソートされるので、既ユーザー
の方は該当のファイルを見つけてダウンロードしてください。

<追伸2011.11.12>
MH SkinBlender(Ver1.x)購入者のItem Listのアップデータ表示ですが、ファイルそのものは
最新の「manihoni_MH_SkinBlender2_UD_119516.zip」に差換え済みのようですが、
"Updated"の日付が"04/06/10"という古い日付のままになっています。
これは、MH SkinBlenderが既に販売終了品となっているため、システム上の仕様として、この製品
に関連した日付の更新が行われなくなっている可能性が高いようです。
なお、アップデータのZIPファイルは、ファイル名から察するに最新版で間違えないと思いますが
念のため「本当に中身がVer2.1になっているかどうか」をMH SkinBlender(Ver1.x)購入者さんに
確認してもらっているところです。確認が取れ次第、確定情報としてここで告知します。

<追伸2011.11.12 その2>
既に販売終了しているMH SkinBlender(Ver1.x)購入者のItem Listに表示されるアップデータ
manihoni_MH_SkinBlender2_UD_119516.zip」の中身が間違いなくVer2.1だという
確認が取れました。(@cross_heartsさんありがとう!!)
日付に関してはシステム的な仕様だと思われますので古いままですが、ファイルそのものには
問題ありませんので安心してご使用ください。
なお、この件については再度Buyers Mailでアナウンスします。


※ダウンロードしたZIPを解凍&インストしても「MH SkinBlender v2.0.py」が残りますが、
 2.1を利用する際には不要なファイルですので削除しちゃってOKです。

あと、HTML版の説明書も2.1のものを用意しました。
変更点は主に対応するOSとPoserの組合せとその注意書きです。
↓に一般公開してますので、興味のある方はご覧下さい。

 ・日本語版
 ・英語版


うーむ、ベータテストから公開まで1ヶ月もブランクが空いてしまって申し訳ないm(_ _)m
先月半ば頃から私事でバタバタしていたので、ReadMeやHTML版説明書の英語を書く気に
なれなかったというのが最大の理由です。ホントごめん。

昨晩Renderosityへアップデートの申請をしたら、1時間も経たないうちに「ダウンロードできる
ようにしたよ」という連絡があり、そのレスポンスの速さにびっくり。
んで、すでに販売不可状態(This product is no longer available~)となっている
旧VerのSkinBlenderのItem Listにもアップデータの登録をお願いしたら、これもあっさり了承。
ぶっちゃけ「旧Verの分はsite Mailでユーザーに個別対応しないといかんかなぁ・・・」と半分くらい
諦めていたので、この対応にはすごく助かりますた。
ありがたやありがたや。

で、最後の鬼門であるRenderosityのベンダー用機能である"Buyers Mail"の送信申請。
前回利用した際は実際に送信されるまで思いっきり待たされたんで、今回どうなのかドキドキです。

<追伸2011.11.12>
"Buyers Mail"は申請から24時間後くらいに該当ユーザーへ送信された模様。
以前にMH SkinBlender Ver1.1のアップデータ配布告知でこの機能を利用した際は
送信まで1ヶ月ほど待たされたという黒歴史があるので、24時間後というのはマジびっくりです。

Tag: <>Python
Category: My Products

SkinBlender2.1ベータ
Poser9/Pro2012のVerアップにより、Pythonのバージョンも2.7.1(Win版の場合)に上がりました。
その結果、Pythonのファイルアクセス系・文字コード判定系のメソッドに微妙な変更が加わったようで、私のPythonツール製品である「MH SkinBlender2」も正常に動作しなくなりましたorz

そんなわけで、自分自身のPoser環境で使えるようにコードの修正を加えてからしばらく試用してみた後、Forum3Dにて公開ベータテストを行うことにしました。

Forum3D: MH SkinBlender2.1公開ベータテスト
http://www.forum3d.net/bbs/index.php?topic=1347.msg9970

具体的な修正ポイントは、ブレンド画像の読み込みやプリセットファイルの保存・読み込み時のファイルパス取得処理で、「パスの文字列がASCIIかどうか?」という分岐処理部分。
Python2.7.1になって何故か「ASCIIじゃねーぞ!」という判定を返すようになってしまったので、「ASCIIあるいはunicode」と判定の幅を広げてみた・・・という感じで。

で、ベータテストのポイントも、「Win7 64bit上でPoserPro2010と2012の両方とも動く」という私の環境以外の状況を確認するだけのつもりだったのですが、MacOSXとPoserPro2012の組合せではTkinterライブラリが使えないという非常事態が判明。
調べてみたところ、SmithMicroの公式バグトラッカーでも同様の報告がなされているので、特殊な環境に由来した問題ではないようです。
SmithMicroの開発側でPoserに修正を加えてくれればそれで万々歳なんですが、もし「それが仕様です」と宣言されちゃう事態になったら、GUIライブラリを「Tkinter」から「wxPython」に切替えないといけなくなるわけで、そうなるとコードの大部分を書き直しですよorz
うーん、申し訳ないけど、その場合はMacOSXとPoser9/Pro2012の組合せは動作対象外ということにさせてもらうかもしれません。
ごめんなさい。

Tag: <>WIP <>Python
Category: My Products


Create stunning models for 3D software free