# Bezier curves And Catmull-Rom spline

Bezier curves are very convenient when you don't know the entire set of points in advance because they are very easy to build piece by piece. They are pretty efficient and conceptually straightforward. There is also an easy way to use quadratic Beziers (less "curvy" than the more common cubics) to round off a path. If you imagine the path as a zigzag line, then the curve passes through the centre point of each line segment and rounds off the corners.  This thread  has a script that implements this technique.

If you want the curve to pass through the waypoints, the most common type of curve to use is the Catmull-Rom spline. This doesn't lend itself to piecewise construction of the path, as does the Bezier curve, but it is easier to use when you have the full list of points in advance and simply want to plot a smooth curve that passes through them.

Animating an object along a Bezier or Catmull-Rom path gives a physically plausible motion that accelerates convincingly. The main drawback is that the acceleration doesn't vary smoothly. This is only a problem if, say, you want a vehicle that banks as it turns. If you need this behaviour, you can use B-splines or "natural" splines. The drawback with B-splines is that the curve passes near the waypoints, but doesn't pass through them in any predictable way. Natural splines interpolate all the waypoints precisely, but they are complicated to implement and there is a preprocessing step that is CPU-heavy when there are lots of waypoints.

It sounds from your description that you might want Catmull-Rom splines, but it depends on how the creatures have to move. There is a spline controller script on the wiki that implements something similar to this, but post again if you need any further explanation or example code and I'll see if I can fix you up with something.