スポンサーサイト

Category : スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

インスタンスを使ってオブジェクトを複製する

Category : DAZ Studio 4
DAZ Studio 4.5の新機能として、インスタンスというものがあります。これはオリジナルとなるオブジェクトと全く同じジオメトリとマテリアルを持ったコピーを作成する機能です。同じオブジェクトをもう一つ配置する(区別するためにデュプリケートと呼びます)のと違い、インスタンスはこれらのデータについてオリジナルを参照します。そのため、インスタンスをたくさん配置しても、PCのメモリを圧迫することはないという利点があります。

この特性から、インスタンスは地面に木をいっぱい生やしたり、町並みを組み立てたり、群集を並べたりといったことに使われることが多いです。
今回はインスタンス活用のとっかかりとしてインスタンスの作り方をご紹介し、そしてデュプリケートとの違いを検証してみたいと思います。

インスタンス SS

■インスタンスの作り方

インスタンスを使ってオブジェクトをコピーするのは簡単です。ただ、使う上でのコツなどがありますので、一緒に書いていきたいと思います。

 (1)Sceneタブでコピーしたいオブジェクト(オリジナルと呼びます)を選択します。この時、衣服を着用したフィギュアなど複数のオブジェクトをまとめてコピーしたい場合は、グループノードを作成し、それにペアレントして下さい(グループノードについてはリンク先の記事をご参照下さい)。
インスタンス 球 プレビュー オリジナルインスタンス 球 Sceneタブ オリジナル

 (2)メインメニューCreate > New Node Instance を実行します。
インスタンス メニュー インスタンス作成

 (3)オプションダイアログが出ますが、そのままAcceptします。

 (4)原点位置にインスタンスが作成されます。だいたいの場合オリジナルに重なって表示されるので、横に避けて下さい。
インスタンス 球 プレビュー インスタンスインスタンス 球 Sceneタブ インスタンス

インスタンス作成時の注意点などは次の通りです。

 ・アンドゥはできません。
 ・インスタンスを作成したノードの子ノードも全てコピーされます(設定で変更可)。つまり、フィギュアが持った小道具なども一緒にコピーできるということです。
 ・カメラやライトのインスタンスを作成することはできません。
 ・インスタンス(1ノードのみ)のインスタンスを作成することもできます(意味はなさそう)。
 ・インスタンスを削除しても、レンダリングすると出てしまいます。完全に削除するには、シーンを一度保存して読み込み直して下さい。


■複数のインスタンスの作り方

一度に複数のインスタンスを作成することもできます。

 (1)Sceneタブでコピーしたいオブジェクト(オリジナル)を選択します。この時、衣服を着用したフィギュアなど複数のオブジェクトをまとめてコピーしたい場合は、グループノードを作成し、それにペアレントして下さい。
インスタンス 球 プレビュー オリジナルインスタンス 球 Sceneタブ オリジナル

 (2)メインメニューCreate > New Node Instances を実行します。
インスタンス メニュー 複数インスタンス作成

 (3)オプションダイアログが出ますので、作成したいインスタンスの数を入力してOkします。
インスタンス オプション 複数インスタンス作成

 (4)オリジナルを先頭にして、Z-方向へインスタンスの列が並びます。
インスタンス 球 プレビュー 複数インスタンスインスタンス 球 Sceneタブ 複数インスタンス

複数のインスタンスを作成する場合、インスタンスは上から見ると次の画像のように並べられます。
インスタンス 球 プレビュー 100インスタンス トップビュー

 ・インスタンスは隣と重ならない間隔が保たれて配置されます。
 ・一列のインスタンスの数は5・7・7・9・9・11と規則的に決められています。
 ・X座標は小さい範囲でランダムに前後します。
 ・Y座標は0固定です。
 ・Z座標は列ごとに同じです。
 ・インスタンスの間隔は作成時の外接する直方体(Bounding Box)が基準となるので、フィギュアなどはポーズを取らせた上でインスタンス作成する方が良いです。


■インスタンスの操作

作成したインスタンスはParametersタブユニバーサルツールを使って操作することができます。インスタンスそれぞれに独自の変形パラメータを持ちますので、移動させたり、回転させたり、拡大縮小させたりすることができます。
インスタンス インスタンス操作 変形パラメータの編集
※インスタンスのスペキュラが消えていますが、ソフトウェアレンダリングには影響ありません。

インスタンス作成後にオリジナルに変更(ポーズ、マテリアルの変更や、パーツの追加など)を加えると、即座にそれがインスタンスに反映されます(ビューポートにマウスカーソルを持って行かないと更新されない場合もあります)。
インスタンス インスタンス操作 シェイプマテリアル変更
インスタンス インスタンス操作 小道具の追加
インスタンス インスタンス操作 ポーズの変更

ただし、フィギュアのインスタンスにそれぞれ別のポーズをとらせたり、別のマテリアルを適用したりすることはできません。
また、オリジナルの変形パラメータが初期値でなかった場合でも、インスタンスの変形パラメータはリセットされた状態になっています。そのため、GenesisでScaleが変わるモーフ(Basic Childなど)を適用した状態でGenesisノードを選択してインスタンスを作成すると、巨大な(Scale100%の)子供が出現します。

