Aller au contenu

Displace 3D Node

By Kriss Norde

Displace 3D moves the vertices of a geometry along their normals by sampling an image (heightmap). It does not subdivide: the quality depends directly on the number of vertices in the input mesh.

Overview

Displace 3D takes a mesh as input, reads a 2D image (usually a grayscale heightmap) and moves each vertex along its normal based on the value read at the matching UV location. A white pixel = strong displacement, a black pixel = none.

Important: the node creates no extra vertices. If your mesh is barely subdivided, the result will be coarse (stepped). You need to subdivide the input mesh beforehand (with a Shape 3D set to a high Subdivision, or a Triangulate 3D after imported geometry).

A pixel value can be negative in some floating-point images - the displacement then goes in the opposite direction of the normal.

Where to find this node

  • Effects Library: Tools > 3D > Displace 3D
  • Quick add: right-click in the Node Editor → Add Tool > 3D > Displace 3D

Inputs

  • SceneInput (orange) - required. Connects the 3D geometry or scene to deform.
  • Input (green) - 2D image used as the heightmap. Technically optional (the node doesn't crash without it), but with no image connected, nothing happens.

The image works as a lookup: the geometry is sampled through its texture coordinates (UVs). If the UVs don't cover [0, 1]², some areas of the mesh won't be affected.

Setup

Typical workflow:

  1. Shape 3D (plane, Subdivision X = Y = 100) or an imported subdivided mesh
  2. → Displace 3D
  3. → Merge 3D with camera and lights
  4. → Renderer 3D

The heightmap (2D image) plugs into the green input of Displace 3D. It can come from a FastNoise, an image Loader (Perlin, fractal, terrain scan) or the result of another 2D node.

Controls tab

Channel (default: Luma)
Image channel used to drive the displacement: Red, Green, Blue, Alpha or Luma. For a grayscale heightmap, choose Luma (or any channel, they are equivalent). To encode several pieces of information in the same texture (e.g. R = height, G = roughness), separate the channels.
Scale (default: 1.0)
Multiplier for the displacement strength. 0 = no displacement; 1 = one unit of displacement for a white pixel; adjust it to the size of your scene. Unit: Fusion units.
Bias (default: 0.0)
Offset applied to the value read before scaling. A Bias = -0.5 maps a [0, 1] heightmap to [-0.5, 0.5] - useful to center the mesh around zero instead of pushing it entirely in one direction.
Distribution
Curve that maps input values to the actual displacement. Lets you exaggerate peaks or flatten low frequencies - useful to "break up" a terrain that is too uniform.

Point to Camera

A special mode that changes the displacement direction: instead of following the vertex normal, the displacement goes toward the camera. Widely used to deform an Image Plane 3D aligned with a camera while keeping the image correct when seen from that camera.

Point to Camera (default: off)
Turns on camera mode. When off, displacement follows the mesh normals.
Camera Menu
Selects which camera in the scene drives the displacement direction. Listed automatically as soon as a Camera 3D is present in the input scene.

Use cases

  • Procedural terrain - subdivided plane (200×200) + fractal FastNoise as the heightmap = mountainous terrain generated in real time. Pair it with a shader that changes color with height for a topographic map look.
  • Ocean / waves - animated FastNoise (seethe) + low Scale + a highly subdivided plane. More realistic than a simple sine.
  • Logo relief - a 2D text driving the luminance on a plane gives an engraved / embossed logo.
  • Camera plane deformation - with Point to Camera, you can make a projection plane "ripple" without breaking the image seen by that camera (impact or blast wave effect).
  • Surface parallax on a hero banner - a subtle heightmap applied to a 3D packshot to add micro-texture (paper relief, metallic grain).

Tips & pitfalls

  • Subdivide, always subdivide - if your mesh has 100 vertices and the image is 4000×4000 px, you will see almost none of the detail. Rule: at least one vertex per pixel of useful detail.
  • Use a light Blur on the heightmap before the Displace to avoid sharp "spikes" caused by isolated pixels.
  • For a cinematic effect, animate Scale from 0 - the mesh gradually "inflates" from a flat plane.
  • After a large displacement, the mesh's original normals are outdated (wrong lighting). Chain a Replace Normals 3D to recompute the normals from the deformed geometry - otherwise the shading will look flat.
  • A 32-bit image (EXR) is recommended to avoid banding (height steps) on a smooth surface.
  • If the heightmap is a compressed JPG, it has lost subtle values - you will get plateaus. Prefer 16-bit PNG or EXR.

Settings tab

The Settings tab has the controls shared by most 3D nodes (visibility, lighting, blend mode, object ID).