Ready to Renderスクリプト

Category : Tips
ご挨拶が遅れてすみません。あけましておめでとうございます。
昨年はDAZ Studio 4とGenesisの登場で、記事の焦点が絞りきれていないちぐはぐな状態になってしまいました。今年は初心に戻り、じっくりと知識を蓄積していきたいと思っていますので、どうぞよろしくお願いします。

さて先日、DAZ Studio 4.0.3.36がリリースされました。CR2ExporterやShader Mixer、Morph Loader Proなどのバグフィックスや機能改善が行われています。このバージョンとPoser 9/Pro2012のSR1の組み合わせで、Genesisやその衣服をPoserへまともに持って行くことができるようになったのではないでしょうか?(4.0.3.38Betaではさらに改善されています)
このバージョンの追加要素として、「Ready to Render (RTR)」というものがあります。これは簡単に言うと、1ファイルを読み込むだけで、あとはレンダリングするだけの状態にあらかじめ用意されたシーンを作成してくれるスクリプトです。サンプルシーンとして、チュートリアルとして配布されている『Fiery Genesis』、その構成を少し変えた『Fiery Genesis 2』、ドラゴンと男戦士が戦う『Dragon Slayer』の3シーンのRTRスクリプトが添付されています。

今回はまずRTRスクリプトで用意されたシーンをベンチマークとして使い、そのレンダリング時間を計ってみます。さらにRTRスクリプトの記述を解析し、自作してみます。

RTR SS

※CR2Exporterの内容についてDAZ Studioのバージョンが間違っていたのを修正しました。
※DSONフォーマットのシーンファイルの実装により、このスクリプトは役目を終えました。DS4.5以降では、今回ご紹介しているRTRファイルも通常のシーン保存データに置き換わっています。

■RTRスクリプトの使い方

まず、注意点としてRTRスクリプトを実行するためには以下の条件が守らなければいけません。

 (1)CMS(Content Management Service)が動いている
 (2)読み込まれるファイルを初期位置から移動させていない

(1)はSmart Contentタブが表示できればOKです。(2)について、RTRスクリプトはいくつかのファイルを読み込むため、その位置が変わっているとロードに失敗します。ただしコンテンツディレクトリまるごとの変更なら大丈夫です。

サンプルとして用意されているRTRスクリプトはSmart ContentタブのScenesにあります(選択状態だとそのメニューが表示されないことがありますので、ビューポートの何も無い場所をクリックするなどして選択を解除してください)。

RTR Smart Contentタブ

3つのRTRスクリプトがありますので、今回は『Ready to Render - Dragon Slayer』を読み込んでみましょう。アイコンをダブルクリックするだけで、次々とフィギュアや小道具が読み込まれていき、しばらくすると次のようなシーンができあがっています(DSのウィンドウ右下のプログレスバーが伸びきったら終了です)。このスクリプトは最初にシーンをクリアしますので、作業中のデータを消してしまわないようご注意下さい。

RTR プレビュー DragonSlayer

あとはレンダリングを実行するだけです。ポチッと。

RTR Render DragonSlayer

ベンチマーク結果は以下のようになりました。レンダリング時間はメインメニューHelp > Troubleshooting > View Log File を実行してログファイルの最後の方に記録されたものを使っています。

CPU: Intel Core i5-2500K 3.3GHz 4Core
Memory: 16GB
OS: Windows 7 Professional SP1 64bit
Application: DAZ Studio 4.0.3.36 Pro 64bit
Total Rendering Time: 3m12s

フルシーンにしては3分12秒とレンダリングが早いですが、これは、半透明テクスチャを張ったサーフェイス(髪など)がレンダリング画像に占める面積が小さい、Shading Rateが2.0に設定されている、という2つの理由からでしょう。試しにShading Rateを0.2に設定(Render SettingsタブのAdvanced)してレンダリングした結果は次のようになります。

Total Rendering Time: 9m12s

Shading Rateはテクスチャや影の鮮明さに影響します(低いほど鮮明)ので、レンダリング画像を比べてみるとドラゴンの胴体の凹凸などにはっきりと差が見られます。


■RTRスクリプトの仕組み

