見出し画像

【Blender】シンプルな視差マッピングの作り方

シンプルな視差マップの作り方メモ。<ページ後半に参考動画あり。
平面なのに視差(Parallax)があることで立体感を感じる不思議。

視線の方向ベクトルの xy 成分に法線マップのアルファチャンネルに入れておいた高さマップの値を乗じます.これをテクスチャ座標から引いて,ずらしたテクスチャ座標を求めます。

・・・とか、なにやら難しそうな仕組みだが、とりあえず試してみる。
<Blender 3.0.1>

完成イメージ

■シンプル視差マッピング(A)

◇下準備

追加>平面 でオブジェクトを用意する。

◇視差マップのシェーダーノード作成

視差マッピングの完成イメージ

下記のようにノードを組む。
値ノードの数値を変えると奥行き感が変化する。
([-]値で奥行き感が増大)

シェーダーノードの構成

これで完成。
ただし、このマテリアルを立方体に適用すると下図のように側面部分がうまく表示されないので注意。

側面部分の柄模様が伸びてしまった

■シンプル視差マッピング(B)

立方体にも対応した視差マップピング。

視差マッピングの完成イメージ
シェーダーノードの構成

■シンプル視差マッピング(C)

とりあえず、シンプル視差マッピング(A)を元に視差のレイヤー化。
より奥行き感が表現できる。
一連のノードを複製して合成して表示する。

視差マッピングの完成イメージ
シェーダーノードの構成

■参考動画のつづき

ノード編集に手間をかける時間が無い場合は、以下の参考動画を参照の上、作者のサンプルプロジェクトをDLして参考にした方がはやいかも。
※マテリアルを立方体に対応にしたい場合は、シンプル視差マッピング(B)を元に作成すべし。

視差マップ立方体対応、視差1階層分生成した結果
視差マップ立方体対応、視差1階層分生成のノード構成
視差マップ立方体対応、視差2階層分生成した結果
視差マップ立方体対応、視差1+2階層分生成のノード構成
EEVEE、ブルーム適用

※トラブルシューティング
最後で合成するノードは、追加>コンバーター>数式 ノードを使う。のpドの設定項目により、ノードのタイトル名が変化するので、わかりにくい仕様である。

あと、動画には、光らせる方法の解説がなかったので、補足しておく。

上図のように最後の数値ノードに放射シェーダーと合成して出力
プロパティ>ブルームを有効にしておく

とりあえず今回は、これで完成としておく。

■参考動画

※下記、動画ページのリンク先で無料DL可能

■関連動画

下記動画のやり方も、参考になると思われ。


あと、下記動画のような本格的なものも試してみたいところ。

■余談

Paralax Occlusion Mapping (POM) をEEVEEに実験実装するBlender開発スレッド。現在のEEVEEは、Displacementに対応していないので、これを代替えとしたらどうかという議論等。
2.9.2ブランチビルドを試してみたい人は、こちら

POM対応:2.9.2ブランチビルドを試した結果。
Paralax Occlusion Mapping同士が重なっている部分も遮蔽される不思議感。

Paralax Occlusion Mapping
Mesh Objects

■関連記事

2つの画像を使用して、視差マッピングした事例もあり。

以上。

いいなと思ったら応援しよう!