2025年2月19日水曜日

VectorDisplacementとは

今回はVector Displacementについて紹介していきます。

板ポリからこんな感じで形状を起こせるものになってます!

それでは見ていきましょう。

VectorDisplacementとは?

モノクロのDisplacement Mapは法線方向への頂点移動で形状を変化させますが、VectorDisplacementは法線方向以外にも頂点を移動させることができます。

実際にマップを作成してレンダーしてみましょう。

Zbrushで作ったモデルがこちら

この形状をDisplacementで再現します。



板ポリを準備してArnoldでレンダリングするとこんな感じです。

当然平坦です。

これにZbrushで書き出したVector Displacementをアサインすると

こうなります!

形状が再現できていますね!

ちなみに通常のDisplacementも書き出してみると

こんな感じになります。

アーチがつぶれちゃってるのがわかるかと思います。

これがDisplacementとVector Displacementの違いです。

Mapの見た目


左がVector Displacement Map、右がDisplacement Mapです。

Vectorは3軸あるので、RGBの3チャンネル持ったマップになります。

ちなみにこのVector Displacement MapはTangent Spaceです。

Vector Spaceについては次で説明します。


Vector DisplacementのVector Space


Vector DispalcementにはVector Spaceというものがあります。

これはどの座標系を基準にVector Displacementを適用するかを定義するものです。

MayaのDisplacement Shaderだとここにあります。


Vector Spaceは3種類あります。

Tangent Space

アニメーションされたキャラなどに適用するのに最適なものです。

業務ではこれしか使ったことがありません。

Object Space

動かないものに適用することができるものです。

アニメーションには向きません。

World Space

シーン全体のワールド座標を基準として適用します。

特殊な表現をする場合に使えるかも?


Tangent以外は使用したことがないのですが、基本的にTangentにすれば普通のテクスチャと同じように扱えるので管理もしやすいと思います。


プロダクションモデルの注意点

Vector Displacementの形状再現度の高さはわかっていただけたかと思います。

しかし、業務では大きな形状変化はほとんど使わないと思います。

アニメーションモデルから形状が大きく変わると、アニメーションがOKになってライティングして、レンダリングしてみると思わぬめり込み、エラーが発生することがあります。

Vector Displacementを使うとしても、通常のDisplacementを使うとしても、アニメーションモデルからシルエットが大きく変わらないように作成するべきと考えてます。

なるだけ大きい形状はポリゴンで作成して、細かい形状(鱗、皮膚のシワなど)の再現に使うといいでしょう。

ZBrushからの書き出し方は別記事で紹介します!

関連記事

[Arnold][チュートリアル]SSS「デジタルエミリーにスキンシェーダーを設定してレンダーしてみる編」