> ## Content Index
> Fetch the complete content index at: https://millhive.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Copy & Transform
- URL: https://millhive.com/copy-transform/
- Published: 2026-09-17T22:25:50.000Z
- Updated: 2026-09-17T23:13:39.000Z
- Description: "Let's copy, and transform, and copy, and transform, and..."
- Author: Vincent Ph.
- Tags: Houdini - Node

### **You want to:** 

\- Make multiples copy of an object  
\- Apply a transformation for each copies  
\- Create stairs (🤷‍♂️) or any repeating pattern

### **What it does**

Copy & Transform is a straightforward node. You define a number of copies, and a transformation (translate, rotate or scale) to apply to each one.

### **The key thing to understand**

Transformations are applied **relative to the previous copy**, not to the original.

![](https://millhive.com/content/images/2026/09/CopyTransform_fig1-ezgif.com-optimize.gif)

Fig. 1

For example (Fig.1):

- The original sits at `0,0,0`
- **Copy 1** gets a translation of `1` **on X** → it moves to `1, 0, 0`
- **Copy 2** applies the same translation again, but from Copy 1's position → it moves to `2, 0, 0`
- And so on...

![](https://millhive.com/content/images/2026/09/Copy-Transform_fig2-3.gif)

Fig. 2

This cumulative behavior (Fig.2) is what makes the node powerful.

One last thing worth mentioning: Pivot Translate/Rotate.

![](https://millhive.com/content/images/2026/09/Screenshot-2026-09-17-at-19.08.33.png)

Fig. 3

Once you've set your translation and rotation, you can also shift the pivot point of each copy to create more interesting patterns (Fig. 3).

Instead of rotating around the object's center, each copy rotates around an offset point which quickly leads to circular arrangements and/or unexpected results.

### **A bit deeper**

Two useful things are built into this node. Easy to miss, but worth knowing.

Output Group Prefix  
Copy & Transform can automatically create a primitive group for each copy.   
Each group is named with your prefix + the copy number.

This means you can target individual copies downstream and apply a different material, delete a specific one, or treat each copy as its own object.

`copynum` Attribute  
Each copy gets a `copynum` integer attribute per primitive.   
0 for the first copy, 1 for the second, and so on.  
  
A simple example using an **Attribute Wrangle** after the Copy & Transform:

![](https://millhive.com/content/images/2026/09/image-7.png)

Fig. 3

```VEX
i@copy = prim(0, "copynum", @primnum);
@P.y += @copy * 0.5;
```

Each copy is shifted upward based on its copy number (Fig. 3). The first copy stays in place, the second moves up by `0.5`, the third by `1.0`, and so on.

[Copy & Transform - SideFX Official Documentation](https://www.sidefx.com/docs/houdini/nodes/sop/copyxform.html?ref=millhive.com)