I want to animate a boomerang flying on a semi-circular course and spinning as it travels. I have almost managed it, but there is a complication due to the way a real boomerang flies. For reference, here is how I have modeled the boomerang. At rest, the boomerang is lying flat on the ground with its two arms pointing along its local X and Y axes. The local Z-axis points straight up from the top surface of the boomerang. The object origin is at its center of mass, since that's the point around which all rotation will occur in flight. The boomerang spins around its local Z-axis as it travels. Here's a diagram:

boomerang model

The complication is that a boomerang precesses as it flies. A right-handed thrower holds it in the vertical plane (its Z-axis pointing left) to throw it. As the boomerang travels, its orientation slowly rotates toward the horizontal until its Z-axis is vertical.

I have succeeded in making the boomerang spin and precess realistically while flying in a straight line, say, traveling along the global-X axis. For the precession, the boomerang rotates around the global X-axis and for the spinning, it rotates around its local Z-axis. But I can't figure out how to make it work on a curved flight path, because the axis for precession is constantly changing. Is there a way to do this in Blender?

  • $\begingroup$ What about parenting the boomerang to an empty? The boomerang starts with its Z axis horizontal and keeps only rotating around its Z axis, while the empty moves along the curve in its +X direction for example. While it moves forward, the empty slowly rotates around its Y axis until the boomerang is vertical. $\endgroup$ Jan 13, 2022 at 21:39

2 Answers 2


I would do it as I explained in the comments: take an Empty and give it a Follow Path constraint with the option Follow Curve enabled. In my example I've set Forward Axis to Y and Up Axis to Z (but this depends also on the orientation of your curve or how you place the objects).

Now I place the boomerang at the center of the Empty and make it a child of the Empty. The boomerang gets rotated on its Z axis for the duration of the animation.

Then the Empty will be keyframed with a Y axis rotation. I start on -90° and move it to 0° so the boomerang lies Z axis horizontally in the beginning and continues turning Z upwards.

I've added some more motion to it in my example, but I have no real idea how the boomerang correctly behaves, so this is just for demonstrating the basics. And don't look too close on the speed along the curve etc., these are things that have to be tweaked.


The thing is, it's similar to animating the Earth circling around the Sun, there is the Z rotation around the Sun, but the Earth is spinning around itself on the obliquity of the ecliptic, so you have two different reference systems for the motion. In this case you need an empty for one rotation and the object itself for the other rotation.

Now if you do this with the Action Editor or in the Graph Editor or more or less simply in the 3D Viewport by adding keyframes isn't that important - the point is to have all the reference systems you need.

  • 1
    $\begingroup$ This is perfect! It's doing exactly what I want it to do, and I've learned a very useful new technique. Thanks! $\endgroup$
    – SJChannel
    Jan 14, 2022 at 20:11

This a good opportunity to use the Action Editor and the NLA. One approach is to do the animation in two parts. First animate the motion of the Boomerang along the path. Then animate the rotation of the Boomerang around its local Z axis.

Path Animation

This is easy:

  • Add a Bezier or Nurbs curve and edit it to match the path you want the Boomerang to follow.
  • Add a Follow Path constraint to the Boomerang, and set its Target parameter to the Boomerang. The Boomerang should move to one end of the path.
  • Select the curve and go to its Curve Data properties.
  • Enable (and open) Path Animation if it's not already enabled.
  • Set the Frames value to the number of frames you want the Boomerang to follow the curve.

Now when you scrub the time line, the Boomerang should follow the curve.

Creating an action for the rotation

You should probably do this before the other so it won't be too confusing.

If you go to the Animation workspace, the lower editor is already set to the Dope Sheet. Change the subtype to Action Editor

  • Set a rotation keyframe at frame 1.
  • Decide how many frames you want the rotation to take. Because rotation is a little odd and I don't want to explain the details, make it a multiple of 4. I picked 12 frames.
  • go 1/4 of the keyframes.
  • Rotate the boomerang 90 degrees on the Z axis in the appropriate direction.
  • Set a keyframe on rotation.
  • go 1/2 of the keyframes.
  • Rotate the boomerang 90 degrees on the Z axis in the appropriate direction.
  • Set a keyframe on rotation.
  • go to the last keyframe for the animation.
  • Rotate the boomerang 90 degrees on the Z axis in the appropriate direction.
  • Set a keyframe on rotation.

You now have an action. It will have name like boomerangAction if you called your boomerang "boomerang" in the outliner.

  • push the Push Down Button
  • Switch from the Dope Sheet to the Nonlinear Animation Editor, often called NLA.
  • Open the side panel, if it's not open. (Shortcut N)
  • Select the strip tab.
  • Open Action Clip if it's not open.
  • Go to the bottom and set Repeat to the number of frames you selected for the path animation divided by the length of the boomerang action.

That will cause the boomerang to rotate as it follows the path and it will loop the rotation the number of times you picked.

Screenshots that might help

Follow path constraint on boomerang:

follow path constraint on boomerang

Path animation settings for Bezier Curve

Path animation settings

Action editor showing the created action. NOTE: I renamed my action to "RotateBoomerang"

Action Editor

NLA showing the action strip with the repeat count highlighted


Summing up

There's too much to cover in a Stack Exchange answer; and I'm sure you have more questions. Many of them will already have answers here, so do search for them.

Bonus for getting this far:

It's not your boomerang, or the path you intend to follow but here's my sample file showing a boomerang following a Bezier Curve for five rotations over 120 frames.

  • 1
    $\begingroup$ Thanks! I am new to Blender and wasn't even aware of the Action Editor or the NLA feature. However, I tried your .blend file and it doesn't quite solve the entire problem. At the beginning of the curve I want the boomerang to be in the vertical plane, and at the end of the curve I want it to be horizontal--all while spinning on its own Z-axis. Here is the render I was able to create before I got stuck and came to stackexchange: link. Now I need the boomerang to tilt by 90 degrees as it travels. $\endgroup$
    – SJChannel
    Jan 13, 2022 at 23:57
  • $\begingroup$ Give it a second action that is as long as the whole animation. In that action rotate it on its X axis. $\endgroup$ Jan 14, 2022 at 0:30
  • $\begingroup$ The problem is that that the boomerang's X-axis is constantly changing as the boomerang spins around its Z-axis. I need a rotation axis that follows the tangent of the curve along which the boomerang is traveling. The required axis would be perpendicular to the object's Z-axis, and tangent to the curve. $\endgroup$
    – SJChannel
    Jan 14, 2022 at 3:46
  • $\begingroup$ You should probably ask that as a new question. Perhaps someone else could give you a better answer than I have time for just now. $\endgroup$ Jan 14, 2022 at 3:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .