VIDEOMONTAZHERDAVINCI RESOLVE · VIDEO · AI

FUSION · NODE REFERENCE

Duplicate3D

Successive 3D copies, transforms, jitter and spatial regions

Duplicate3D creates a sequence of copies from a classic Fusion 3D scene/object, applying per-copy transforms, time offsets, probability, jitter and optional region filtering. SceneInput is required; MeshInput appears only for Region = Mesh.

Fusion 3DIntermediate

Duplicate3D

Overview

What Duplicate3D does

Blackmagic describes Duplicate3D as the 3D counterpart to Duplicate: it duplicates geometry in a scene, applies a successive transformation to the copies, and builds repeating patterns or arrays. It is not Replicate3D: Duplicate3D generates its own copy sequence, while Replicate3D places source geometry at existing destination vertices or particle positions.

The node has one permanent required input, SceneInput, which accepts a classic Fusion scene3d/object. With SceneInput disconnected there is nothing to duplicate; a 2D MediaIn or Background is not a substitute for the required 3D stream.

The green MeshInput is conditional. The Resolve 21 reference states that it appears when Region tab → Region is set to Mesh. This separate 3D geometry defines the region volume used to accept/reject copies; it does not replace SceneInput and it is not a 2D mask socket.

Copies is a First/Last range. The reference explicitly notes that setting First above 0 excludes the original object and outputs later copies only. First is therefore part of the visible result, not merely an indexing label.

Transform Method changes the underlying math. In Linear mode the transform is multiplied by copy number and evaluated from the original state independently of previous copies. In Accumulated mode each copy starts where the previous copy ended and another transform step is applied. Rotation and scale can make the two modes diverge dramatically.

Transform Order controls the order of Scale, Rotation and Translation. Identical numeric values can produce different positions under SRT versus TRS because those operations do not commute. If an array appears to drift, inspect Transform Method and Transform Order before compensating with arbitrary offsets.

Translation X/Y/Z are per-copy offsets. In Accumulated mode they behave like successive steps from the previous copy. Rotation and Scale participate in the same progression, while Pivot changes the center used by rotation and scaling.

Controls / Time Offset shifts the animated source by a fixed amount per successive copy. The documented example uses a negative value so each later copy shows an earlier state of the source animation. This is a deterministic cascade, not random jitter.

The captured current Inspector includes Copy Probability, while the main Resolve 21 Duplicate3D reference section does not explain this newer control. Its presence is verified by the bundled screenshot, but exact seed/evaluation behavior relative to Jitter Random Seed remains a target-build live-verification item rather than an invented claim.

The Jitter tab adds variation on top of the deterministic duplicate chain: Random Seed/Reseed, Jitter Probability, Time Offset, Translation, Rotation, Pivot and Scale jitter. Jitter Probability determines what fraction of copies receive jitter; it is conceptually distinct from Controls / Copy Probability.

Jitter / Time Offset is random temporal variation, while Controls / Time Offset is the sequential deterministic offset per copy. Tune them separately: establish a readable cascade first, then add random temporal spread if the design needs it.

Region Mode has three documented states: Ignore region, When inside region and When not inside region. Region filtering evaluates copy positions against the selected area and can be animated so copies appear or disappear as they cross the region boundary.

Region offers All, Cube, Mesh, Rectangle and Sphere. Mesh mode reveals MeshInput; the Resolve 21 reference additionally documents Winding Rule, Winding Ray Direction, and optional Limit by Object ID/Object ID controls for a multi-object mesh scene.

A mesh region needs sensible closed topology. Winding controls exist because Fusion has to interpret polygon geometry as a volume. Complex overlapping or non-manifold meshes can create ambiguous inside/outside classification, so begin with a simple cube/sphere-like volume before troubleshooting imported geometry.

The captured current Inspector also shows a Duplicate Path block with Duplicate Along Path. The control itself is verified in the bundled UI capture, but the main Resolve 21 Duplicate3D reference section does not document its full conditional path workflow. This page records the UI boundary and leaves exact path semantics for target-build live verification instead of guessing.

Duplicate3D Output remains a classic Fusion scene3d stream. It can feed Merge3D, Renderer3D or other 3D processors. Duplicate3D does not rasterize the scene, so connecting Output directly to MediaOut remains a type mismatch; scene3d becomes image data only at Renderer3D.

The five bundled screenshots must be distinguished from the full documented set of conditional controls. In the Region Mode capture, Ignore region appears active while When inside region and When not inside region appear grey. The Region list likewise shows Cube, Mesh, Rectangle and Sphere in grey. The manual describes these modes, but the capture does not prove they can be selected in this installed build. Therefore the Mesh lesson is conditional, not a guarantee of a working toggle.

The Controls screenshot shows First = 0 and Last = 2, Copy Probability = 1.0, Time Offset = 0.0, Accumulated and SRT. Those are captured interface values, not universal recommended settings. To understand First/Last, compare 0–2, 1–2 and 0–5 and inspect which geometric instances remain visible.

Controls exposes two separate orders: Transform Order changes the sequence of Scale/Rotation/Translation, while Rotation Order (XYZ, XZY, YXZ, YZX, ZXY, ZYX) changes the axis order within Rotation. Change these independently instead of compensating for an unwanted rotation with arbitrary X/Y/Z offsets.

Lock X/Y/Z combines scaling into one Scale field; unlocking can expose separate X, Y and Z axes. Scale Jitter uses a similar conditional axis lock. The bundled captures show the locked state, not the unlocked individual controls, so the exact unlocked fields must still be confirmed in the target application.

For documented primitive regions (Cube/Rectangle/Sphere), the reference describes spatial Size, Translation, Rotation and Pivot parameters for the region itself. None are visible in the current screenshot where Region = All. They are treated as conditional reference controls, not as presently verified Inspector widgets. A target-build selection test comes first.

Copy Probability and Jitter Probability are not interchangeable. The former is captured on Controls; the latter is captured on Jitter. Reduce only one at a time with a fixed Seed and unchanged transforms, then compare the number of visible instances with the number of varied instances. The precise Copy Probability algorithm is not certified by a screenshot.

For a real composite, keep the data domains separate: Shape3D → Duplicate3D → Merge3D(+Camera3D) → Renderer3D stays 3D until rendering. Renderer3D.Image produces normal RGBA that a 2D Merge can place over MediaIn as Foreground. MediaIn cannot feed SceneInput directly, and Duplicate3D.Output cannot feed MediaOut directly.

Increasing Last and duplicating complex incoming geometry can quickly raise scene and render cost. Begin with a few copies, simplify the source geometry and measure Renderer3D speed in the target installation. A static teaching graph is not a GPU performance certificate.

When to use it

  • Build linear rows, arcs, spirals and repeating 3D patterns.

  • Duplicate Text3D, Shape3D, ImagePlane3D or an already merged 3D branch.

  • Create temporal cascades from an animated source with Time Offset.

  • Add controlled position/rotation/scale variation after a clean deterministic array.

  • Keep or reject copies using Cube, Sphere or Rectangle regions.

  • Use a separate mesh volume as a spatial filter through conditional MeshInput.

  • Keep only inside or only outside copies relative to a region.

  • Build motion-design arrays without dozens of manual Transform3D/Merge3D branches.