LOD thy planet

I have a 117 km (73 mi) radius planet with each face as an object for future LOD in Armory (if it can stand it).
But for any reason the faces are not joined while it was joined in the original UV sphere.


I thought it was because of subsurf quality but since I ramped up 4 tiles to 2^8 and it stills doesn’t match, I wonder.
Does anyone have this case when you separate individual faces and it goes lalaland from each other?
BTW, I know my heightmap image sucks (you can see the pixels), it’s just a placeholder of the full res, my issue is with objects themselves, there are not joined anymore (I mean vertices at same X, Y, Z) after separating them from the original sphere. Is it a float CPU issue?

Alright, exploding the sphere to individual faces works fine.
It’s the displacement thata messes up everything:

Is there an option to pin the corner vertices in place?

With the displace modifier you can exclude vertices with a vertex group. It would require, though, that you subdivide the mesh (to have inner vertices to include). Easier might be to displace the mesh not in normal direction, but in global coordinates.

You problem comes only from the fact that from the very beging, faces are not joined, as you said :

You see, displacement moves in direction of the normal :
In the first case it’s joined, in the second case it’s not.


If it’s ok for you to have one object only, I would join them and run a “merge by distance” to merge back the faces


If you really want to stay with this structure, you could try to tune the “mid level” of your displacement in order to move back you faces and make the corner stay at the original place


If you agree to “temporary” join, but still want separate object at final a “neat” solution would be :

  • Join all and merge faces
  • Select all edges and mark them as “crease”
  • Add your Displacement and apply
  • Add a “Edge Split” modifier with “Edge Crease” cut to cut back the edges, and Apply
  • Select all and separate by loose part (“P”)

See you :slight_smile: ++
Tricotou

Thank you @omgold and @tricotou.
I really appreciate.

I need to LOD thy planet, so each “local” playground (22 km side) where the player is, is full res, but the others are 1/4 res and some are invisible (occlusion) that’s why it was exploded at first.
mid level is always = 0 in my tests.
If I apply displacement, I need to apply subsurf then I get 9M faces to split, not 512.
@omgold, in global coordinates it doesn’t keep UV.

In the beginning, the faces were jointed (simple UV sphere):

Then:
change the subsurf to simple and 1
Edit mode
select a face
select by trait, faces by sides (4)
face > “extrude individual faces”
right click
CTRL+I to invert selection
suppr, only faces
select a face,
select by trait, faces by sides (4)
CTRL+I to invert selection
suppr, vertices
A
P by loose

Add displacement (UV), even at midlevel = 0,
increase subsurf power to 5-7
It moves up the tile of corners that got a level above zero (mountain), but it is non consistent with the other corner.

How to get a displacement with vertex normals that stay consistent?

Okay, one method that I just tried successfully:

  • while your mesh is still joined, enable split normals on it (Edit Mode->Normals->Split)
  • average the split normals on the vertices (Normals->Set From Faces)
  • split your mesh into separate object and enable displace modifier (or in reverse order)

If you set ‘Direction’ on the Displace Modifier to ‘Custom Normal’, the vertices should not diverge and also stay on the lines of longitude and (approximately) latitude.

Thanks @omgold for your help but it’s still not working for me :frowning:

I did:
change the subsurf to simple and 1
Edit mode
mesh > normals > split
mesh > normals > set from faces
select a face
select > by trait, faces by sides (4)
face > “extrude individual faces”
right click
CTRL+I to invert selection
suppr, only faces
select a face,
select > by trait, faces by sides (4)
CTRL+I to invert selection
suppr vertices
G to check that a face is loose (no extrude, no sculpt)
A
P by loose

and got:

I can’t include the heightmap but here’s the blend file before separation (a UV sphere modified following https://www.youtube.com/watch?v=colJyjvf5jw).
I only keep the quads because poles are not visited :smiley:
planet.blend (797.4 KB)
Hope someone gets a fix. I guess we’re not too far.

Ah, found it. It is the subdiv modifier which destroys the custom normals. This means it is necessary to fix these between the subdiv and displace. I did that by keeping a shadow copy of the original sphere and used a data transfer modifier towards it.

planet.blend (943.2 KB)

Oh yes, thank you @omgold!
I learned something new about the data in Blender with this :smiley: