- Home /

# How to get lateral normals of a bezier curve

Hi guys, first of all, I apologize for my bad english, it's not my first language. So, I've made my own bezier spline script and I'm working on things like "spline follower, and a script to spawn objects along the spline. But I got two problems.

1.The first is: The objects that follows the spline are moving with a unstable speed, (I know, a bezier curve has different velocities) but, can I do something to make the objects follow the spline in a stable speed? I've been looking for an answer for this all over the Internet but yet, came up with nothing.

2.The second problem is: Like I said, I'm working on a script to spawn objects along the spline, and the objects have to face the center of the spline (Like a fence, "looking forward"), so I tried to make the rotation of each instanced object equal to "BezierSpline.GetTangent();" and "BezierSpline.GetDirection" but none of them worked, the objects always get a weird rotation, and I've been thinking, if I get the inside normals of the curve, and set them as the rotation using "LookAt(normals) for example" maybe it works, but I have no idea of how to get the inside normals. My current script can only give me normals looking to Vector3.up.

Like this: (Green Lines are normals).

But I actually need this (Red lines):

So, can anyone help me please? Tell me if I wasn't clear enough.

**Answer** by elenzil
·
Jan 01, 2017 at 08:54 PM

2) the tangent is what you want, i think.

I tried to make the rotation of each instanced object equal to "BezierSpline.GetTangent();"

how are you making the rotation equal to the tangent ? the tangent will be a vector, and rotations != vectors. i think you would want to use LookRotation.

but be sure to pay attention to frame of reference. ie, the Tangent vector should be in the same coordinate system as the object.

one way to achieve that would be: 1. add the tangent vector to the bezier point location in the same space. call it Point Pb. 2. convert the point Pb into world-space (Pw) 3. then convert Pw into the space of the object you want to orient. (Po) 4. subtract the object's position from Po. this will be the tangent vector in the coordinate system of the object.

there may be a more direct way as well.

### Your answer

### Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.

### Follow this Question

### Related Questions

Multiple Cars not working 1 Answer

Subdivide Bezier Curves 3 Answers

Steering using dynamically adjusted splines/curves 2 Answers

Controlling the curvature of a Bézier curve 2 Answers

Find Vector3 perpendicular to Vector3 A in direction of Vector3 B 1 Answer