FC2ブログ

衣服などを一発ロードするスクリプトを作る

Category : Tips
DAZ3Dなどで販売されているフィギュア用の衣服はとてもクオリティが高く、ユーザーが細かく調整できるように配慮がされています。しかし、たくさんのパーツに分かれている場合も多く、フィギュアに着せるのが大変です。また、それに加えて、マテリアルをさらに適用しなければいけないものもあります。さらにDAZ Studio(以下DS)ではDS用マテリアルが別に用意されていたりもします。

今回は、一つ一つのパーツやマテリアルなどを読み込む苦労を大幅に軽減し、ダブルクリック一発でその衣服に含まれる複数のパーツを読み込み、着用、さらにマテリアルの適用もやってしまうDAZ Studio用スクリプトを作ろうという企画です。

QuickLoad SS

※DS4.5以降では、このスクリプトと同様の動作をするウェアラブル・プリセット(Wearable(s) Preset)を利用することができます。


■概要

例えばV4用のこの『ToolGirl』という服、トップス、ボトム、ヘルメットなど最大7種類のパーツを着せるようになっています。Contentタブを見ると、このようにアイテムがずらっと並んでいます。
QuickLoad Toolgirl コンテンツ

そこで、今回製作するスクリプトを使うと、この状態から、
QuickLoad 例1 スクリプト実行前

スクリプトファイル1つを読み込むだけで、ここまで進みます。
QuickLoad 例1 スクリプト実行後

これを思いついたのは、DSのチュートリアルで使うQuickStartのシーンからです。
QuickStartアイコン
この「QuickStart Scene」というアイテムをダブルクリックするだけで、フィギュア、衣服、背景、小道具などを読み込み、ポーズやマテリアルの適用、ライトの読み込みまで一気にしてしまいます。
幸いそのファイルはテキスト形式でしたので、ちょっと中身を覗いてみたところ、これはいけそうだと思い調べてみる事にしたわけです。


■スクリプトの仕組み

QuickStart Scene.dsaの中身をテキストエディタで見ながら、どういう風にスクリプトを書けばいいのか調べていきましょう。ただ、私はC言語をほんの少しかじった事があるだけなので、用語とか間違っているかもしれません。

function safeOpenFile(path)


ここから続く十数行でsafeOpenFile()という関数を定義しています。

// Scene State:
var oContentMgr = App.getContentMgr();
var oImportMgr = App.getImportMgr();

var oSelectedNode;


変数を定義しています。ここまでは、そのまま使います。

safeOpenFile("/Character/DAZ People/Victoria 4.2 QuickStart.cr2");


この行がキーであり、シーンにアイテムを読み込む命令になっています。

safeOpenFile("ファイル名");


で、Poser用データなら\Runtime\Librariesより下の、DS用データなら\contentより下のファイルパスを付けてファイルを指定すればOKです。パスの区切りは"/"(スラッシュ)を使います。なんとアイテムはランタイムにあるものなら何でも読み込めるようです。
それが着用(Fit to)できるものなら、スクリプトを実行する前に選択していたフィギュアに着用されるようにもなっています。
この行を複数記述して、衣服のパーツを読み込み、フィギュアへ着用させていくことができます。

Scene.selectAllNodes( false );
oSelectedNode = Scene.findNode( "GlamourHairV4_21847" );
if( oSelectedNode )
{
oSelectedNode.select( true );
safeOpenFile("/pose/MAT GlamourHair/GlamourHair 05.pz2");
}


ここでは、シーン内のアイテムの選択と、それへ対するポーズファイルの適用を行っています。

Scene.selectAllNodes( false );
oSelectedNode = Scene.findNode( "アイテムの内部名" );
if( oSelectedNode )
{
oSelectedNode.select( true );
safeOpenFile("ポーズファイル名");
}


この"アイテムの内部名"というのがポイントで、どうやら、DS内部ではそれぞれのアイテムをユニークな名称で呼んでいるようなのです。例えば、Victoria 4.2のフィギュアなら「blMilWom_v4b_68498」になります。これは、「ジオメトリ名_頂点数」という組み合わせになっているようです。
この内部名を知らなければスクリプトを書くことができないのですが、今回はシーンを保存した時にできるジオメトリデータのフォルダ名から調べます。これは、DSランタイムのdataフォルダ内に保存されていますので、そこを見てスクリプトに組み込みたいアイテムの内部名を調べてください。
もっと簡単に調べられればいいのですが…。

※もう一つの確認方法として、『Figure Setup Tools』に含まれるSkeleton Setupツールを使う方法があります。Skeleton Setupタブのオプションメニューから「Copy From Selected Figure」でシーン内のフィギュアを読み込めば、Name欄に内部名が表示されます。

そしてアイテムを選択した状態でsafeOpenFile()関数を使い、ポーズファイルを読み込んでいるわけですね。
ただし、同じアイテムがシーンに複数存在する時は、最初に読み込んだアイテムに対してポーズファイルが適用されることになります。

