3D Render
Renders a PBR texture set on a 3D mesh with lights, shadows, and an HDR environment, orbited and lit directly in the preview.
Wire a texture set into the Texture input, pick a mesh, and orbit the result in the preview to judge the material on the mesh it was made for. Every input is optional: a bare node renders a gray material ball under a default key light.
The output is a straight (non-premultiplied) RGBA image whose alpha carries the coverage of the model and backdrop. In 32-bit (Float) Mode the color is scene-linear in your working space.
A second Depth output holds the camera’s distance to the surface at every pixel, for Lens Blur, Displace, or any node that reads a depth image. In a 32-bit document it carries the distances themselves, which Lens Blur’s Depth Map mode reads. In an 8-bit document it is an 8-bit pass instead: black at the near side of the model’s bounding sphere, white at its far side and on the background, so Displace, masks, and gradient remaps read it directly. Its range is set by the camera, so it holds from frame to frame and moves only when the camera does.
Inputs
Section titled “Inputs”There is one material input, not one pin per map.
- Texture carries the material as one texture set. Wire a set from Texture, Texture Folder, Texture Layer, or any node that passes one along, and every role in the set fills the matching material slot.
- Environment (a float HDR equirectangular image) lights it with image-based lighting.
- Background is a backdrop plate composited under the render.
Material
Section titled “Material”For each role (Base Color, Normal, Roughness, Metallic, Ambient Occlusion, Height, Opacity, and Emissive) the node uses the set’s map when there is one, and otherwise the matching constant from the Material section, so a missing role never leaves a hole. A status line in the section names which roles come from the set and which use their constants.
- Normal Strength scales how far the Normal map bends the shading: 1 is the map as authored, 0 flattens it, above 1 exaggerates it. There is no convention to pick: OpenGL or DirectX travels with the set, chosen on the Texture or Texture Folder node that built it, and the render converts it automatically.
- Direct Occlusion lets the Ambient Occlusion map darken the lights too. By default AO darkens ambient light only, as AO maps are meant to, which can look faint under a strong key light. The slider is grayed out when the set has no Ambient Occlusion map.
- Clay Mode swaps every surface map and constant for a fixed matte gray under the scene’s actual lights and environment, to check shape and lighting with no texture in the way. Height still displaces the surface, since that is geometry. The Preview’s 3D Render toolbar has a matching Clay button.
- UV Tiling repeats every map across the model.
- Texture Filter picks Linear (smooth) or Nearest (hard texel edges, for pixel art textures) for every map at once.
The set’s Opacity, its one cutout, fills the Opacity slot (a fully opaque set leaves the Material constant in charge), so the render shows exactly the cutout the Preview draws and Export Texture writes. Opacity blends, with no mode or threshold: a gray region draws that part of the surface at that opacity over whatever is behind it, and black draws nothing.
Maps do not need to match each other’s resolution or the output’s. Each is sampled in the mesh’s UV space, so a 4K base color, a 1K roughness map, and an 8K environment compose with no resizing.
Swapping one map
Section titled “Swapping one map”To keep a set but replace one of its maps, compose the replacement before the render.
- Wire the set into a Texture node’s
textureinput. - Connect the new map (a different normal map, say) to that node’s matching role pin.
- Wire the Texture node into 3D Render.
Every other role, the Normal convention, and the Opacity pass through unchanged. To adjust a map rather than replace it, such as a Levels on the Roughness, wire the set through that node and pick the map on its Map row. See Changing one map.
A single image
Section titled “A single image”A plain image wired into the Texture pin is read as a set with only a Base Color, so one picture on a sphere is one wire. Its alpha comes along as the set’s Opacity (transparent areas cut holes, partial transparency blends), and a single-channel image renders as a gray Base Color. The status line reads “Base Color from the image”.
A library
Section titled “A library”A library (a batch of texture sets) renders one frame per set, every frame lit by the same environment.
The Mesh dropdown picks what the material renders on:
- Sphere, Cube, Plane, Cylinder, Torus are generated on the spot, subdivided by Tessellation. Edge Bevel rounds every hard edge of the Cube and Cylinder so normal and height maps turn the corner instead of tearing; 0 gives razor-sharp edges. While Height displaces the Cube or Cylinder, the bevel in effect is never narrower than the displacement height, so an edge cannot fold into a fin; the panel shows the value in use under the Edge Bevel row, and your setting returns when nothing displaces the shape.
- Shader Ball is a material-preview model (a sphere with a deep round window, a rolled lip, and a beveled coin inside, on a ring stand) that shows the material on smooth curves, convex and concave rounds, walls, and flat faces in one render. UVs are continuous, with the seams at the back. Tessellation and Height apply to it; while Height displaces it, every rounded edge widens to at least the displacement height so the lip, window, and coin never fold. Edge Bevel does not apply.
- Custom loads your own glTF 2.0 (
.gltf/.glb), OBJ, or FBX file. Only geometry and the first UV set are read; materials, textures, and animation in the file are ignored, because the material always comes from the Texture input and Material constants. An FBX loads in its bind pose, and every level of a level-of-detail group loads, with the node noting both.
A Custom model keeps its author’s vertex density and UV layout, so Tessellation and Height displacement never apply to it.
Square texels and UV Aspect
Section titled “Square texels and UV Aspect”A square texture looks square on every generated shape with no setting; a Custom model keeps its author’s UV proportions.
UV Aspect stretches every map along U against V on top of that: 1 keeps texels square, 2 draws the texture twice as wide as tall, 0.5 twice as tall. Like UV Tiling it moves the Height map with the surface maps. A value that does not divide a shape’s repeats evenly leaves a seam where the layout wraps, as a fractional UV Tiling does; the wrap seams face away from the default camera.
Custom mesh import
Section titled “Custom mesh import”- Drop a model on the graph to start. Drag a
.glb,.gltf,.obj, or.fbxfile onto the Node Graph, paste a copied model file, or open one with ArcBrush from your file manager (see Open With). It arrives as a 3D Render node with Mesh set to Custom and the file loaded, ready for a Texture input. Several models dropped together make one node each, and a drop that mixes models and images is one undo step. A file type ArcBrush does not read makes no node and says so. To swap the model on an existing node, drop the file on its File field instead. - Watch File reloads the model when it changes on disk, useful while iterating in a modeling tool.
- If the file splits its geometry across several materials, Submeshes decides what renders: All Geometry renders the whole model with this node’s one material, and Selected Materials shows a Material Groups list with one tick box per group, named as the file names them, so you untick what you do not want.
- A missing file, an unsupported format, an empty mesh, or a model over the size caps shows as an error on the node, never a silent fallback to a primitive. Anything else the loader noticed (materials read past, normals generated, animation ignored) sits behind a small icon next to the file name.
- Collect Files and Package as .zip copy a custom model into the project’s data folder, including the
.binbuffers a.gltfnames. Images the model references are not copied, since every surface map comes from the Texture input.
Camera
Section titled “Camera”The camera looks at and orbits a Target, a point you can move, rather than the model’s center.
- Orbit Yaw and Orbit Pitch rotate it around the Target. Pitch stops at plus or minus 89 degrees and there is no roll, so the horizon never tilts.
- Distance is a multiple of the distance that frames the whole model (1), down to a tight close-up.
- Focal Length is a 35 mm-equivalent lens in millimeters: 50 is normal, lower is wider, higher is telephoto.
- Target X, Y, and Z place the Target in model sizes from the model’s center. Panning, focusing, and framing move it for you.
- Reset Camera returns all of these, Target included, to their defaults without touching lights or the environment.
Navigating in the preview
Section titled “Navigating in the preview”- Orbit: drag on empty space. A plain click that does not move changes nothing (except that clicking empty space deselects the selected light).
- Pan: middle-drag, or hold Space and left-drag, on every platform; on macOS a two-finger trackpad drag pans too. The point under the cursor stays under it. The environment backdrop stays put, since it sits at infinity.
- Focus: double-click a point on the model to slide it to the center of the view and make it the Target, without rotating or zooming, so the next dolly goes straight toward it.
- Frame Model: F, Ctrl+0 (Cmd+0 on macOS), or the toolbar’s Fit button puts the Target back at the model’s center and Distance back to 1, keeping the orbit angles and focal length.
- Dolly: the mouse wheel, a trackpad pinch, a right-drag, Alt-drag (from anywhere, even over a light gizmo), and the zoom shortcuts all move the camera toward the Target. A dolly stops just in front of the surface under the view center; start a new dolly from there and it passes through, which is how you get back inside an open model. Dollying out is never stopped.
Zoom gestures move the camera rather than the picture, so the view stays fitted. A run of wheel ticks, or one pan, is one undo step. On a library, every gesture works on an opened frame: one camera serves all frames, while focus and the dolly stop read the frame you are viewing. A camera gesture stops batch playback.
While you drag the camera, a light, or a camera or light slider, the preview shows a fast view-only frame; on release, ArcBrush renders and publishes the full-quality image. Nothing seen mid-drag is sent downstream.
Lights and shadows
Section titled “Lights and shadows”The Lights list holds any number of point and directional lights, added with the Point and Directional buttons, each with its own enable checkbox, color, and intensity. A new document starts with one directional key light.
- Point lights have a position in multiples of the model’s radius (so a saved rig scales with the model) and fall off with inverse-square distance.
- Directional lights have only a direction and light every point equally, like sunlight.
Every light casts a shadow by default. Shadows darken only what a light contributes directly, so an AO map and a shadow never double-darken the same crevice.
- Cast Shadows turns off one light’s shadow.
- Size sets a hard or soft shadow edge, in multiples of the model’s radius: directional lights default to crisp, point lights to a small penumbra that widens the farther a surface sits behind the blocker.
Select a light in the panel, or click its icon in the preview, to show its gizmo: a point light gets a draggable dot, an up/down handle, and a drop line to the ground plane; a directional light gets a sun icon with rotation rings. Delete a selected light with the panel button or Delete in the preview.
While a 3D Render node is active, a small Preview toolbar offers three independent overlay toggles: Grid, Light Gizmos, and Axis Triad. Each remembers your choice across restarts and can take its own shortcut in Settings > Keyboard. Hiding the light gizmos, the Manipulators setting, a Viewer slot’s handles toggle, and holding Clean View never stop you moving the camera: orbiting, dollying, and panning are looking at the render, so they keep working while the gizmos are hidden.
In a Viewer slot, click the cell and it becomes the full 3D Render editor. A cell that is not the editor still orbits with a left drag and dollies with the wheel or a right-drag, its lights hidden until you click it, so you can orbit the render beside another tool’s editor.
Environment and background
Section titled “Environment and background”Connect a float HDR equirectangular image to the Environment pin for image-based lighting; ArcBrush prefilters it once and reuses the result. With nothing connected, a built-in neutral studio environment lights the model.
- Intensity multiplies the environment’s contribution.
- Rotation spins it around the vertical axis, to move a reflection without moving the camera.
- Sun Lights (0 to 3, default 1) turns the environment’s brightest regions into shadow-casting suns, which gives an outdoor HDR its hard shadow without counting that light twice. The suns turn with Rotation, scale with Intensity, and use only the shadow slots your light rig leaves free. Set 0 for no environment shadow; for a sun you aim yourself, add a directional light.
The Background mode fills the pixels the model does not cover:
- Transparent: alpha 0, ready to composite downstream.
- Environment: the environment map as the camera sees it.
- Flat Color: one solid color.
Connecting the Background pin overrides the mode: the plate becomes the backdrop, and its width and height become the output size, taking priority over the node’s Width and Height rows.
Anti-aliasing and rendering
Section titled “Anti-aliasing and rendering”Anti-aliasing shades every sample, not just the silhouette, so specular highlights come out as smooth as the edges. The default 2x2 is a good balance; 3x3 and 4x4 help shiny materials at a proportional cost in speed.
The node renders on the GPU when one is available and falls back to the processor otherwise, with the same picture either way.
Parameters
Section titled “Parameters”Pins
Output
Output image width
Output image height
Shades several samples per pixel, so edges and specular highlights come out smooth. Higher is smoother and proportionally slower
Mesh
Which surface the material is rendered on
A glTF 2.0 (.gltf, .glb), OBJ (.obj) or FBX (.fbx) model. Only the geometry and the first UV set are read; the material comes from this node's Texture input and Material rows
What to render when the file splits its geometry across several materials
The material groups Selected Materials renders, as the loader names them. Edit through the Material Groups list
Auto-reload when the model file changes on disk (polls once per second)
Subdivision level of a generated mesh. Raise it to smooth curvature and to give height displacement somewhere to go. Ignored for Custom
Rounds the hard edges of the Cube and Cylinder, as a fraction of the model's size. While Height displaces them it is at least the displacement height, so edges cannot fold. 0 = sharp edges. Ignored by the other meshes
Repeats of every input map across the model's UV space. 2 tiles each map twice in both directions
Stretches every map along U against V. 2 draws the texture twice as wide as it is tall. 1 = square, as each shape's own proportions already correct
How every texture map is sampled on the surface
How far the Height map pushes the surface outward, as a fraction of the model's size. It needs enough Tessellation to show. Ignored for Custom
Material
Renders a plain matte gray material under the same lighting, ignoring every surface map and constant below. Height still shapes the model
Surface albedo used when the texture set has no Base Color map
How strongly the texture set's Normal map bends the shading. 1 = as authored, 0 = flat, above 1 exaggerates it
Microsurface roughness used when the texture set has no Roughness map. 0 is a mirror, 1 is fully diffuse
Metalness used when the texture set has no Metallic map. Metals tint their reflection with the base color and have no diffuse term
How much the texture set's Ambient Occlusion map also darkens direct light. 0 = ambient light only, the physically correct default. Raise it when the map reads too weak under a strong key light
Displacement height used when the texture set has no Height map; ignored for Custom. A constant moves the whole surface uniformly, so visible relief needs a Height map
Surface opacity used when the texture set carries no opacity of its own. It goes into the output alpha, so what is behind a transparent surface shows through
Emitted color used when the texture set has no Emissive map
Multiplier on the emissive color.
In 32-bit mode values above the slider maximum are accepted for genuinely overbright emitters.
Camera
Camera rotation around the model, in degrees. 0 looks straight down the front
Camera elevation above the model, in degrees. Positive looks down at it
How far the camera sits from its Target, as a multiple of the auto-fit distance
Lens focal length in millimeters, 35 mm-equivalent (a 36 x 24 mm sensor). 50 is a normal lens; lower is wider, higher is a telephoto
Where the camera looks and orbits, in model sizes from the model's center. Pan and double-click move it; F resets it
Where the camera looks and orbits, in model sizes from the model's center. Pan and double-click move it; F resets it
Where the camera looks and orbits, in model sizes from the model's center. Pan and double-click move it; F resets it
Lights
Light list (point / directional), edited in the Lights panel and with the on-canvas gizmos
Environment
Multiplier on the environment lighting. With nothing wired to Environment this scales the built-in studio environment.
In 32-bit mode values above the slider maximum are accepted.
Spins the environment around the vertical axis, in degrees, so you can move a reflection without moving the camera
How many of the environment's brightest regions also light the model as shadow-casting suns. They follow Rotation and Intensity. 0 = no environment shadows. For a sun you can aim, add a directional light instead
Background
What fills the pixels the model does not cover.
Ignored while a Background plate is connected.
Flat background color
Usage Tips
Section titled “Usage Tips”- Wire a downloaded material in one step: Texture Folder into the Texture pin.
- Build a material from its authoring chain: a Noise or Hex Tile result into a Texture node’s Base Color, its Normal Map into Normal, and a Levels tweak into Roughness, then the Texture node into 3D Render, so every upstream edit re-renders on the mesh.
- Wire the Depth output into Lens Blur’s Depth pin for a rack-focus shot; Lens Blur reads the render’s real distances and fits itself to them.
- Use the Background pin to composite a render over a product-shot plate; the plate sets the output size, so no Pad or Resize is needed.