- 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
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Subdivide Bezier Curves 3 Answers
how to use t variable in the bazier curve 2 Answers
Find Vector3 perpendicular to Vector3 A in direction of Vector3 B 1 Answer
Linear optimization 0 Answers