Planetopia version 3.x supports the creation of arbitrary earth-sized planets.
Biomes are limited to 20 per planet. There is also one limitation and that is in a very small area,
approximately 100x100m, only 4 textured biomes can be displayed at the same time.
The size of the restricted area is variable, choosing the largest area for 4 or fewer biomes if possible.
Grass and foliage are always generated in the same place, every plant on the planet is unique.
The planet can be zoomed in and out, and the planet regenerates in real-time in threads.
The game thread has a cost of approximately 5 ms. At some moments, the FPS may go down to low values,
even 10 FPS, we will try to tune it, during the generation of multimaps on the GPU or
the creation of point instances for foliage, which cannot be done via the game thread, it depends on the performance of the computer.
The surface of the planet is textured, each biome has 3 materials,
according to the slope of the surface, which can be set for each biome separately.
The demo uses materials from Quixel Megascan and other assets from the marketplace.
Most of the grass and foliage too, but also from the Unreal marketplace.
You can move around the planet normally and spawn actors on it.
You can set the sun and more suns and moons. The planet actor uses the USkyAtmosphereComponent component,
which can be set arbitrarily, as well as the UVolumetricCloudComponent component for volumetric clouds,
a sample material for volumetric clouds is part of the plugin.
Climate and precipitation can be set for the planet. I put the planet in my level normally, like any other actor.
It can be turned on that the planet is pregenerated in the Editor window depending on the movement of the camera.
You don't have to run PIE (play in editor).
It is possible to use arbitrary effects on the surface as in the demo, for example, hot airwaves or
flying dust or particle meshes in certain areas or for a given biome or biomes.
The plugin generates a height map, a map of the land and oceans, for individual levels of details of the planet,
as well as a climate map (precipitation, temperature). Also, surface, diffuse color, emissive color, normal map, and
curvature map, for biomes it generate biome weight maps for up to 20 biomes. Maps are generated in 2 render to texture as large 2 multimaps. It generates the maps in the game thread,
which does not block, it also loads the data from these textures into the fields and again it does not block the game thread.
But there is one limitation and that is that the GPU can only be behind by one frame. Therefore, the maximum
detail resolution is recommended to be 2048x2048 points on very fast cards for one type of submap. For slower cards,
1024x1024 is optimal. Which is sufficiently detailed and at the same time has lower rendering costs.
The size of the generated textures decreases with increasing levels of detail. For higher levels,
noise is no longer generated, but only details are cut out of the textures generated by the noise last time, it's because of
the accuracy of the UV coordinates, which can use float-type precision only. Mesh surface counting is done in threads,
just like leaf layout counting. Planet generation is fully procedural and
seed dependent, for a given template. Templates are created using blueprint functions and structures,
where a pipeline for texture generation is set up. Or use a predefined pipeline and
just adjust the parameters of the noise materials that the pipeline uses. For biomes, there is a
biome generator or they are created manually.
For biomes, just set the textures for the biome materials. Each biome has 3 materials, and each material
has 3 textures diffuse, normal and ORD (Ambient occlusion = R, Roughness = G and Displacement = B) ideal is using Megascans textures
to use to texture the surface of the planet at high zoom.
Pressing one button in the Editor will generate constant instances of materials
for rendering the planet. The second button generates optimized planet template materials
that are used to render the noise textures (multi-maps). And the planet is done without foliage. if you want foliage will be created,
similar to classic foliage for the Unreal landscape. For each static mesh, we create
a Foliage Type asset in the Unreal Editor. We will put it into the Planetopia Foliage Spawner asset and put it in the field for foliage spawners
for the given biome. This completes the planet template. Then we only set the seed for the planet in runtime.
And you can run around the planet.
Code modules:
Planetopia2 [runtime]
PlanetopiaEditor [editor]
Supported development platforms: Win 64, other platforms are not tested.
Supported build target platforms: Win 64, other platforms not tested.