Transforms

Build an orient Attribute for Copy to Points

Aim each copy along the point normal by writing a quaternion @orient - the reliable, flip-free way to rotate copies.

What it does

Computes a rotation that takes a chosen up vector onto each point normal and stores it as a quaternion in @orient. Copy to Points reads @orient automatically, so every copy is aimed along @N.

When to use it

Use it whenever copies need to follow the surface - grass and fur along normals, panels on a hull, arrows along a flow. Driving orientation with @orient avoids the gimbal and flipping problems you get from feeding @N and @up loosely.

The VEX code

// Aim each point's up vector along its normal; copies read p@orient.
vector up = {0, 1, 0};
matrix3 m = dihedral(up, normalize(@N));
p@orient = quaternion(m);
Context: paste this into an Attribute Wrangle running over points, unless noted otherwise.

Inputs and assumptions

Common mistakes

Frequently asked questions

What attribute rotates copy to points?

A vector4 quaternion named @orient. Copy to Points reads it automatically and uses it as each copy rotation, which is more robust than @N and @up alone.

What does dihedral do?

dihedral returns the shortest rotation that takes one vector onto another - here, taking the up vector onto the point normal so copies aim along the surface.

Open Houdini VEX Lab