I'm trying to rotate and duplicate the spokes around the axle in the center. This is supposedly possible with the array modifier, but I can't get it to work correctly for me.

When I select the axle as the "object offset" the duplicates just stack on top of each other rather than moving or rotating.

The objects are curve circles with linked curve bevel objects.

Is this a curve related issue, or something messed up with origins?

What am I missing?

enter image description here enter image description here


I've added a third picture. Here's the specific things that I'm not understanding:

  1. What effect does the placement of the "empty" in three dimensional space have on how the arrayed objects rotate? It seems to make some difference, but not in an intuitive way?

  2. Why does changing the "bevel" curve for the spokes cause the array objects to go out of alignment like a spiral? (see first screenshot, top right corner). The first screenshot bottom right corner is the curve that controls the spokes bevel. The wider it gets, the more the spokes spread out on the x axis. I'm not sure if this is a bug or not.

  3. What all steps need to be taken to set the point in 3D space that the arrayed objects rotate around? I thought this would be the empty or other "object offset", but I'm not sure if that's the only relevant factor.



This still isn't working for me. Ive set the 3D cursor, snapped the origin of the spokes to the cursor location, centered the empty on the cursor, and still, when I rotate the empty, the spokes go flying off into space like this:

enter image description here

  • 1
    $\begingroup$ Recommend you make the centre of wheel at the global origin (0, 0, 0). Makes arrays etc etc a lot simpler. Once you have it all hunky dory, select all the components that make up the wheel, and add to a "wheel" collection. Then you can instance a wheel and move it wherever you like with ease. $\endgroup$
    – batFINGER
    Mar 10, 2019 at 9:54

2 Answers 2


Add an Empty at the center of the wheel.

Set the array modifier to use the empty as Object Offset.

Set the relative offset to $0$ in all axis.

Rotate the empty to taste.

enter image description here

  • $\begingroup$ This method worked also in earlyer releases as well by the way :-) But It's a ver good way! $\endgroup$
    – M. Matz
    Mar 9, 2019 at 23:41
  • $\begingroup$ Are you required to use an empty rather than the axle that's already there? Doesn't appear to be working, even with the empty. $\endgroup$
    – Nick
    Mar 10, 2019 at 0:07
  • $\begingroup$ Ok, so It's half working now. I think it's related to origins and scale and that other stuff that always messes itself up. So on the empty, I used CTRL+A and applied the location and rotation. Now when I rotate the empty it does duplicate and rotate the spokes, but it's not rotating from the axel, it's rotating from some random point and the spokes fly all over the place. How do I set the part of the spoke that I want to be the rotation anchor? $\endgroup$
    – Nick
    Mar 10, 2019 at 0:19
  • $\begingroup$ I've updated the question with a new screenshot and the specific issues that I'm still struggling with. $\endgroup$
    – Nick
    Mar 10, 2019 at 0:48
  • $\begingroup$ The origin for the curve, the circle and the empty have to be on the same place. If the curve is not flat on the z axis then the array will turn into a spiral. $\endgroup$
    – user1853
    Mar 10, 2019 at 3:29

After a lot of experimentation, I've gotten this working. There's a lot more steps involved in getting this to work right when working "somewhere else" on the model besides the global origin (0, 0, 0) coordinate in a new file.

The object "origin" of the spoke affects where the rotation occurs around, so you need to set the spoke object's origin to the point on the object that points toward the thing you want it to spin around. ie. the origin of a bike spoke should be the center of the axel, which is likely outside the spoke object.

So here's how you do that (2.8 Beta):

First, select the spoke and go into edit mode. Then select a vertex on the spoke nearest to where it connects to the axel.

Press Shift + S and then cursor to selected.

Look in the right hand tray under "3D Cursor", and write down the 3D cursor coordinates in a note pad. x=0m, y=0.011134m, z=0.455884m.

Tab to exit edit mode. Select your axel then Shift + S, cursor to selected. This puts the cursor at the middle of the axel.

Now change just the x axis of the cursor to what you wrote down before (the axis than needs modified here will change based on what axis you are working on).

Now the cursor is exactly at the middle of the axel in Y/Z space, which you want to rotate around, but is also dead center (X axis) over the spoke, which is (part of) what prevents spiraling. So now the cursor is exactly where you want to rotate the spokes around.

In object mode, select the spoke, and then F3 to search (because the ctrl+alt+shift+c hotkey is missing in 2.8?), then origin to 3d cursor.

This sets the spoke's origin to the 3d cursor's location. Do not move the cursor yet.

Insert (Shift + A) an empty -> plane axis. This inserts the empty at the rotation point, which is also necessary for proper rotation.

Rename it "spoke rotator". Attach the spoke rotator to the spoke in the array modifier.

Press 3 to go into side view. You must do this in side view so you rotate the empty on only one axis.

Rotate the empty. It will spin duplicate the spokes properly now.

So the important things to remember are:

  1. Set the cursor to exactly where you want to rotate around.

  2. Set the spoke's origin to the cursor.

  3. Insert the empty at that cursor point.

  4. Rotate the empty (after linking) using side view (or constrained to only one axis).


You must log in to answer this question.

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