Community
3ds Max Modeling
Welcome to Autodesk’s 3ds Max Forums. Share your knowledge, ask questions, and explore popular 3ds Max modeling topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Offset model only in occluded areas -> Ambient Occlusion x Displacement Map x Edit Poly

3 REPLIES 3
Reply
Message 1 of 4
Sam_Jay
421 Views, 3 Replies

Offset model only in occluded areas -> Ambient Occlusion x Displacement Map x Edit Poly

Sam_Jay
Contributor
Contributor

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 object01) The dummy object

02) Base color is ambient occlusion

02) Base color is ambient occlusion02) Base color is ambient occlusion

03) Displacement map uses ambient occlusion

03) Displacement map uses ambient occlusion03) 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 map04a) 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 color04b) 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 normals05) Reverse normals

Looks like all areas are offset negatively.

 

06) Reverse normals and negative offset value

06) Reverse normals and negative offset value06) 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 AO07) 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

dummy 10 fake thickness.jpg

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.

0 Likes

Offset model only in occluded areas -> Ambient Occlusion x Displacement Map x Edit Poly

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 object01) The dummy object

02) Base color is ambient occlusion

02) Base color is ambient occlusion02) Base color is ambient occlusion

03) Displacement map uses ambient occlusion

03) Displacement map uses ambient occlusion03) 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 map04a) 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 color04b) 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 normals05) Reverse normals

Looks like all areas are offset negatively.

 

06) Reverse normals and negative offset value

06) Reverse normals and negative offset value06) 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 AO07) 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

dummy 10 fake thickness.jpg

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.

3 REPLIES 3
Message 2 of 4
RobH2
in reply to: Sam_Jay

RobH2
Advisor
Advisor

Can you upload that fake model object to play with?


Rob Holmes

EESignature

------------------------------------------------------------------------------------------------------------------------------------------
3ds Max (2023-2025), V-Ray 6.2, Ryzen 9 3950-X Processor, DDR 4 128MB, Gigabyte Aorus X570 Master motherboard, Sabrent Rocket NVMe 4.0 M.2 drives, NVidia RTX 4090, Space Pilot Pro, Windows 11 Pro x64, Tri-Monitor, Cintiq 13HD, Windows 11 x64
------------------------------------------------------------------------------------------------------------------------------------------

Can you upload that fake model object to play with?


Rob Holmes

EESignature

------------------------------------------------------------------------------------------------------------------------------------------
3ds Max (2023-2025), V-Ray 6.2, Ryzen 9 3950-X Processor, DDR 4 128MB, Gigabyte Aorus X570 Master motherboard, Sabrent Rocket NVMe 4.0 M.2 drives, NVidia RTX 4090, Space Pilot Pro, Windows 11 Pro x64, Tri-Monitor, Cintiq 13HD, Windows 11 x64
------------------------------------------------------------------------------------------------------------------------------------------
Message 3 of 4
RobH2
in reply to: Sam_Jay

RobH2
Advisor
Advisor

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

EESignature

------------------------------------------------------------------------------------------------------------------------------------------
3ds Max (2023-2025), V-Ray 6.2, Ryzen 9 3950-X Processor, DDR 4 128MB, Gigabyte Aorus X570 Master motherboard, Sabrent Rocket NVMe 4.0 M.2 drives, NVidia RTX 4090, Space Pilot Pro, Windows 11 Pro x64, Tri-Monitor, Cintiq 13HD, Windows 11 x64
------------------------------------------------------------------------------------------------------------------------------------------

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

EESignature

------------------------------------------------------------------------------------------------------------------------------------------
3ds Max (2023-2025), V-Ray 6.2, Ryzen 9 3950-X Processor, DDR 4 128MB, Gigabyte Aorus X570 Master motherboard, Sabrent Rocket NVMe 4.0 M.2 drives, NVidia RTX 4090, Space Pilot Pro, Windows 11 Pro x64, Tri-Monitor, Cintiq 13HD, Windows 11 x64
------------------------------------------------------------------------------------------------------------------------------------------
Message 4 of 4
Sam_Jay
in reply to: RobH2

Sam_Jay
Contributor
Contributor

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

0 Likes

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.

Post to forums  

Autodesk Design & Make Report