I have a large (geographic) area that represents an environment. This area is mostly planar, but it does have regions where more detail is needed. In these areas I need to displace the vertices. I need to work within these constraints due to the pipeline being used. I.e. I cannot opt to use a different model and the final image will not be rendered in Blender - so the model must be baked before being exported.
I have a black and white image that indicates where there needs to be detailed displacement in the planar surface.
Is it possible (maybe with geometry nodes?) to add resolution to the areas where the map is white? I am ok with this being n-gons and I am also ok with it being triangulated. I need a fair bit of resolution where the displacement is, but I am trying to keep the overall geo count down so wherever the surface is planar, it should have relatively few polygons.
Also, this method cannot destroy the UV’s - one of the reasons I didn’t just paint in extra detail using dynotopo in sculpt mode (that appears to destroy UV’s as far as I can tell).
Any thoughts on this? All help and hints greatly appreciated.
AFAIK there is no subdiv by mask feature in any 3D software. I only can thing of subdividing the mesh; displace the wanted area and then use the decimate modifier with collapse or planar option to get the face count smaller again.
Or even select the areas and subdiv in edit mode to newer get so high poly counts… maybe using the mask tool in sculpt mode with the b/w image as mask texture and then …
I am not sure I have heard of any packages that can do that either. I thought maybe Houdini, but I am not sure and doing some googling has not turned anything up (though my terminology may be getting in the way here).
That said, I think it is (at least in theory) possible. It just may not be possible using Blender as it currently stands.
I played around with it a bit more and I have managed to get a little closer. I still have a few hurdles to overcome but perhaps you (or someone else) may have some input there.
So that is a fair bit of progress. But there are two issues I am still having:
This process destroys the UV’s.
The initial node that selects the faces based on the map has some sort of an algorithm that only selects faces if more than 50% of the face is covered with white pixels. ← I am guessing about that, but it appears to be the case. This is a problem because if i have a relatively thin line it skips faces that I would actually still want subdivided. This second issue probably can only be solved by the Blender developers. I will post a suggestion about it on right-click-select. But this second problem is one I can work around by adding enough base geometry (and thickening my lines) that I get something close to what I am looking for.
Here are a few questions I have in case anyone can answer them:
Can we transfer UV’s using geometry nodes? I have searched a bit and found this post that indicates the answer is “no”, but I want to make sure:
Is there a way to dissolve verts or edges within geometry nodes? There is a delete geometry node that behaves more or less the way I would expect, but of course that deletes the selected vertices instead of dissolving them.
Hey, you can look here for a different method to do varying density on the mesh :
That would work only on a flat surface, but you can then turn it into a sphere latter.
I think except if you really need to work non-destructively, you can work in different destructive steps.
It will be simpler rather than doing everything with Geometry Nodes, which is of course possible but more involved.
Like if the UV are destroyed it’s always possible to transfer them, or re-unwrap them latter, after having the geometry nodes applied.
Try to do a lot of tests until you find the proper workflow, then build the final.
that’s the key to these technically involved projects;
The area is a modified plane that is not exactly square (this was just a test scene to go over the workflow). But your idea might still work? Basically I need to have the UV’s be identical to what they were before the workflow began. I could transfer the UV’s manually - which is what I am planning on doing next - but I was wondering whether there was a way to do it all in one step.
As far as unwrapping from view, that is something I will take a look at as well (though I suspect that is also a manual step - which is totally ok in this case).
Hum, if your map is a rectangle and you keep these proportions , then UV → project from view (Bounds) should give you the same results. But yeah it’s better to test all this to be sure.
Here is a technique to take the plane and convert it to a sphere using simple deform modifiers : plane to sphere.blend (145.2 KB)
It should be possible with Geometry Nodes and attribute transfer, then in this panel you should be able to convert GN attributes into UV, which is important if you need to export the geo out of blender :
But I’d go with a simple unwrap first. You can always automate more things latter.
Probably everything should be doable with GN only, but you’ll need time to learn all that.
In the end, all the steps would be :
Import the density map with something like import image as plane addon.
Use GN to tesselate the plane.
Apply GN modifier, UV → project from view , bounds
use two simple deform modifier to convert the plane to a sphere.
Yeah, any rectangle is okay because UV → Unwrap -->Project from View (Bounds) will project to the max of UV (view rectangle to UV [(0,0),(1.1)] square).