# How to make objects follow a ellipse? (Duplication around ellipse)

I am trying to make a Quidditch scene from Harry Potter.

So I am trying to make outer diagonal trees.

I used Array modifier Object offset, target to empty at center

I can make "Circle" but I can not make "Ellipse".

I tried to change Location, Rotation and Scale of Empty and Wood Object.

Thank you.

(Blender 2.90 Windows 10)

Follow path with offset.

When using follow path with fixed position one end is offset factor 0.0 the other 1.0 or for a cycle this is same. Half way is 0.5 etc.

Make a tower at origin, give it a follow path constraint, using the ellipse, with fixed position and no offset factor.

And oops, make sure that scale is applied on your ellipse AltS Scale ie it has unit scale and select follow curve on constraint to have the towers aligned to ellipse.

Now duplicate the mesh and move it around the ellipse using the offset factor...... being a scripter that's too much hard work, so have written a little script to do just this. Or via UI with Shift or Alt D for duplicate linked (same mesh) or unlinked respectively. And set the offset factor for each.

Little script, select tower, run script to make other distributed copies.

import bpy
from bpy import context

copies = 16

for i in range(1, copies): # copies - 1
tower = context.object.copy()
# comment following to have linked copies (same mesh)
tower.data = tower.data.copy() # an unlinked dupe (own mesh)
tower.constraints[0].offset_factor = i / copies


A bonus here is can easily move the goal posts, in case they are not all to be equally spaced around the ellipse by adjusting the offset_factor to have them remain on the path. Picture in OP almost looks like it may 18 spots with the two pointy end towers removed. No doubt all details are well covered on the 'net. (Kudos too to J.K. Rowlings for her support of the IRC chat servers)

• Oh my God, I don't know how to say but at first let me thank you so much ; ; And I'm sorry for the late reply. I didn't have notifications set up. The person who answered me before was talking about you. So I asked Google, but the search didn't turn up anything. But now that you've actually answered, I feel like I've been saved by a hero. – Hana Apr 15 at 7:50
• I'm new to scripting and I feel like I'm working magic. In order to become a great mage like you, I'm going to learn scripting as well as CG. I know this may be a bit presumptuous of me, but I would love for you to see this quidditch scene when it is finished. Thank you very much for your help. From a little muggle – Hana Apr 15 at 7:51
• sorry I did not know about to accept the answer. Thank you so much! – Hana May 20 at 14:02

Create a plane, create a curve, scale the curve in Edit mode to make an ellipse, give the plane an Array and a Curve modifier with the curve as Curve Object:

Create your tower object, parent it to the plane. Select the plane, in the Properties panel > Object > Instancing, press on Faces, your tower will duplicate around the ellipse shape:

To make each instance independent, select the towers and press CtrlA > Make Instances Real. If you want them to not share the same mesh, go into the header menu > Object > Relations > Make Single User > Object & Data.

• but you could also do this with python - batFinger would need 2 mins for this ;) – Chris Apr 14 at 9:48
• wait for the Robin Betts's full procedural solution!!! – moonboots Apr 14 at 9:49
• ok, i will wait!!! So Robin, why do you need so long? – Chris Apr 14 at 9:50
• Probably he's not as strong as we thought :// – moonboots Apr 14 at 10:37
• This is a bit disappointing...so I always looked up to my heroes: Iron man, Supergirl, Wonderwoman, Spider-Man, Fantastic four, batFingers, Robin Betts, Moonboots...but looks like I have to reduce my list. :D – Chris Apr 14 at 10:54