====== V-Ray Scene を使ってアプリケーション間でデータをやり取りする方法 (V-Ray 3.5 以降) ======
{{ :chaosgroup:v-ray:tute:loft_max_maya_01.jpg?direct&600 |}}
===== 初めに =====
3Dアプリケーション間でシーンを移動するのは容易ではありません。FBXフォーマットはアプリケーション間でデータをやり取りする良いソリューションの1つですが、変換できるのは多くの3Dアプリケーションが持つ極基本的なデータだけという制限があります。もちろんの事ながら FBX では V-Rayのライトやマテリアルの情報は無視されてしまいます。V-Rayでは 3.5 から新しく「V-RaySceneオブジェクト」を使ってこの問題を解決する手段をテストしています。
===== V-Ray scene オブジェクトとは? =====
V-RayはV-Rayのみで扱える独自のファイルフォーマットを持っています。最もよく知られているのはProxyオブジェクト用の**V-Rayメッシュファイル(.vrmesh)**です。これは巨大なジオメトリデータをオンデマンドでメモリにロードする為のフォーマットです。このフォーマットは非常に巨大で大量のオブジェクトをシーンで扱う場合に威力を発揮します。しかしながらこのフォーマットは単にジオメトリ形状だけを格納します。マテリアル情報は含まれていません。
V-Ray Sceneファイル(.vrscene)はVRMESHファイル程知られていませんが、V-Ray 3.5で大きくアップデートされました。このフォーマットではvrmeshではできない問題を解決します。
vrsceneファイルは元々 V-Rayのスタンドアロンでレンダリングする為のファイルで、レンダリングに必要な全ての情報を格納しているフォーマットです。つまり一旦vrsceneに出力してしまえば 3Dアプリケーションは不要で、v-rayスタンドアロンだけでレンダリングできます。
===== V-Ray scene を3Dアプリケーションで読み込む? =====
V-Ray 3.5 より「V-Ray Sceneオブジェクト」が新しく追加され vrsceneデータを読み込む事が可能になりました。ある 3Dアプリケーションから vrscene を出力すれば、レンダリングに必要な殆どの情報を含めて別の3Dアプリケーションに読み込む事ができます。
==== 現在どのようなデータが読み込めるのか? ====
現在 vrscene 経由で読み込まれるデータは以下です:
* ジオメトリ (UV含む)
* マテリアル(VRayShaders)
* ライト(※)
* Hair
* アニメーション(フレームにベイクされた物)
※全てのアプリケーションがvrsceneからライトを読み込めるとは限りません。3.5現在、mayaではvrsceneからライトを読み込めますが、3dsMaxはvrsceneからライトを読み込む事ができません。
==== vrsceneでも読み込めないデータは? ====
VRsceneオブジェクトは 3dsMaxでは1つのオブジェクト、Mayaではシングルノードでシーンに存在します。その為 vrsceneの中の要素を3Dアプリケーション側で取り出して操作する事はできません。
* 個別のシェーダー
* 個別のライト
* カメラ
* 個別のオブジェクト (ジオメトリはvrmeshのように1塊になっています。)
* アプリケーションに特有のVRayプラグインノードに依存する要素は読み込めません。しかしながらVRayStandaloneでレンダリングできる要素は読み込める筈です。
注)オーバライド機能を使って VRaySceneオブジェクトの特定要素を選択して変化させる事は可能です。後ほど詳細を解説します。
===== どのような時に利用される? =====
V-Ray Sceneオブジェクトは次のようなケースで有用です。
==== VFXスタジオ間でのアセット共有 ====
例えばスタジオAとBで同じ映画を作成しているとします。スタジオAではV-Ray Mayaをメインに背景(シーン環境)を作成し、スタジオBでは V-Ray 3dsMaxをメインにキャラクターアニメーションを作成しています。スタジオAはシーンを vrscne ファイルで出力します。スタジオBは受け取ったVRsceneオブジェクトを使って背景を配置します。V-Rayのマテリアル、オブジェクトを含めてそのまま複雑な背景が再現されるでしょう。スタジオBでは背景を含めたライティングを自在に変更可能です。
{{:chaosgroup:v-ray:tute:tools_maya_01.jpg?direct|}}\\ V-Ray for Mayaでのレンダリング (vrsceneを出力)
{{:chaosgroup:v-ray:tute:tools_3dsmax_01.jpg?direct|}}\\ V-Ray for 3dsMaxで vrsceneを取り込み、ライティングを変更してレンダリング
==== 素材集を活用する ====
例えば 3dsMax用に販売されているシーンを 3dsMaxで一旦 vrscene に出力します。(そのうちvrscene形式で素材集が発売されるかもしれません)そのまま Mayaでvrsceneを配置すれば質感等そのまま持ち込めます。また、VRscene オブジェクトをMaya内で複製して複数配置する事も可能です。
===== 3ds Max から Maya にデータを持ち込む =====
V-Ray 3dsMax 環境では上部「V-Ray」メニュー>".vrscene エクスポーター"から出力する事ができます。オプションでアニメーションも含めて出力できます。(詳細はV-Ray 3dsMaxドキュメントページを参照ください)\\ {{:chaosgroup:v-ray:tute:2024-12-25_111503.jpg?nolink|}}
V-Ray 5以前ではクアッドメニューの ".vrscene export" からvrsceneを出力する事ができます。\\ {{:chaosgroup:v-ray:tute:quadmenue_vraysceneexport3dsmax.jpg?direct|}}
Maya では **作成メニュー >> V-Ray >> Scene Manager** から読み込みます。もしくは V-Rayシェルフのアイコンからもアクセスできます。
ノードは自由に配置する事ができますが、他のアプリケーションと完全に位置を一致させたい場合は 0,0,0 に配置してください。
{{:chaosgroup:v-ray:tute:maya_scenemanager.jpg?direct|}} {{:chaosgroup:v-ray:tute:scenemanagericon.jpg?direct|}}
{{ :chaosgroup:v-ray:tute:scenemanager.jpg?direct |}}
なお、3dsMaxは Z-up で Mayaは通常 Y-up です。V-Rayはvrscene objectで自動的にUP軸をセットしますが明示的に軸の反転を有効/無効にする事ができます。
===== Maya から 3ds Max にデータを持ち込む =====
Mayaでのvrsceneの書き出し方法は3dsMaxと少し異なります。最初にレンダリング設定を開き、**共通**タブ内の **Translator** セクションを開きます。**"Export to a .vrscene file"**のチェックを有効にするとvrsceneの書き出しオプションが表示されます。なお書き出しは「レンダリングの実行」時に行われます。レンダリングを行わず vrsceneだけ書き出したい場合は "Render" のチェックを外してください。(MELスクリプトから実行する場合は vrend コマンドを実行します)
{{ :chaosgroup:v-ray:tute:maya_common_translators.jpg?direct |}}
3dsMaxでは V-Rayオブジェクトから **VRayScene** オブジェクトを作成し vrscene を読み込みます。ノードは自由に配置する事ができますが、他のアプリケーションと完全に位置を一致させたい場合は 0,0,0 に配置してください。
{{ :chaosgroup:v-ray:tute:3dsmax_srcene_objects.jpg?direct |}}
===== vrscene オブジェクトの内容を変更するには =====
V-Ray Sceneオブジェクトでは **オーバーライド・スニペット(Override Snippet)**機能を使って vrscene の内容を変更する事ができます。※ V-Ray Mayaでは ver 3.5 から追加されます。
{{:chaosgroup:v-ray:tute:mayasnipet.jpg?direct|}}
{{:chaosgroup:v-ray:tute:snipet.jpg?direct|}}
例えば Override Snippet に以下のような構文を記述します。すると vrscene の内容は全て新しく作成した Clay(ライトグレー)のマテリアルに置き換えられます。
// 新しくライトグレーの clayMtl を作成
BRDFDiffuse clayBrdf {
color=Color(0.35,0.35,0.35);
}
MtlSingleBRDF clayMtl {
brdf=clayBrdf;
}
// 全ノードプラグインのマテリアルをclayMtlに上書き
Node <*> {
material=clayMtl;
}
{{:chaosgroup:v-ray:tute:tools_3dsmax_clay_01.jpg?direct|}}\\
Mayaから3dsMaxにvrsceneを読み込みClayシェーダーに置き換えてレンダリング
オーバーライド・スニペットの例
|
// マテリアルの上書き例
//
// 新しくシェーダーマテリアルを作成
BRDFLight shadelessBrdf {
color=Color(0.15,0.35,0.35);
affect_gi=false;
}
MtlSingleBRDF shadelessMtl {
brdf=shadelessBrdf;
}
MtlWrapper shadelessMtlAlpha {
base_material=shadelessMtl;
alpha_contribution=-1;
}
// 新しく clayMtl を作成
BRDFDiffuse clayBrdf {
color=Color(0.35,0.35,0.35);
}
MtlSingleBRDF clayMtl {
brdf=clayBrdf;
}
// 全てのプラグインノードを上書き
Node <*> {
material=clayMtl;
}
// パターンマッチングでの上書き例
//
Node <*SphereShape[1-2]*> {
material=shadelessMtlAlpha;
}
Node <*SphereShape5*> {
material=shadelessMtlAlpha;
}
GeomStaticSmoothedMesh <*> {
edge_length=8;
}
GeomDisplacedMesh <*> {
edge_length=8;
}
|
// 名前の完全一致による上書き例
//
// pSphereShape1@node のトランスフォームを上書きします。
Node pSphereShape1@node {
transform=Transform(Matrix(Vector(0.5, 0.0, 0.0),
Vector(0.0, 0.5, 0.0),
Vector(0.0, 0.0, 0.5)),
Vector(0.0, 0.0, 0.0));
}
// 新しいテクスチャーイメージに上書き
//
BitmapBuffer MyBitmap {
color_space=2;
file=”/Users/car_scene/Textures/carbon01_3.jpg”;
gamma=1;
}
UVWGenMayaPlace2dTexture MyMapping {
repeat_u=5;
repeat_v=5;
uvw_channel=0;
}
TexBitmap MyBitmapTexture {
bitmap=MyBitmap;
uvwgen=MyMapping;
}
// "VRayMtl1@diffuse"プラグインの "color_tex" パラメーターを
// "MyBitmapTexture" に上書き
BRDFDiffuse VRayMtl1@diffuse {
color_tex=MyBitmapTexture;
}
// マテリアルの上書き IN 3DS MAX
//
// “test_override” というマテリアルを3dsMaxで作成し
// VRayScene objectに割当て
// 全てのプラグインノードに3ds maxネイティブマテリアルを割り当て
Node <*> {
material=test_override;
}
|
===== 最後に =====
vray scene はジオメトリ、マテリアル、シェダー、ライティングまで含めてデータを移動できるので、多数のプラットホームにまたがったワークフローでは非常に便利に利用いただけます。
vrscene ファイルはテキストフォーマットなのでスタジオで十分に解析する事ができるでしょう。プロダクションで役立つ事を期待しています。