Grid Distribution Adhering to Local Axes

When distributing objects in a grid, right now this grid will align to the world axes. One can define spacing in X and Y direction. This is OK, if one wants to scatter objects on a rather horizontal surface and with simple orientation.

It gets a bit tricky though, if the host surface has been rotated. One could try to align the grid (via the Rotation option in the Distribution settings) and independently align the objects (via the Rotation option in the Transformations settings). But as soon as you have two separately grouped and differently rotated host surfaces, you’ll need two independent compositions - that have to be re-adjusted whenever you change those host surface rotations.

And now imagine you want to scatter objects on a vertical surface in a grid fashion (e.g. differently styled windows). Thats simply not possible, because even if you set the Distribution Mode to Face Space, the grid can only be set via X and Y.

Solution:

  • When the Distribution Mode is set to World Space: Keep Orientation according to world coordinate axes

  • When set to Object Space or Face Space: Adjust orientation of the Grid, as well as the scattered objects, according to the hosts axes (individually for each host)

What do you think? Does that make sense?


PS: In the above window-example on the left, I’d separately group those two walls and set their axes with the Z-axis as the normal axis (pointig away from the surface) and the Y-axis pointing up. That way I could easily define the correct window spacing for both walls…

1 Like

Hi @jakob-winter

Thanks for the thorough explanation.

I think that you’re right.

At the moment, Skatter uses the world axes even in “Object/Face Space” mode, so the grid rotation is decoupled from the host’s. By using the host’s axes, as you suggest, the grid rotation should be applied more naturally.

We’ll discuss this internally and add it to our todo list if there’s no technical hurdle to implement that change :slight_smile:

2 Likes

@jakob-winter
Quick update: we discussed this change and we’ll implement it soon.

1 Like