HOME | DD

eelstork — Blender Tip: Array+Boolean

Published: 2013-01-11 14:09:31 +0000 UTC; Views: 3882; Favourites: 16; Downloads: 22
Redirect to original
Description Last time with Array+Shrinkwrap I demonstrated how simple shapes can be used as 'limiters', for example to adjust the height of arrayed columns or other architectural elements.

In the previous case, Shrinkwrap+Array was a good alternative to CSG/boolean ops; although less intuitive, it updates in real time when editing meshes, and reliably works.
Boolean ops allow 'removing an object from another' or even intersecting/combining objects (Please google if the idea does not make sense).

Note: boolean operations are infamous in computer graphics. Sometimes they work, sometimes they don't.
And, when they work, more often than not they mess your meshes in unpredictable ways.
I'm not saying 'don't use Boolean operations nor do I know whether they still crash a lot in Blender or not (I got an edge case to crash on Blender 2.63). Just be careful.

Okay, here is a case where boolean ops are useful, *very hopefully safe*, and shrink-wrap is no substitute:
You arrayed objects and want to remove some of them completely.
Shrink-wrap cannot do this because, it doesn't *remove* any geometry to begin with.

So, in the example, I have arrayed the furniture/fixtures for several classrooms. But my building has a 'hole' in the middle.
So I just created a box (#limit cube) and added a Boolean to the modifier stack after the array modifiers.
I set operation to 'Difference' and assign #limit cube as Object; altogether this means "remove area covered by "#limit cube" from "Class Fixtures"

Works like a charm. It's not likely to crash because there are no intersections between the surfaces (regardless, save your file before applying any boolean operation).

There are simple alternatives : clone like there's no tomorrow (alt+D to at least keep shared mesh) or apply the array modifier first. But the method I describe is non-destructive and flexible.

Caveat: Make sure that normals are pointing outwards when performing boolean ops. Otherwise they won't work as you'd expect.
Related content
Comments: 4

cutleacanth [2017-06-30 19:18:45 +0000 UTC]

Ok, thats beautiful.... that never would have occurred to me, would'a thought booleans and arrays would be like apples and oranges.... (and could really come in handy for a space station I'm in the process of modeling.... So, hey, thanx....)

👍: 0 ⏩: 1

eelstork In reply to cutleacanth [2017-07-01 05:45:47 +0000 UTC]

You're welcome!

👍: 0 ⏩: 0

DreadKnight666 [2013-01-13 00:46:02 +0000 UTC]

Nice trick

👍: 0 ⏩: 1

eelstork In reply to DreadKnight666 [2013-01-13 02:44:39 +0000 UTC]

Cheers

👍: 0 ⏩: 0