Generating planetary topology?

Hello, I am new to this community and recently began my journey into UE5 for film & video. After 2 days of searching the web and experimenting with different approaches, I have decided to outright ask this community.

I am trying to develop realistic planets and started with this tutorial: How to Create Planets in Unreal Engine: Ground to Space Transition UE4 Tutorial - YouTube

My question is, is it possible to generate topology onto the spherical mesh? In other words, use a normal or displacement/height map to actually generate mesh data rather than simulate it, so when zooming in close to the sphere, you can actually see the height changes on the mesh.

In general, using the normal map looks OK from a distance. But, in a close-up, when looking along the horizon, the "simulated’ height is flat and does not actually “protrude” from the sphere. Is it possible to do this? And can it be explained or demonstrated to a beginner?

Thanks for your help and patience to someone trying to learn.

The real answer to your question is no. Period.

The extended answer to your question is:

Sure you can, but you would need to sculpt a sphere in a DCC with the heightmap you need, and create various LOD levels for it.
You would then also have to slice it up into smaller parts for use.

This can wok on small spheres and approximations, but it will almost never be possible for 1:1 simulations where you are trying to correctly represent earth or moon bodies at their actual size.

To do things like this at runtime - similar say to Google Earth? - you would need to implement your own Octree generation system.
And you would need a clean matched data set to use for the height maps - to which the sphere mesh calculations will add the proper spherical distortion.

Even on best case scenarios where you are a pro and you really know what you are doing, the sheer amount of heightmap data needed for a full size globe will have your HD cry for mercy (to he kind) and probably make your program not downloadable.

Google gets away with it by serving portions of maps over the net. Yes, The same can be done. But you need to have that in mind when starting…

– further point -
Maybe all you need to do is extrude vertex on their normal based on a heightmap to provide some sort of resemblance.
If that’s the case, that is possible with just a heightmap and a material.
Remember, this provides no player collision and is only a visual system.

Thanks for the detailed reply.

So, to clarify a bit with respect to your answer. This is only for visual effect and not for game or play-ability purposes. Again, just looking for some way to generate the displacement on the sphere from a height map/displacement map.

I was looking into Virtual Heightfield Mesh, and trying to understand if that would be a way to accomplish this. Although it is not that intuitive, it seems like it may be possible.

Is there any way to convert normal or height map data into mesh data?

Several ways.
To have an actual mesh displace you don’t even need virtual heightfield or anything.
The engine is removing Tessellation - not Displacement.

You can plug a texture (black white) in the material into a lerp with 2 scalar value
Multiply that with a VertexNormalWS
Then feed that into the displacement pin.

The end result will be a sphere or a mesh with some displaced vertices.

The other way is to do essentially the same thing in a DCC and produce a static mesh that looks displaced (the calculation for which is not happening in real time. Since it was exported that way).

So I’ve spent several hours attempting to get this configuration sorted out, watching more tuts and reading articles on these nodes. I guess I don’t really know what I am doing or the specific nodes/structure to set up. Is there any way you can provide a screenshot or detailed instructions about this method that I can try?

All I am using ATM is just Base Color and Normal. I have a Height Map but can’t get it to do anything. I also wonder about the difference if using UE4 vs UE5, of which I am using the latter (where World Displacement is not available). HELP!

It seems fairly simple, I just think my knowledge is a bit lacking. I appreciate your help, thanks.

I don’t have 5 installed, nor do I plan on doing so anytime before the final release really.

I’ll share a screencap momentarily.

Note that the heightmap in use is trash.
You need to re-sample the heightmap so that it’s in a normal/decent range.
Should probably be scaled from 65535/2 as 0 to whatever the max height on earth is.
There’s also what seems like somwhat obvious bad data on the poles. Max height in south pole is maybe 3000m if I remember my geography.
Probably start from a nasa GEO tiff and work from there inside a GIS program.

1 Like

Maybe check out xenthorx’s excellent (as usual) work in this area: