Animate a spheres system as a camera diaphragm

I have to make an animated intro from this logo

As you can see, there's a galaxy shaped array of spheres forming something similar to a camera's diaphragm. I would like to know which is the fastest way to create mesh for that shape, being able to animate it as a close-open diaphragm.

I was thinking about creating the "galaxy", ring by ring, creating a single sphere and then using array modifier, set to "fit curve" and then linked to a ring curve. Is that the way? I need to animate the spheres in a way that the ones closer to center gather at it, while the outer ones keep in position. The intermediate ones move the most as they are closer to center. That movement must be spiralled, as keeping the "galaxy" idea.

If you don't need the circles to morph so they never intersect, you can quickly fake it using a few dupligroup instances.

Create a singe circle, use an array modifier over it with the option Object Offset and Relative offset. Exactly over it add an empty object and scale it down as desired (in my example by a factor of $$0.8$$).

Create a group from the arrayed circle, and add a instance of it in a separate scene. Place the 3D Cursor at the desired position for the center of the iris, press . (Period Key) to use it as pivot for transforms, then duplicate-rotate the circle instance around it several times to fill a circle with the desired number of times.

Animate them by keyframing the rotation property, rotating around individual centers with Ctrl + .

Have in mind that this technique will cause intersections at more extreme angles. If you wish to compensate for those you will probably also have to animate the scale property of either the circles or the array empty. You may also look into Animation Nodes addon for a node based procedural setup.

• Thanks! I follow you until the step where you set the 3d cursor as transform orientation. I'm just hitting period key in object and edit mode with no results. – Lisan May 14 '18 at 21:01
• Make sure you 3D cursor is properly placed at the center. Also make sure you are not using the NumPad period, as this as a different function – Duarte Farrajota Ramos May 14 '18 at 22:26
• Thath was my trouble! I was hitting numpad period :P. I almost have it, but I can't manage to make the arrays to fit a perfect circle. My last array melts my first, array, or I get a gig between them. Do you make some kind of calculation to set the distance between one array and the next one? – Lisan May 14 '18 at 23:18
• Excuse me for so many questions but... does the simple existance of another object affect the array? Because, after doing the same procedure but having un scene a plane with original image textured on it as a guide, the origin of the group instance is now on image center, and I am no more able to move them allthogether. – Lisan May 14 '18 at 23:41
• Group instance origin is by default at the world coordinate 0,0,0 unless configured otherwise. You can set it from the object properties panel. – Duarte Farrajota Ramos May 15 '18 at 1:06