ply2vrmesh が ZBrushのポリペイントデータをサポート


V-Rayのマイナーな情報を掲載するブログです。

V-Ray Next Mayaの"ベータ1"に含まれる Ply2vrmesh プログラムがZBrushの頂点カラーに対応した事をお知らせしたいと思います。 (3ds Max版のV-Ray Next 初期リリース [4.02.04]に含まれる ply2vrmeshはポリペイント非サポートバージョンです。次のアップデート時に入れ替わるでしょう。)

ちなみに「Ply2vrmeshプログラムとは何?」という方に説明すると、OBJ、Ply、RealFlowのbin、Houdiniの.geo(bgeo)、Alembic .abc、Krakatoa .prt、V-Rayシーン(vrscene)ファイル をV-Ray用のProxyメッシュ(vrmesh)フォーマットに変換するスタンドアロンのコマンド操作型プログラムです。

一般的にはV-Rayをインストールした3dsMaxやMaya、SketchUp,Rhino等から直接 vrmesh に変換する事が多いと思うのですが、V-Rayプラグインが無いソフトからのデータをvrmeshに変換したり、自作スクリプトからコントロールしたり、大量にバッチ変換したりする場合に使うのが ply2vrmesh です。

Ply2vrmesh 自体は V-Rayプラグインのインストーラーに同梱されていて、V-Ray 3dsMaxや V-Ray Maya、V-Ray SketchUp/Rhino をインストールすると自動的にコピーされます。

なお Ply2vrmesh.exe プログラムの動作にライセンスは不要です。(ライセンスをチェックしません)

Ply2vrmesh のOBJインポーターがZBrushから出力された OBJ ファイルの頂点カラーを認識する事で、「ZBrushポリペイント付きデータをOBJで出力 >> ply2vrmesh でvrmeshに変換 >> V-RayでProxyとして読み込んでレンダリング」が可能となりました。今回はその手順を簡単に紹介します。

まず、V-Ray Next Mayaの"ベータ1"をダウンロードしましょう。現在 V-Ray Next Mayaは一般ベータ中で、ChaosGroup.comアカウントをお持ちの方ならどなたでもダウンロード可能です。

こちらのURLからベータに参加して(ChaosGroup.comに予めログインが必要です)
https://www.chaosgroup.com/beta_forms/maya



V-Ray Next Maya ベータをダウンロードしましょう。

インストールします。
なお、Mayaをお持ちでなくても Standalone only を選択する事でV-Rayスタンドアロンのみインストールできます。
(V-Ray Blenderを使う場合もこちらでV-Rayスタンドアロンをインストールします)

 

Ply2vrmeshは以下の場所にインストールされています。(Windowsの場合)

C:\Program Files\Chaos Group\V-Ray\Maya [バージョン]\bin\ply2vrmesh.exe


