View Single Post
Old 7th November 2012, 05:34 AM   #1
coldby
Senior Member
Professional user
 
Join Date: Jun 2006
Posts: 102
Smile Booleans: think BIG!

Yesterday night I was drawing a 3D phillips screwdriver, so just for the fun of it - only in this forum I could admit such a weakness without looking too much of a moron.
Well, the quickest, cleanest way to do the job was to byte four right-angle chunks off a basic cylindroconical shape - that's to say, boolean subtract.

My past experiences with AC3D's booleans weren't really amazing, so I tried without much enthusiasm. And punctually the outcome was a disaster: plenty of missing surfaces, the sinister cyan glow of illegitimate ones, the weird red contour of distorted ones... not very encouraging indeed.
Then a tiny light bulb popped alight somewhere in my skull: my model was tiny, the 0.0125 units/inch suited for an actual-size DAZ prop. Now what if... no sooner thought than done, I clicked 8 times the 200% button and tried again.

This time the outcome was impeccable.

Curious, I began challenging the booleans with increasingly difficult provocations - all of them 256 times as large as usual - and each time the results were flawless.

As a physicist I don't believe in miracles (other than when my mother-in-law occasionally shuts up, but that's another story), so I started looking for an explanation in order not to have my sleep haunted by ghost booleans. And a plausible reason eventually surfaced:
the floating point arithmetic has its limits: we just cannot squeeze infinite real numbers into the finite range a computer can handle, no matter how we represent them. Or, to be more precise, we can do that, but not without losing some small change en route.
Now, if you're wealthy enough you can afford that much without even noticing the loss, but if you're a beggar small change may be all you have in your pocket. And my original tiny model was definitely a beggar.

I'll stick to this hypothesis until someone comes up with a better one. And in the meantime, every time I'll have to use a boolean, I'll enlarge my model some 256 times first, boole it, and then shrink it back to the original size. Apparently it works fine.

And should someone better skilled than I find a discrete procedure to do the same without so much fuss, I'll be happy to buy her a bottle of champagne (if she's a she) or him one of whisky (if he's a he) .

Last edited by coldby; 7th November 2012 at 07:10 AM.
coldby is offline   Reply With Quote