Procedural Planetary Body Rendering

So over the past week I have been working on some procedural planetary bodies. The terrain is voxel based mostly with a simple noise density function so I can focus on the actual implementation. Using a mix of origin rebasing and storing critical data (Density grid and player coordinates) as 64-bit vectors, I can achieve planets of any size without loss in precision, sacrificing multiplayer.

[SUP]Zooming out on a 10km radius asteroid like object[/SUP]

[shot]http://i.imgur.com/truIlpV.jpg[/shot]
[SUP]Even at 150km away from the origin, no loss of precision[/SUP]

[shot]http://i.imgur.com/uKip4TE.jpg[/shot]
[SUP]Distribution of LOD levels[/SUP]

[shot]http://i.imgur.com/mxcsB8o.jpg[/shot]
[SUP]Screenshot from a planet with radius of 1737km[/SUP]

[shot]http://i.imgur.com/lEpJB3N.jpg[/shot]
[SUP]Not a pretty screenshot, but showing a planet with a radius of 69,911km[/SUP]

[shot]http://i.imgur.com/wBVugDw.jpg[/shot]
[SUP]Playing around with large detail features (3km radius crater)[/SUP]

[shot]http://i.imgur.com/2L76pzD.gif[/shot]
[SUP]Also working on planetary gravity[/SUP]

[shot]http://i.imgur.com/DcMFYej.gif[/shot]
[SUP]With correctly updating camera[/SUP]

I plan to take this further and have travelling between different planetary bodies with realistic distances, without exceeding the play area of UE4. I will be travelling overseas for one month, so there will be no further updates during this period, but as soon as I get back, I will be straight back into it.

Nice :slight_smile:

Voxel eh?

Hey @ -

This looks really cool. I have a few questions tho -

  1. What are your plans when it comes to Biomes? So Vegetation, features such as mountains, lakes, oceans, craters, and the like.
  2. Do you plan on taking advantage of Multiplayer World Origin rebasing for Multiplayer when it comes in 4.14? https://github.com/EpicGames/UnrealEngine/pull/2359
  3. What are your plans for this tech? Open source it? Sell it?

Have an awesome Vacation / Trip. :slight_smile:

  • HeadClot

Biomes are in my research list, but right now my main priority has been just getting the streaming of the chunks working well. Once I return from holidays, I will tackle star system travel then biomes for the planets.

Dont really know yet, as its not just the origin rebasing that is going to be a problem with multiplayer, the way I plan to deal with star system travel will probably also not work in multiplayer. We’ll see what happens.

I am making a game, once the game is finished, the source will be released to the community for free.

Thanks.

One thing that may help you with Biomes for the planets @

This is from the Star Citizen’s Planet Editor. Uploading it here so I do not loose it again.

I also take it that this wont be a plugin or anything since you are using 64 bit precision or am I misunderstanding?

Thanks for your time,

HeadClot

Thanks, I have been keeping an eye on Star Citizens stuff, so helpful to have it here to keep track of it. Theres currently no reason the planetary rendering itself couldn’t be a plugin right now (The gravity is engine modifications). The 64 bit precision does not alter UE4 in any way, all the calculations for the planet surface is calculated in 64-bit precision, but then stored in 32-bit around the origin, this is why origin rebasing is used.

depends on how multiplayer origin rebasing works. it should work if the origin rebasing is completely done on the client with the server juust syncing client positions

Hey -

So from the sounds of it 4.14 should have the the world origin for Multiplayer Pull request in it.

I am also curious about the progress that you have made in the mean time.

No progress as I have only returned home today. So now that I am in front of my dev machine i can get back to this project and others

Alright awesome.

In the mean time this happened.

[video]https://youtu.be/XuDj5v81Nd0?t=1h56m10s[/video]

Very nice.

@ - This is awesome. Do want. The huge planets are especially epic.

Wow GalaxyaMan2015! that is truly amazing what you did

This subject about rendering planets is so demanding in this days. It would be great if Epic implemented this feature to the engine.

I have a question for you @
You said that you don’t alter UE4 at all, but did you create a new actor class for this? Do you need to define a new matrix with doubles for the coordinates?

It is very interesting and I would be glad if you could answer me :smiley:

Space-Bird