ZBrushでの出力作業を行います。今回はハイディテールのテスト用に cvbtruong さん(https://cvbtruong.wordpress.com/ )が配布されている Irex Dinosaur を使用してみます。

https://www.turbosquid.com/3d-models/3d-indominus-rex-rig-irex-1182227


ZBrushでZPRデータを読み込み、全てのSubToolのサブディビジョンレベルを最大にセットします。(Zplugin >> SubTool Master >> Hi Res vis ボタンを使うと簡単です)
トータルのポリゴン数はおよそ 32,584,000 (3千2百万ポリゴン)ありました。



Zplugin >> Subtool Master >> Export をクリックして、OBJ形式で新規のフォルダに出力しましょう。

 

全サブツールがOBJで出力されています。(今回は D:\OBJTEST というフォルダを作成し出力しています。)

 

次に ply2vrmesh.exe で変換を行います。ply2vrmesh.exeはコマンドラインプログラムで全てコマンドプロンプトやLinix/OSXのコンソールから操作します。マウスで操作はできませんので注意してください。(ちなみにWindowsで1ファイルだけ変換するなら OBJファイルをply2vrmesh.exe上にドラック&ドロップしてもvrmeshに変換できます)

基本的には以下で使用します。引数を何も付けずに実行するとヘルプが表示されます。[] <>は不要です。

ply2vrmesh [オプション] <読み込むファイル> <書き出すファイル>

<読み込むファイル> ではワイルドカード [*] が使用できます。つまり D:\test\*.obj と記述すれば、Dドライブ >> test フォルダ内にある 全ての.obj が変換対象となります。

さらに、複数の入力ファイル(OBJ)を 1つの vrmesh として出力する -mergeFiles オプションと、そのままだとスムージングが無いので -smoothNormals オプションでスムージングを適用します。(-smoothAngleでスムージングする法線角度も指定できます)

例えば Maya 2018 Windows版デフォルトパスにインストールてある環境で、D:\OBJTESTフォルダ内のデータを全て結合して D:\objecttest\zrex_out.vrmesh として出力する場合、最終的なコマンドは以下のようになります。

"C:\Program Files\Chaos Group\V-Ray\Maya 2018 for x64\bin\ply2vrmesh.exe" -smoothNormals -mergeFiles D:\OBJTEST\*.obj D:\OBJECTTEST\zrex_out.vrmesh


ちなみに、ポリゴン量に応じて相当な時間が必要です。今回の3千2百万ポリゴンのデータの場合 Core i7-6800K 3.4Ghz で21分程かかりました。
Ctrl+C でキャンセルできます。


それでは変換された vrmesh を実際にV-Rayで使用してみましょう。ここでは V-Ray Maya を使用します。

Proxy(vrmesh)の使い方はどのアプリケーション用V-Rayでも同じですが、Rhino/SketchUpに関しては頂点カラーテクスチャーがまだ実装されていないので、Proxyに頂点カラーを適用する事ができません。Proxyにテクスチャーを貼り付けて使う事可能です。

Maya を起動しレンダラをV-Rayにセットします。
作成 >> V-Ray >> Import Proxyから 生成した vrmesh ファイルを読み込みます。

ここで注意いただきたいのは レンダー設定ウィンドウ >> Setting タブ >> System >> Dynamic memory limit が ゼロにセットされている事を確認してください。ゼロは自動調整を意味します。Dynamic memory limit が低いと、巨大なProxyデータを扱う場合非常にレンダリングが遅くなります。(が、その代わりメモリが少ないパソコンでも無制限数のポリゴンがレンダリングできます)

 

V-Ray Mayaの場合、読み込んだProxyオブジェクトには自動的に VRayMeshMtl が割り当てられてマテリアルグループを持っています。それぞれZBrushのSubToolに対応しています。各マテリアルグループに、V-Rayのマテリアルを割てましょう。ここではVRayFastSSS2マテリアルを割り当てます。

割り当てたマテリアルでポリペイントデータを使いたいチャンネルに VRayVertexColorsマップを割り当てます。

VRayVertexColorsでは、Type を "Set index (V-Ray proxys only)" にセットして、Set Index(頂点チャンネル)を1もしくは2にセットしましょう。ZBrushでUVをもっているSubToolをエクスポートした場合、チャンネル1がUVデータ、チャンネル2がポリペイント(頂点カラー)データとなります。

Proxy全てのマテリアルグループにマテリアルを割り当ててレンダリングしましょう。(必要に応じてライトもセット)V-Ray Next のIPRを使えば高速です。

頂点カラーが少し明るいと感じるかもしれません。VRayVertexColorsの前にカラー補正ノードを挿入して頂点カラーの明るさを調整します。今回はガンマ補正ノードで調整してみました。

Denoiser( NDIVIA AI Denoiserはディテールが眠くなる傾向があるので、最終レンダリングではV-Ray Denoiser がオススメ) レンダーエレメントを加えてV-Ray CPU の Progressive モードでレンダリングします。解像度 1700 x 1000 pixel、Bruteforce/LightCache[デフォルト]、Core i7-6800K 3.4Ghz で 1分19秒でした。(遅いと感じる場合は、Dynamic memory limit が ゼロにセットされている事を確認してください。)

このワークフローの利点はディスプレイスメントマップを使わない点です。ディスプレイスメントマップの設定に時間を掛ける必要がありません。単純にZBrushのハイポリそのままなので、1:1のディテールが出ます。ポリペイントなのでUVも気にする必要がありません。

また変形するオブジェクトには難しいかもしれませんが、プレビューやベイク作業、背景データ等には有用な方法かもしれません。

(OBJの連番で書き出してvrmeshの連番に変換してアニメーションとして読み込む荒業もあります。)

The following two tabs change content below.