Boolean operations…
17 messages in this thread
HI,
Are there bugs on the 3DS's boolean operations ? Because
Creating an Object, I 've used boolean to make grooves. But this
operations create black triangles (my object is grey !). these
triangles are not removable ( the only way is to create the boolean
again moving a little bit the source. but it's not always runnig
well).
If boolean are bugged : Are there an IPAS to make all booleans possible
?
Regards,
BAILLE Philippe / FRANCE
Theirry,
The black triangles you are seeing might be faces with their normals flipped.
Try rendering 2 sided and see if the triangles render.
<<Are there an IPAS to make all booleans possible >>
I'm not aware of any IPAS routines that enhance Boolean functions. If you need
more Boolean editing that 3D Studio provides, your best bet is to move to a
modeling package (like AutoCAD with AME or R13 and ACIS) which has a much
stronger set of Boolean functions. Many people model in ACAD and then bring
over the models to 3DS.
-Brian
>>The black triangles you are seeing might be faces with their normals flipped.
Try rendering 2 sided and see if the triangles render.
I, too, have been having a lot of problems with boolean and flipped normals.
What I don't understand is why object unify doesn't seem to correct this.
Because of this "bug" I tend to avoid using boolean operations altogether. I
spend too much time doctoring up stuff created by the software in error.
Also, I think it is a poor policy to suggest that the solution to a bug like
this is to use ACAD. If boolean is in 3DS then lets just fix it so it works.
As a user, I don't want to be concerned that when I perform a function like
boolean that if the geometry gets beyond a certain complexity that I have to
resort to another software package when 3DS purports to have this feature built
in.
The command "object unify" will not work if the only some of the faces
in an object are in wrong normal direction.
The solution is too use "face flip" to flip each face individually,
When you perform a series of boolean operation on one object, such as
a series of holes, grooves or whatever, the sequence of picking the object
for boolean operation is tricky. It is always better to do those from the
inside first and work outwards. If you still have problem at the final
object, then you need fix the meshes by "edges\turn". Most of the time,
you do not need to rely on other software.
Using boolean for simple boring of holes is about all that 3DS boolean is good
for. With really complex geometry it just does not work as described. I'm
talking text or whole words etched out of a flat plate object. This is too
complex to decide which element to start from. What should be a simple
operation according to the description in the manual becomes rather complicated
due to it not working right. I have used object unify for this purpose with
other models. I don't know why it didn't seem to function on the boolean
result object. To flip the normals one face at a time is obsurd since I had a
couple thousand faces that were fliped.
Fortunately, the whole concept of 3D animation is deception. So, I just
created a bump map and texture map for the letters. On the TV monitor it
looked just as good. The project is done now and will be delivered on
schecule.
FWIW, I've had great luck using optimize to unify normals after a boolean
operation. Sometimes I have to do it a couple of times, but I can always get
it to work. Besides, in optimize you can turn on Show Normals to see exactly
what's going on.
Craig
Don,
FWIW, I almost never use booleans. With time spent on planning I can model most
things without using them at all. That means creative use of shaping and
lofting (deform fit) and quite a bit of edge/vertex/face manipulation.
Hello,
just to help a little bit out. Take a look at the SCALPEL IPAS and the
pictures. SCALPEL does not replace booleans. But it's functioning with every
size and kind of 3D Mesh. Scalpel allows you to cut every 3D Object and it will
help you very much in producing complex objects. In SCALPEL you can use more
than one "scalpel" to cut so you are able to cut things out. Look at the
picture FEDER.JPG. This shows the effekt.
Again, if you like to bool it seems to be a real boolean result in 3DS (it
worked or it does not work)!
Some of our customers use SCALPEL in their modeling process and they like the
idea to count on SCALPEL when they need to cut things away! It's easy, it's
fast, and it's low price, too! It sells in USA (around US$ 100) . .. Call
Digimation for more info!
greetings from germany
the SCALPEL team
Thanks for the tip.
I got through this one using a bump map but in the future if I need anything
more than simple boolean operations I will consider using different software as
most have recommended.
Don, there's a big difference between the way ACAD (and almost every other
program that does booleans) uses a CSG system to determine the boolean result,
and the way 3DS uses an arbitrary face-topology system. Using deterministic
CSG-based primitives, it's possible to always get deterministic results. But
using arbitrary manifold topologies, it's impossible to be mathematically
precise. We really try our best, however.
– G
Don,
Booleans as has been noted can get complex. And like you I've had problems with
it but if its important enough I can usually get it to work. The dilemma is
that to be able to do a good boolean you need a lot of faces. If you have a lot
of faces conversely there is the potential to have many of them reversed.
Craig's point about Optimize is a good one, but it also requires some planning
which can't always account for all the problems you are likely to encounter.
One thing which is really helpful is to assign a material to each object which
is going to be booleaned. Then once the boolean is accomplished you can
dismantle it based on faces assigned by material. This is useful for breaking
it down into a more manageable size for clean-up.
Not a solution per se but hopefully a few useful tips. 🙂
John
<<I, too, have been having a lot of problems with boolean and flipped normals.
What I don't understand is why object unify doesn't seem to correct this.
Because of this "bug" I tend to avoid using boolean operations altogether.>>
Object Unify does not always fix the problem, not becuase of a bug, but simply
because of the position of the face in question. The algorithim will look at a
certain face, and based on its position and relation to the bounding box and
center point, will determine whether it is facing inward or outwards.
<<Also, I think it is a poor policy to suggest that the solution to a bug like
this is to use ACAD. If boolean is in 3DS then lets just fix it so it works>>
The boolean functionality between ACAD and 3DS are very different. The 3DS
modeler was not designed as a full function Boolean editor. It is a question of
using the right tool for the right job. If you need to create complex booleaned
objects, you need to use a full function boolean editor.
-Brian
Brian,
"The boolean functionality between ACAD and 3DS are very different. The 3DS
modeler was not designed as a full function Boolean editor. It is a question of
using the right tool for the right job. If you need to create complex booleaned
objects, you need to use a full function boolean editor."
I am so sick of hearng that cop out. You software dev guys need to get a clue.
Us guys in the pit would sell our right arm for a program that all of the
features actually worked. Why is it that Autodesk has there sh$%% together for
booleans for Autocad and not for 3DS? Don't your dev teams share code? Maybe
its time they did? It is not so much the problem of buying another peice of
software as it is to train people to use another program. I've got so many
different programs allready. Almost all of them overlap in features, but not
one of them has all of the features working!!!
Wheww! Sorry I had a bad day trying to get tech support with software techs.
🙂
Andrew
Graphic Alchemy Interactive, Inc.
Andrew,
I am sorry you are frustrated. I have forwarded your message to the
appropriate product manager.
-Brian
Andrew,
There is a major difference between how programs like AutoCAD do booleans and
how 3DS does booleans. This effects the chances of successfully generating the
new surface. AutoCAD will only do boolean operations on objects created from
solid primatives and simple extrusions. 3DS will do booleans on any objects
(or at least attempt to).
When doing booleans with solids, AutoCAD has an exact knowledge of the form of
the original pieces and can easily predict the boolean result. Solids have
know forms, volumes, and definate insides and outsided. They always have fully
closed surfaces. AutoCAD cannot do booleans on arbitrary surfaces. When it
comes time to put a mesh surface on booleaned solids, AutoCAD will seperatly
generate meshes for each surface. The vertices for each surface may not line
up and may not be connected. You will have to manually move and weld vertices.
3DS must analyze and attempt to find the surfaces of completely unkown forms
and must figure out where the inside and the outside of the surfaces are.
Sometimes it doesn't get it right. Several things can complicate the issue.
Objects in 3DS don't have to be closed. They can be deliberately open or there
can simply be inadvertant gaps in the mesh. This can confuse the routine that
determines where the insides and outsides of a form are. Objects with multiple
elements can also have this effect, expecially if the elements overlap. Any
overlapping faces in the mesh will also confuse the boolean operation. Long
thin faces are probably a problem because of rounding errors.
Unify/Normals has similar problems with complex or damaged mesh surfaces. It
will handle faces with mixed up faces. That is what it is designed for, but if
there is a gap in the mesh or overlapping faces or multiple elements, then
Unify/Normals will also get confused.
3DS's boolean function, when it fails, may create gaps or overlapping faces.
If you do a subsequent boolean, it will compound the problem and Unify/Normals
will not help.
When you do a complex boolean in 3DS it is often best to do it in stages, one
element at a time, checking the mesh carefully between steps for errors. Save
a new version of the file between each step. This lets you go back to any
given step and start over. You want to do this because you may not catch an
error until some later step.
I do hope that Yost Group will develop a smarter boolean function for R5 that
has less tendancy to trash a mesh when it fails. I doubt that there will be a
revolutionary improvement because of the difficulty of doing booleans on
arbitrary mesh surfaces, but who knows.
This is not meant as a flame at you, but just to let you know that there is not
way that AutoCAD and 3DS can just "share code" for booleans.
Terry Gilbert
Forcade & Associates
"This is not meant as a flame at you, but just to let you know that there is
not way that AutoCAD and 3DS can just "share code" for booleans."
Terry,
Thank you for your response it was somewhat informative. I am not a big
Autocad user (I haven't touched it much since 3DS came out), but was impressed
when someone showed me how easily Autocad handled 3D booleans. I still do not
agree with you though. Why couldn't 3DS do its modeling using the same method
as Autocad so booleans could be done. And like Autocad, these solids could
then be converted to meshes. All I know is that when I need to do a boolean,
they only work correctly about 25% of the time and I hate having to use and
learn and teach my employees to learn 4 or 5 different modeling packages
because not one of them will do all they claim. Maybe Autodesk should not in
their specifications "It can do some booleans. (If you stand on your head, say
the magic word and cross your fingers. 🙂
I do alot of programming so I am aware that there are underlying issues. But
sometimes you have to let go of a lot of hard worked code and try something new
that someone else may have done better than you.
Sorry 🙂 It just ticked me off that Autodesks attitude was "Hey just buy
Autocad!"
Andrew
Don,
I can sympathize with your effects to do complex booleans in 3DS. It can be
frustrating. I sometimes have to resort to using AutoCAD for some things
(where possible). Maybe some background on the differences between AutoCAD and
3DS booleans will help you to decide when to use which program.
There is a major difference between how programs like AutoCAD do booleans and
how 3DS does booleans. This effects the chances of successfully generating the
new surface. AutoCAD will only do boolean operations on objects created from
solid primatives and simple extrusions. 3DS will do booleans on any objects
(or at least attempt to).
When doing booleans with solids, AutoCAD has an exact knowledge of the form of
the original pieces and can easily predict the boolean result. Solids have
know forms, volumes, and definate insides and outsided. They always have fully
closed surfaces. AutoCAD cannot do booleans on arbitrary surfaces. When it
comes time to put a mesh surface on booleaned solids, AutoCAD will seperatly
generate meshes for each surface. The vertices for each surface may not line
up and may not be connected. You will have to manually move and weld vertices.
3DS must analyze and attempt to find the surfaces of completely unkown forms
and must figure out where the inside and the outside of the surfaces are.
Sometimes it doesn't get it right. Several things can complicate the issue.
Objects in 3DS don't have to be closed. They can be deliberately open or there
can simply be inadvertant gaps in the mesh. This can confuse the routine that
determines where the insides and outsides of a form are. Objects with multiple
elements can also have this effect, expecially if the elements overlap. Any
overlapping faces in the mesh will also confuse the boolean operation. Long
thin faces are probably a problem because of rounding errors.
Unify/Normals has similar problems with complex or damaged mesh surfaces. It
will handle faces with mixed up faces. That is what it is designed for, but if
there is a gap in the mesh or overlapping faces or multiple elements, then
Unify/Normals will also get confused.
3DS's boolean function, when it fails, may create gaps or overlapping faces.
If you do a subsequent boolean, it will compound the problem and Unify/Normals
will not help.
When you do a complex boolean in 3DS it is often best to do it in stages, one
element at a time, checking the mesh carefully between steps for errors. Save
a new version of the file between each step. This lets you go back to any
given step and start over. You want to do this because you may not catch an
error until some later step.
I do hope that Yost Group will develop a smarter boolean function for R5 that
has less tendancy to trash a mesh when it fails. I doubt that there will be a
revolutionary improvement because of the difficulty of doing booleans on
arbitrary mesh surfaces, but who knows.
Terry Gilbert
Forcade & Associates