Hello all,
in order to optimize a 3D scan file (which is now an STL-file) for 3D printing, I want to increase the wall thickness. I can't show you the model - confidential - but I created a dummy object to experiment with. It is a hollow object, it has a clearly visible outside (duh) with details and a somehow hidden inner area.
So, the idea is to increase the wall thickness but without affecting the outside of the object because that would destroy precious surface details. That's also the case inside the object, but as that area is hard to see, it's not such a big problem.
In order to only offset the surface in hard to see areas, I thought about ambient occlusion. It's basically distinguishing the inside from the outside of my model - for free! It's not perfect, but I don't have to manually mark polygons for later pushing or extruding. The actual object is about 500mb in size and has millions of polygons, so I need a somehow automated option.
So it basically works:
01) The dummy object
01) The dummy object
02) Base color is ambient occlusion
02) Base color is ambient occlusion
03) Displacement map uses ambient occlusion
03) Displacement map uses ambient occlusion
Downside A) it only displaces the outside (and ab it of the inside as the AO is not pitch black there, a minor detail for later)
Downside B) image 03 is just a rendering. How can I manifest the map functionality into an editable poly?? I never did that. It would have to be necessary if I could manage to make the displacement work correctly.
To encounter downside A, I tried a couple of things that did not work:
04a) Swapping black and white in the AO map.
04a) Swapping black and white in the AO map
It negatively offsets the outside towards the inside. I want the inside to be offset.
04b) Inverse ambient occlusion as base color
04b) Inverse ambient occlusion as base color
Just to see if inverse AO works as it should. It does. So why does the displacement map misbehave?
05) Reverse normals
05) Reverse normals
Looks like all areas are offset negatively.
06) Reverse normals and negative offset value
06) Reverse normals and negative offset value
Looks like the base object. Other negative offset values don't do anything.
07) Reverse normals and inverse AO map
07) Reverse normals and inverse AO
Looks like 06 and like the base object - so basically not effective. I may have reached a point where I got confused with all the changes, so plowing ahead now
Right now (or earlier) you may think, why don't you use the displacement modifier? Because it doesn't seem to accept ambient occlusion as a map, neither for actually displacing the surface nor for rendering.
Alright, so is this a good approach, combining ambient occlusion with displacement? If so, I need some logical help as I couldn't make the offset to go into the right direction and I need a way to have an actual editable poly in the end.
If you worry about mesh overlaps, which definitely happen when offsetting a mesh, I deal with them later. As a little help, I created this image:
08) Fake result
The surface of the inner area moved along the normals, so the wall thickness is increased. The holes' borders are also thicker, although that might not be the case later, as the AO increases gradually. As I created this dummy in Max, that was easily done. The original 3D scan files need a special solution.
So I hope you understand what I am trying to do and have an idea how I could do it. I can't script yet, so I cross my fingers for a solution I can wrap my head around 😉
Big regards,
Sam
EDIT #1: I tried baking the AO as texture. I started with a really simple model to get quick results of the theory. When I used the baked texture as a map for the displacement modifier, it did NOT use it properly. In order to show you, I wanted to do this with my dummy object, but Max is still Flattening the UV's. As the dummy is already simple compared to the 3D scan files, Max would not be able to flatten the UV's to give the baked texture the right coordinates. And even IF, I point back at the displacement modifier not working as it should. It just displaced everything upwards. Hitting "use existing" (map coordinates) did not help. In fact, if I set up "cylinder" and then hit "use existing" it displaces as if "cylinder" was still set. So the result of this edit: even if I could get the displacement modifier to work how it should, flattening the UV's to bake the AO as texture breaks my Max's neck.
Can you upload that fake model object to play with?
Rob Holmes
I played with this. I hope it helps. Sorry for the video quality. Also, I accidentally cut off my parameters panel on the right but I think you can follow it. Autodesk's silly 71mb limit is frustrating. I don't know how they expect us to do useful videos that you can actually see clearly for such a small file size. But see if this could help your need.
Rob Holmes
Sorry for the late reply. Work had me distracted. Actually, I worked far ahead back then and the actual 3D print is pushed into an uncertain future.
Oh boy, thank you for taking care of the matter. You even made a video! However 🙂 I have two walls already. Although it's one wall because it is a hollow object with a tunnel (not saying hole here) from the inside to the outside. In fact, it's dozens of tunnels in the real object, but for the example object, I made just a few. So the object itself is printable, but partially too thin. For the example object, let's just pretend it is too thin. I am looking for a way to thicken the model - which is basically moving all walls (i.e. the one wall) towards its own normal and there by blowing up the model. As we know, details suffer from that method, so I want this blowing up effect only "inside" the model. Like, make a fist, open it a little bit. There inside, where it is shady and hard to see details anyway, there I want the model to be blown up. The outside should remain untouched. Yes, intersections will happen in there as well, but that's a problem for later. Hard to see anyway. Thanks by the way for the "relax selected polys" solution, although I don't need it here. I definitely didn't make myself clear enough.
As it is darker inside a model, my approach was "displace where dark". Maybe "push where dark" is a way to do it. In Max I can simulate the internal shadiness with ambient occlusion, so I tried to connect AO with Displace. "Connect" is the wrong word but maybe a hint for the solution. With my current skill set I can only stack modifiers. Maybe I should start getting used to the thingy, that has those panels that are CONNECTED by wires. There might be a way, pushing the walls only where the sun doesn't shine.
I've attached the example model. Well I condensed it into an STL, so there are no creation parameters that could help, because I don't have those in a 3D scanned object. In my initial post, I marked the areas in red, that I would try pushing first. Once the method works in principle, fine-tuning for beauty comes.
Cheers
Sam
Can't find what you're looking for? Ask the community or share your knowledge.