特殊なケースとしては、ジオグラフィティングを使ってオリジナルのメッシュを一部置換した場合でも、それがインスタンスに反映されます。

ParametersタブでサイドメニューInstancingをクリックすれば、そのインスタンスの設定を表示・編集することができます。
インスタンス インスタンス操作 Parametersタブ
・Instance Targetどのノードを参照するかを変更する。他のインスタンスを指定することも一応可能。
・Instance Mode「Node and Children」で指定ノードとその子ノード全てをコピー、「Single Mode」で指定されたノードのみをコピーする。
・Instance Previewオフにするとビューポートに表示しない。レンダリングでは描画される。

また、複数のインスタンスをグループ化して1つのノードにまとめるメニューもあります。
メインメニューEdit > Object(or Figure) > Incetances にある2つのメニューです。
・Group Like Sibiling Instances兄弟の(同じ親を持つ)インスタンスを1つにグループ化する。
・Break Instance Groupインスタンスのグループ化を解除する。

Sceneタブが煩雑にならないように表示を簡略化するためにあるメニューかと思われます。


■プレビュー表示を軽くする

インスタンスをいくつ作成してもメモリ使用量はほとんど増えないのですが、ビューポートのプレビュー表示にはたくさんのオブジェクトが表示されることになりますので、当然のごとくに表示が重くなります。
マシンおよびビデオカードのパワーにもよりますが、私の環境では衣服つきのフィギュアを20体もインスタンス作成すれば、マウスカーソルへの反応まで時間差が出ます。表示の重さはポリゴン数に大きく影響されているようです。
そこで、たくさんのインスタンスを作成する必要が出た場合に、プレビュー表示を軽くする方法をまとめてみました。

 (A)インスタンスのプレビューをオフにする。
 (B)ビューポート操作中の描画スタイルを変更する。
 (C)ビューポートの描画スタイルを変更する。
 (D)SubDのSubDivision Levelを下げる。

(A)は先ほどの項であった、Parametersタブでの操作です。オフにしたインスタンスがプレビューでのみ非表示になります。

(B)はビューを回転させたりしている最中の表示を切り替えます。ユニバーサルツール使用中にTool Settingsタブで設定できます。During Manipulation欄のDrawStyleを「Switch To Wireframe Box(ワイヤーフレームの外接直方体)」か「Switch To Smooth-Shaded Box(スムースシェードの外接直方体)」のどちらかに変更して下さい。どちらでも、操作中インスタンスは非表示になってしまいます。
インスタンス 描画スタイル ユニバーサルツール

(C)ビューポート自体の描画スタイルを変更してしまいます。ビューポート右上隅の描画スタイルアイコンをクリックするとメニューが出ます。ただし、これも「Wire Bounding Box」か「Solid Bounding Box」のどちらかでないと重さはほとんど変わりません。こちらもインスタンスは非表示になってしまいます。
インスタンス 描画スタイル ビューポート

(D)はGenesisフィギュアなどのSubDのかかったオブジェクトの場合に有効です。ParametersタブのサイドメニューGeneral>Mesh Resolutionをクリックし、SubDivision Levelを0にしてしまいます。この設定はソフトウェアレンダリングには影響ありませんのでご安心を。
インスタンス SubD ビューポートレベル

インスタンスのみの描画スタイルを変更できればそれが一番良いのですが。


■デュプリケートとインスタンスの比較

ここではインスタンスがどのくらい有効なのか、デュプリケートと比較してみたいと思います。
※DS4.5にはデュプリケートのコマンドがないので、同じものを一つずつ読み込んでいます。その時に便利だったのがフィギュアの服のパーツ全部と小道具をまとめてプリセットにできるWearable Presetと、シーンの一部をプリセット保存できるScene Subsetでした。

検証用に3シーン用意してみました。

 <シーン1 Jungle Troopers>
インスタンス レンダリング シーン1 オリジナル

オリジナルの頂点数 55,970
コピー前の使用メモリ量 504MB
1A オリジナル+10デュプリケート
1B オリジナル+10インスタンス

インスタンス レンダリング シーン1 インスタンス
Character:Michael 5
Costume:Genesis Supersuit , Supersuit Troopers
IBL Source:Skies of Terra Volume One

SupersuitはGenesisにピッタリフィットするBasic Suitと、それに加えていろんなシェイプに変形するSupersuitの2種類の全身スーツがセットになっています。その上たくさんのマテリアルプリセットやキャラクタープリセット、シェーダープリセット(53種も)が付属していて、簡単にヒロインやヒーロー、戦闘員などのボディスーツを作れるスグレモノの製品です。Genesisにピッタリフィットするスーツが販売できるのは、Genesisと同じベンダーであるDAZ3Dならではですね。
マスクから顔が覗いているので、中にもフィギュア入ってます。もうちょっとポーズつけたかったのですが、IKがうまく動かなくて(後日Pose Controlのせいだとわかりました)、Supersuitに付属していた直立ポーズのままです。

 <シーン2 UrbanSpawl2>
