I've been playing with a little retrofuturism lately and found myself missing a Bryce tool: Multi-Replicate. Similar to Array, Ring and Symmetry, it allows you to create instances of a single original object, but it lets you set the physical offset, scale and rotation for each axis. It also has a checkbox which will cause the scaling on each axis to be applied to that axis's offset. Video example of the tool here. Very nice for pseudo-organic forms.
OK, I looked at the Relative Particle Array and it's great. It does everything I was looking for, but it's not very easy to understand. I suspect a lot of the data it asks users to provide could be calculated behind the scenes.

So I looked at the script and got ambitious. ( Big thanks to the original script's authors, Filip Ceunen & Hiroto Tsubaki )

Below is the first step in my version, Multi-Replicate.js

MultiRep_unscaled.jpg MultiRep_scaled.jpg MultiRep_interface.jpg

It currently allows Offset, Scaling, and Rotation in Global space. It also shows the impact of using the Scale percentage value to modify the Offset or not, referencing to the "Scale Offset" checkbox.

I will add a dropdown list to select between Global or Object Space - primarily so that Rotation will affect the displacement directly instead of just rotating the object itself, making it possible to produce a curved set of particles. ( I'm not sure how to go about using Normal Space, so that's last on the list. )

Issue A:
I attempted to use the API's Vec3D math functions, but I couldn't get it to work, so I manually calculated the new value for each axis value. The math for Global Space is simple, but doing it in Object Space will get more complicated. The Relative Particle Array script does that math, but it uses all provided input values, whereas this streamlined interface will require calculating some of those values from the more limited set of input values. I think I know how it will be done, but there will be a lot of trial and error along the way.

Issue B:
The way the new script works, it's easy to produce the replicated particles, but the mechanism seems to intercept and prevent the rendering of the initial source object. The Relative Particle Array script behaved the same way. I have a strategy to get around that, now that I have some practice.

Javascript is not my primary language. If anyone knows any script examples or tutorials using the Vec3D vector math functions, please point them out for me.

frank beckmann

Well-known member
Just a quick reminder that there´s a polygon Array-tool in the shelf:
took 1 plane - adjust - hit OK 3 times - boom - just for fun: