Offset model only in occluded areas -> Ambient Occlusion x Displacement Map x Edit Poly
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
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.