Rails are really useful for defining paths for objects to travel across.
Bay-Z-Ay curves can be really simple too for implementing rails. All you need are:
- A list of 3D points in the order of your path.
- A function to evaluate the position along this path from time 0 to 1.
Here is an example of a function one could use to get this bezier curve position (written in javascript but it doesn't really matter):
function atT( t: float, p0 : Vector3, p1 : Vector3, p2 : Vector3 ) : Vector3 { var t2 : float = t * t; var one_min_t : float = 1 - t; var one_min_t_2 : float = one_min_t * one_min_t; var x : float = one_min_t_2 * p0.x + 2 * one_min_t * t * p1.x + t2 * p2.x; var y : float = one_min_t_2 * p0.y + 2 * one_min_t * t * p1.y + t2 * p2.y; var z : float = one_min_t_2 * p0.z + 2 * one_min_t * t * p1.z + t2 * p2.z; return(Vector3(x,y,z)); }
So given your list of points ( 0, 1, 2, 3, 4, 5, 6... ), you'd break them up into groups of 3 like ( [0,1,2], [2,3,4], [4,5,6]... ). Keep track of which group/segment your on and just interpolate from 0 to 1 to move along it. When you hit 1, increment to the next group/segment and restart at 0.
No comments:
Post a Comment