Page MenuHome

Circular Array modifier
AbandonedPublic

Authored by Christian Hubert (alikendarfen) on May 6 2018, 3:42 PM.

Details

Summary

Circular array modifier, ported to 2.8.

Here is a demo video.

The parameters:

  • Modes : simple, homothetic, rounded
  • Simple mode: the modifier creates simple duplis of the mesh rotated around the axis

*Angle of rotation*: the mesh is duplicated < slices > time inside this angle
*Slices*: amount of times the duplication occurs
*Iterations*: amount of times the angle is repeted
*Heigh*t: wanted height, with 3 modes. Slice: the height is the height between two consecutive slices. Iteration: the height is given for an iteration. Total: the height is total height of the result
*Axis*: 3 possibilities. Around X and facing Y. Around Y and facing Z. Around Z and facing X. See comments about that below
*Pivot axis*: another object can be used as pivot (instead of the object origin and local axis)

  • Homothetic: the duplis are stretched transversally so that they can be joined. Below the parameters which are different from simple mode

*Margin angle*: an angle between slices
*Shear*: connect mesh borders along the height
*Merge*: merge border vertices (from a slice to the next one and from first/last slice)

  • Rounded: same as homothetic, but the vertices are shifted longitudinally to make the shape round. The parameters are the same as for *homothetic*

Comment about axis: the calculation considers a < facing axis >, so that (for homothetic and rounded modes), the connection between slices is done when the mesh is symmetrical along this facing axis.

Another calculation could avoid that, by projecting the mesh along the rotation axis whatever its position is around it. But using a facing axis allows to obtains asymmetrical effects (visible in the video), at the cost of user effort to place the mesh (or axis object) correctly.

Sybren, I propose you as reviewer, if you're ok.

Diff Detail

Repository
rB Blender

Event Timeline

Unfortunately we won't be accepting new modifiers that instance geometry many times.

This is inefficient and in general we should be using an instancing system for this (duplicators):

Added section in the anti-features page for this:
https://wiki.blender.org/index.php/Dev:Source/Architecture/AntiFeatures#Modifiers_that_Instance_Geometry

A modifier like this can be used to clone geometry for use with duplis, such as turning a single face into a ring of faces for use with duplifaces for the real geometry. This particular modifier could also be useful for radial symmetry when poly modeling, something that is currently much more awkward than it needs to be in Blender.

Updated link to Anti Features here: https://wiki.blender.org/wiki/Reference/AntiFeatures

Since this is conceptually similar to the existing Array modifier, can this not be accepted as an exception and ported to the instancing/duplicators system when that is ready.

I know that this is a modifier that a lot of artists would find very useful even if it is inefficient.

Unfortunately we won't be accepting new modifiers that instance geometry many times.
This is inefficient and in general we should be using an instancing system for this (duplicators):
Added section in the anti-features page for this:
https://wiki.blender.org/index.php/Dev:Source/Architecture/AntiFeatures#Modifiers_that_Instance_Geometry

If you want to be strict and just in enforcing these rules, then the Array modifier should be removed in 2.8 (despite being one of the most used modifiers). If you won't decide to remove Array modifier, then why would you choose to limit its usability by not enhancing it with a widely requested feature? https://blender.community/c/rightclickselect/Gdbbbc/ To me it sounds more like personal biased decision, rather than a logical one.

It feels like a decision of someone who is unfamiliar with mainstream modeling workflow. Radial array is often used in conjunction with additional modifiers on top to generate radially symmetrical geometry. In such cases, it's highly undesirable to have such geometry as a separate objects, let alone instances. In the cases, the geometry is rarely high poly and rarely instanced many times, so performance is not much of a concern.

Furthermore, the main point of having radial array as a modifier is that it remains a dynamic operation in the stack, which can be adjusted and updated.

Lastly, I don't think people even expect the modifiers to actually instance the geometry. If they just duplicated it, that'd be fine too. Almost no one will be making arrays of hundreds of high poly meshes. Array, as a modifier, is just a generative modifier. It generates topology, like many other Blender modifiers.