RTRスクリプトはDAZスクリプトのテキストファイルになっていますので、テキストエディタで中を見ることができます。ファイルの実体は初期設定ではMy Library\DAZ Studio Tutorialsフォルダ内にあります。では「Ready to Render - Fiery Genesis.dsa」の中を見てみましょう。
スクリプトファイルなのでいろいろと難しそうな記述が書いてありますが、重要なのは16行目からの部分です。

// Status Label, Name of Object to Select, Asset Relative Path, Directory Type for Asset, Whether to Merge, Whether to Supress PowerLoader
var aAssets = [
["Genesis Basic Female",undefined,"People/Genesis/Characters/Basic Female.dsf", oContentMgr.NativeDirs, false, false],
["Genesis Pose","Genesis","DAZ Studio Tutorials/Fiery Genesis/POSE Fiery Genesis.dsa", oContentMgr.NativeDirs, true, false],
 (中略)
["Lights",undefined,"DAZ Studio Tutorials/Fiery Genesis/LIGHT Fiery Genesis.dsa", oContentMgr.NativeDirs, true, false],
["Camera",undefined,"DAZ Studio Tutorials/Fiery Genesis/CAMERA Fiery Genesis.dsa", oContentMgr.NativeDirs, true, false],
["Render Settings",undefined,"DAZ Studio Tutorials/Fiery Genesis/RENDER SETTINGS Fiery Genesis.dsa", oContentMgr.NativeDirs, true, false]
];

var sActiveView = "Camera 1";
var sBackground = String( "%1/Fiery Genesis/Fiery Background.jpg" ).arg( oFile.path() );
var sLastSelect = "Genesis";


※タブ文字は削除してあります。

aAssetsとして定義されているのが読み込むファイル([から]までで1ファイル)です。実はこのスクリプトは他のファイル(Fiery Genesisフォルダ内に保存されたたくさんのプリセットファイルなど)を読み込んでシーンを組み立てています。このスクリプトの場合は最初にGenesisの女性キャラクタープリセットを読み込み、それにポーズを適用、衣服や髪の読み込みとマテリアルの適用、そして最後にライトとカメラ、レンダリング設定のプリセットを読み込んでいます。
以前『衣服などを一発ロードするスクリプトを作る』で参考にしたDS2のQuickStartチュートリアルのスクリプトファイルと似ていますね。DS4ではレンダリング設定もプリセットとして保存できるようになったので、レンダリング直前までシーンを組み立てることができるようになっています。
読み込むファイルの記述フォーマットは次のようになります。

["ラベル","適用先オブジェクト","ファイルパス",パスのタイプ,マージするかどうか,PowerLoaderがあるかどうか],

・"ラベル"ファイルを識別するための名称。分かりやすいものならなんでも。重複可。
・"適用先オブジェクト"マテリアルの適用先など、ファイル読み込み時に選択すべきオブジェクト名(内部名)。なければundefined
・"ファイルパス"コンテンツディレクトリの位置を基点としたファイルパス。Poserコンテンツの場合はRuntime/から始まる
・パスのタイプDSコンテンツならoContentMgr.NativeDirs、PoserコンテンツならoContentMgr.PoserDirs
・マージするかどうか詳細不明。最初のファイルはfalseでそれ以降はtrueになっています
・PowerLoaderがあるかどうかDAZ第4世代フィギュア読み込み時のPowerLoaderの設定

適用先オブジェクトについて、これはDS内部で使われるオブジェクト名でないといけません。ウェイトマップ・フィギュアはSceneタブなどに表示される名前そのままなことが多いですが、それでもダメな場合もあります。調べる時はSceneIDエディターが利用できますので、以下のようにして下さい。

 (1)Sceneタブで内部名を調べたいオブジェクトを選択する。
 (2)Sceneタブのオプションメニューから Edit > Scene ID Editor を実行する。
 (3)表示されるダイアログでScene IDの最後の#より後の単語を確認する

RTR_SceneID
上の画像の場合はChelseaHairが内部名になります。

Power Loaderの設定については今一つ効果が分からないのですが、Power Loaderと関係ないものならfalseで結構です。Dragon SlayerのシーンではSubDragonを読み込む際にtrue, "SubDragon"と記述されていますので、V4の場合はtrue, "Victoria 4"、M4の場合はtrue, "Michael 4"となるのではないかと思います。