これをまとめて繰り返し必要なアイテム分記述します。

これらを組み合わせて作成したスクリプトを適当な名前で保存して、拡張子を.dsa(DS3の場合)にし、Contentタブから見える場所に置けば完成です。


■スクリプト例

実際に私が作成した(変更しただけですが)スクリプトを公開します。よろしければどうぞ~(そのままでは動作しません。詳細は同封のドキュメントをお読み下さい)。



3つのスクリプトファイルが入っています。
・QuickLoad_C_V4SportsBra.dsaDSと共にインストールされる『Basicwear for V4』の簡易版を読み込みます。着用させたいフィギュアを選択した状態でスクリプトを読み込んで下さい。
・QuickLoad_C_V4Toolgirl.dsaBadKittehCoさんのワーキングガール服『ToolGirl』を読み込みます。着用させたいフィギュアを選択した状態でスクリプトを読み込んで下さい。
・QuickLoad_F_V4Rain.dsaまにほにさんのV4キャラクター『MH Rain for V4』を適用した状態でフィギュアを読み込みます。必要最低限のモーフ(とBaseモーフ)だけを読み込むようになっていますので、スクリプトを読み込んだ時にPowerLoaderが開く場合は、モーフすべてのチェックを外し、Generate ExP filesオプションを「Include Support for All Listed Products」にした状態でAcceptして下さい。

これらは、該当商品をインストールしていなければ、まったく働きません。また、どのランタイムにインストールされていても構いませんが、インストール後にファイルを移動させていた場合も読み込めなくなります。
これらのスクリプトを元にいろいろな衣服のものを作ってみてください。とても便利ですよ!!
また、なんでも読み込めるので、使い方次第でいろんなことに応用できると思います。

最後に『Toolgirl』でシーンを作ってみました。
この服は以前この記事でご紹介した『Bootleggers for V4』と同じ作者のもので、髪や地面、はしごも含まれています。DSでもPoserと同じかそれ以上のクオリティのレンダリングができるように調整されているのがうれしいですね。
QuickLoad ToolgirlV4AGNA
Character:Agna for V4 by Third Degree
Costume:ToolGirl
Light:Light Dome PRO 2.0




今回の画像の素材はこちら

Light Dome PRO 2.0

Agna for V4 by Third Degree

AD MH Rain for V4
MH Rain for V4




Comment

なるほど!スクリプトでフィギュアのロードから着用まで制御できると、いろいろ面白いこともできそうですね。馬を選択した状態でロードすると自動的に乗馬のポーズが適用されるとか、そういう芸当もできそうです。

私の場合は超手抜きで、よく使うキャラだけを保存したシーンファイルをContentフォルダ階層の中に突っ込んで使ってました。(;´∀`)

DSで扱えるものならなんでも読み込めそうなので、用途はいろいろ考えられそうですよね。
しかもデータとしてはテキストファイル1つなのもうれしいところです。
スクリプトファイルを見ても、なが~い前準備(?)の部分で挫折してしまう私ですが、今回のはコンパクトになっていて理解できました。とうふさんがDAZスクリプトを書かれる時は、基にするものとか、お約束な記述とかあるんですか?

私も、pmdモーフを使うキャラなどはPoserの方で組み込んだものを保存して使ってたりしました^-^

私もスクリプトを1から組むことはまずありません。シェーダープリセットやライトプリセットの出力がスクリプト形式なので、それに手を加える形で作ってます。(どれも似たようなコードなので、わりとパターンが決まってます)
それでも、スクリプトIDEのヘルプを見ながら試行錯誤の繰り返しでした・・・(;´∀`)

とうふさんお答えありがとうございます。
なるほど、プリセットから始めるのですか。メモメモφ(^-^)
非公開コメント

著書
カレンダー
09 | 2019/10 | 11
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
検索フォーム
プロフィール

Kotozone

Author:Kotozone
製品の取扱説明書を読むのが大好きです

FC2ブックマーク
最新記事
カテゴリ
タグリスト

DSプラグイン V4 ライト マテリアル DSシェーダ DS基本 セール Genesis IBL アニメーション タブ解説 iray LuxRender ダイナミッククロス スクリプト Genesis2 ShaderMixer セットアップ バージョンアップ Download レタッチ カスタマイズ トゥーン SSS Photoshop ウェイトマップ NGM ファー 物理シミュレーション ERC D-Form Miki2 IDL 大気 M4 カラーコレクション ボリューム Hexagon Terrain パーティクル Genesis3 モーフセット Genesis8 V5 カメラ アナグリフ インスタンス GIMP 3Dプリント ロボット RAMDisk SLG ダイナミックヘア K4 V8 Python モーションキャプチャ Linux 日本語訳 

最新コメント
リンク
月別アーカイブ
ご意見ご感想はこちらに

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

ブロとも申請フォーム

この人とブロともになる

最新トラックバック
FC2カウンター