インスタンス レンダリング シーン2 オリジナル

オリジナルの頂点数 16,200
コピー前の使用メモリ量 271MB
2A オリジナル+10デュプリケート
2B オリジナル+10インスタンス

インスタンス レンダリング シーン2 インスタンス
Environment:Urban Sprawl 2 The Big City

このシーンでは街の1ブロックをそのままコピーしているので、繰り返しが目立ってしまっています。もう少し工夫して90度回転させたり、ビルごとにインスタンスを作って好きに並べれば立派な街並みができあがります。

 <シーン3 UtopiaDeckC>
インスタンス レンダリング シーン3 オリジナル

オリジナルの頂点数 27,785
コピー前の使用メモリ量 295MB
3A オリジナル+10デュプリケート
3B オリジナル+10インスタンス

インスタンス レンダリング シーン3 インスタンス
Environment:Utopia Deck C

奥への通路のみをインスタンスで長くしてみました。シャッター込みでインスタンスを作成しているので、それぞれ順番に閉めたりはできません。

それぞれのシーンについて、同じオブジェクトを複数配置した場合(デュプリケート)と、インスタンス機能で増やした場合の使用メモリ量(ワーキングRAM)とコピー時の増加メモリ量、レンダリングでの最大使用メモリ量、そしてレンダリング時間を計測しました。
使用したアプリケーションはDAZ Studio 4.5.0.114 Pro Windows 64bitで、DS4.5起動時の使用メモリ量は209MBです。
シーン使用量増加量レンダ使用量レンダ増加量レンダ時間
・1A1950MB1446MB3023MB1073MB5分10秒
・1B507MB3MB1350MB843MB3分7秒
・2A477MB206MB952MB475MB1分33秒
・2B280MB9MB698MB418MB1分34秒
・3A329MB34MB620MB291MB3分20秒
・3B300MB5MB584MB284MB3分27秒

インスタンスで増加する使用メモリ量は微々たるものです。一方デュプリケートは増やした分だけ使用メモリ量も増大します。シーン1のフィギュアはやはりポリゴン数がダントツに多いので、デュプリケート時の使用メモリ量がかなり多くなります。
レンダリング時の使用メモリ量はレンダリング前からの増加量を考えると、デュプリケートとインスタンスでそんなに差はありません。元の使用メモリ量が多い分、デュプリケートの場合は多くのメモリが必要になります。
レンダリング時間はシーン1を除けば、デュプリケートとインスタンスでほぼ同じ時間です。インスタンスとはいえ、光の当たり方や影のでき方は違ってくるので、描画が省略できるわけではないですよね。
レンダリング結果にも差はありません。

フィギュアのインスタンスについて、今度はV4フィギュアを使ったシーンでも検証してみました。その他の条件はシーン1とほぼ同じです。

オリジナルの頂点数 226,647
コピー前の使用メモリ量 621MB
シーン使用量増加量レンダ使用量レンダ増加量レンダ時間
・4A3539MB2918MB4727MB1188MB3分12秒
・4B622MB1MB1692MB1070MB2分52秒

やはりレンダリング時間はそんなに差が出ないようですね。Genesisの場合はかかっているサブディビジョン・サーフェスが影響しているのかもしれません。


■インスタンスまとめ

インスタンスの特性をまとめるとこんな感じでしょうか。

 (1)アプリケーションの使用メモリ量はほとんど増加しない。
 (2)プレビューの重さはデュプリケートの場合と変わらない。
 (3)レンダリング時の使用メモリ量は(1)の分少なくて済む。
 (4)レンダリング時間はデュプリケートの場合とほとんど変わらない。

DS4.5の標準機能ではとりあえずインスタンスで増やす、ということしかできません。複数インスタンスを作成する際の並べ方を変えられたり、凸凹の地形に接地させる機能があれば使いやすくなるでしょう。また、作成した複数のインスタンスを操作するツールなども欲しいところです。
地形オブジェクトを作成し、そこへ小道具を配置する機能を持つInfinitoというプラグインがありますが、インスタンスへの対応はバージョン2.0からになるそうです。



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

Michael 5

Genesis Supersuit

Supersuit Troopers

Skies of Terra Volume One

Urban Sprawl 2 The Big City

Utopia Deck C




Comment

非公開コメント

著書
カレンダー
06 | 2017/07 | 08
- - - - - - 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 D-Form ERC ファー Miki2 IDL M4 大気 物理シミュレーション ボリューム Terrain パーティクル カラーコレクション Genesis3 モーフセット インスタンス アナグリフ V5 カメラ ロボット RAMDisk ダイナミックヘア Hexagon GIMP 3Dプリント SLG モーションキャプチャ Python K4 Linux 日本語訳 

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

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

ブロとも申請フォーム

この人とブロともになる

最新トラックバック
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。