BlenderでのDisplacement(ディスプレイスメント)の使い方と、それが効かない場合に考えられる原因と対処法について解説します。ディスプレイスメントは、マテリアルに凹凸をつける強力なツールですが、適切に設定しないと期待した通りに機能しないことがあります。本記事では、その設定方法を初心者でもわかりやすいように説明し、効かないときのチェックポイントを押さえていきたいと思います。
この記事は、BlenderのDisplacement(ディスプレイスメント)の使い方と、効かない場合の原因と対処法について知りたい初心者向けの記事です。
難易度
Blender4.3から、なんとEEVEEでもディスプレイスメントが使えます!古いバージョンではCyclesでしか使えなかったのです…。というわけでもっと手軽に使える機能になりました。どんどん使っていきましょう。
Displacement(ディスプレイスメント)とは?
ディスプレイスメントとは、3Dモデリングやレンダリングにおいて、ジオメトリ(形状)を変形させる機能です。通常、ディスプレイスメントマップ(グレースケール画像)を使って、表面のディテールを加えるために使用されます。このマップの値に応じて、頂点の位置を上下に変動させることができます。


左図のように、モデリングをしなくても実際にメッシュを変形することができます。(これはボロノイテクスチャのディスプレイスメントマップを使用しています。)
基準位置が0.5の場合、白(1)の場所が持ち上がり、黒(0)が下がり、グレー(0.5)が真ん中付近の高さに変形することになります。
また、ディスプレイスメントを使用するには、十分なメッシュの細分化が必要で、場合によっては処理の負荷がかかりすぎて動作が重くなることもあります。
※ポリゴン数を増やすことなく、細かい凹凸だけをつけたい場合はBumpを使います。ノーマルマップやNormalノードなどを使って見た目だけ凹凸があるように見せますが、実際はメッシュは変形していません。
Displacement(ディスプレイスメント)の使い方
ディスプレイスメントはマテリアルシェーダーで設定しますが、その前にメッシュやその他設定で必要な準備があります。
- ディスプレイスメントをつけるメッシュを割る
- マテリアル設定でDisplacementを使えるようにする
- マテリアルシェーダーでノードを組む
①ディスプレイスメントをつけるメッシュを割る
メッシュをsubdivideするか、subdivision surfaceモディファイアなどで十分割っておきます。メッシュを変形させるので、頂点が増えないと細かい凹凸が表現できません。
右図のように平面を割るには、編集モードに入り、Plane全体を選択して右クリックでSubdivideを選択します。左下にSubdivideのメニューが出てるので、開いて、一番上のNumber of Cutsに何回分割するか数値を入れます。
かなり細かく凹凸をつけたい場合は50回くらい分割するとちゃんと表現できると思います。(メッシュの大きさにもよります)

②マテリアル設定でDisplacementを使えるようにする
デフォルトの状態だとDisplacementは使えるようになってません。マテリアル設定が必要です。
マテリアルプロパティを開き、下の方にあるSettingsのタブを開きます。Surfaceというタブの中にDisplacementの設定があるので
Displacement…
Displacement and Bump
or
Displacement only(EEVEEでは非推奨)
にします。
Displacement and Bump
ディスプレイスメントとバンプを併用します。大きい凹凸はディスプレイスメント、細かい凹凸はバンプで表現すれば、ポリゴン数を抑えて細かい表現が可能になります。

Displacement only
ディスプレイスメントのみで凹凸を表現します。そのためメッシュを細かく割る必要が出てきます。(EEVEEではサポートされていないと出ますが簡単な形なら変形します。)

※上図はCyclesのものですが、EEVEEでも同じような場所にこの項目があります
③マテリアルシェーダーでノードを組む
Displacementをつけるノードは
DisplacementノードとVector Displacementノードがあります。
大体マテリアルで使われるのはDisplacementノードなので、こちらを使います。(Vector Displacementについてはこの記事の最後で説明しています。)
※マテリアルプレビューやレンダープレビュー画面じゃないと凹凸がちゃんと変形して見えませんので画面を変更するのを忘れないようにしましょう

Displacementノードを使うには、ディスプレイスメントマップ(メッシュをどのように変形させるか数値で表したマップ)になるような、白黒(0~1)の画像やマッピングされたテクスチャ、または数値が必要です。
ボロノイテクスチャ、ノイズテクスチャなどをつなぐと、プロシージャルにメッシュを変形させることもできます。

他にも、マテリアルをつけるときに画像をディスプレイスメントマップとしてイメージテクスチャで読み込む等の方法でよく使われています。
ディスプレイスメントマップ↓


ディスプレイスメントマップをDisplacementノードのHeight(高さ)につなぎ、それをMaterial OutputのDisplacement入力ソケットにつなぎます。
このとき、イメージテクスチャを使う場合は、Color SpaceをNon-Colorに設定する必要があります。

Displacementノードのパラメータ
Height
表面を法線方向に変位させる距離を指定します。通常はここにテクスチャノード(バンプマップやディスプレイスメントマップ)を接続します。テクスチャの明暗(数値)に応じて、メッシュが「へこむ/出っ張る」効果が得られます。
Midlevel
変位が「ゼロ」とみなされる基準値を設定します。デフォルトは0.5で、この値より小さい部分(暗い部分)は内側に押し込まれ、この値より大きい部分(明るい部分)は外側に突き出すように変形されます。
例:右図
Midlevelが0.8なのでHeightが0.8までは高さが下がり、0.8で変位が0。1-0.8=0.2の分だけ上に持ち上がっている。

Scale
ディスプレイスメントの強さを調整するパラメータです。この値を大きくすると、ディスプレイスメントが強くなり、メッシュがより大きく変形します。

過去に作っていた変な家。
地面にディスプレイスメントをかけています。
ディスプレイスメントはかなり強くかかってしまいやすいので、微妙な高さを表現するときには、Scaleの大きさを適切につけることが大切です。
0.01とかそのくらいでつける人も多いです。作りたいものにあわせて適切な程度に変形させましょう。
Displacementが効かないときのチェック項目
うまく変形されないときに気を付けること
画面
マテリアルプレビュー、またはレンダープレビュー画面にする
メッシュでの注意点
メッシュは十分に割る。頂点数を増やす
マテリアル設定での注意点
マテリアル設定でDisplacementを使えるようにする
ノードでの注意点
Scaleを0にしていないかチェック。
HeightやScaleが0のままだと変形しません。効果がかかってないのと同じことになります。
Displacementにちゃんと接続されているかチェック。
これもよくやらかします。マテリアルアウトプットに入力するときに、Surfaceにつないだりしてることが多いです。チェックしましょう。
ディスプレイスメントはあまり使用頻度が多くないのと、デフォルトでは使用できないようになってる設定もあるので、ミスが起こりがちだと思います。
Vector Displacementについて
Vector DisplacementノードはVector情報を入力でき、法線方向だけではなく三次元方向に変形できます。
つまりどのような形にも変形できるので、葉っぱ、動物の角など、ディスプレイスメントマップがあれば瞬時にその形に変形できるようです。
ただそのようなマップをあまり見たことがないのと、活用してる人もあまり見たことないです(自分が知らないだけかも)
試しにノイズテクスチャを入れてみたらシーツみたいな形に変形しました。いろいろ変形させてみたら面白いかもしれないです。

コメント