読み込むファイルの定義の次は、その他の定義の部分になります。
sActiveViewはビューポートで表示するカメラ名(それに切り替わります)
sBackgroundはバックドロップの設定
sLastSelectは最後に選択するオブジェクト名になります。
特に指定する必要が無ければヌル("")にしておきます。


■RTRスクリプトを自作する

以前『衣服などを一発ロードするスクリプトを作る』で作成したように、RTRスクリプトを改変すれば自分の持っているアイテムを読み込むようにできます。
サンプルのようにシーン全部を構築するまでいかなくても、キャラクターのモーフやマテリアルの適用まで、またはパーツの多い衣服を一括ロードする、などいろいろな使い方ができそうです。

スクリプト実行時にシーンをクリアしたくない場合は49行目(「Ready to Render - Fiery Genesis.dsa」の場合)のScene.clear();を消すかコメントアウト(行頭に// を追加)して下さい。

例としてベースフィギュア読み込みからキャラクター「Manami」の適用と衣服「Genesis Basic Wear for Women」を着せるまでをRTRスクリプトにしてみました。

// Status Label, Name of Object to Select, Asset Relative Path, Directory Type for Asset, Whether to Merge, Whether to Supress PowerLoader
var aAssets = [
["Genesis",undefined,"People/Genesis/Genesis.dsf", oContentMgr.NativeDirs, false, false],
["Manami_Full_Std","Genesis","People/Genesis/Characters/Manami/Manami_Full_Std.dsa", oContentMgr.NativeDirs, true, false],
["!Mat_Apply_No_PB","Genesis","People/Genesis/Characters/Manami/Mat_Apply_Only/!Mat_Apply_No_PB.dsa", oContentMgr.NativeDirs, true, false],
["B25SportsBra","Genesis","People/Genesis/Clothing/Bobbie25/B25BW/B25SportsBra.dsf", oContentMgr.NativeDirs, true, false],
["SportsBra MAT05","B25SportsBra","People/Genesis/Clothing/Bobbie25/B25BW/Materials/05_SportsBra.dsa", oContentMgr.NativeDirs, true, false],
["B25Shorts","Genesis","People/Genesis/Clothing/Bobbie25/B25BW/B25Shorts.dsf", oContentMgr.NativeDirs, true, false],
["Shorts MAT05","B25Shorts3","People/Genesis/Clothing/Bobbie25/B25BW/Materials/05_Shorts.dsa", oContentMgr.NativeDirs, true, false],
["Chelsea Hair","Genesis","People/Genesis/Hair/SWAM/Chelsea Hair/Chelsea Genesis.dsf", oContentMgr.NativeDirs, true, false],
["Chelsea Hair MAT08","ChelseaHair","People/Genesis/Hair/SWAM/Chelsea Hair/MATs/Color 08.dsa", oContentMgr.NativeDirs, true, false]
];

var sActiveView = "";
var sBackground = "";
var sLastSelect = "";



実際に使用するにはサンプルのRTRスクリプトをコピーして、該当箇所を上のように置き換えます。
これを実行すると次のようにシーンにキャラクターが読み込まれます(もちろん、使用されているアイテムがインストールされていなければ動作しません)。よく使用するキャラクターなどをRTRスクリプトにしておけば、一つ一つ読み込む手間が省けますね。

RTR プレビュー Manami
※余談ですがこの服、ベースシェイプしかなく、フィギュアとのフィットは全てDS4の自動生成とSmoothing Modifier任せです。ピッタリフィットする服とはいえ、せめてV5や初期全身モーフなどの代表的なモーフにはフィットモーフを作成して欲しいところです。

モーフの適用など、オリジナルの設定はプリセットファイルとして書き出しておき、それを読み込むようにして下さい。プリセットファイルの保存方法はこの記事(DSF版)この記事(DAZスクリプト版)をご参照下さい。


Manami

Genesis Basic Wear for Women

Chelsea Hair




Comment

非公開コメント

著書
カレンダー
08 | 2017/09 | 10
- - - - - 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
検索フォーム
プロフィール

Kotozone

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

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

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

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

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

ブロとも申請フォーム

この人とブロともになる

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