Quickly create natural-looking terrain with customizable noise parameters. This tool is designed to create simple terrains that do not require manual painting
ยท
Report Bug
ยท
Request Features
- ๐ฆ Installation
- Getting started ๐
- Shader materials ๐๏ธ
- Download Latest Release
- Unpack the
addons/ninetailsrabbit.terrainy
folder into your/addons
folder within the Godot project - Enable this addon within the Godot settings:
Project > Project Settings > Plugins
To better understand what branch to choose from for which Godot version, please refer to this table:
Godot Version | terrainy Branch | terrainy Version |
---|---|---|
main |
1.x |
Creating a new terrain is as easy as adding the Terrainy
node into your scene.
This node will warn you in the editor that it needs:
- A
terrain meshes
array representing a group ofMeshInstance3D
from which you want to generate the terrains. - A
noise
value with an instance ofFastNoiseLite
which is used as a template for generating the terrain surface or a customnoise_texture
.
If you try to generate a terrain without this values a warning will be pushed to the output window but it does not interrupt the execution of your game.
This section contains information on parameters that affects the terrain generation. Each time one of this is change in the editor, a new terrain is generated.
More resolution means more detail (more dense vertex) in the terrain generation, this increases the mesh subdivisions and could reduce the performance in low-spec pcs.
The depth size of the mesh (z) in godot units (meters)
The width size of the mesh (x) in godot units (meters)
The maximum height (y) at which this terrain can be generated in godot units (meters). The noises values are in a range of (0, 1). So if the noise value in a specific vertex point it's 0.5
the height returned for a max_terrain_height
of 50 the result will be 50 * 0.5 = 25
The terrain meshes Array[MeshInstance3D]
where the terrain meshes will be generated. On each mesh a new PlaneMesh
is generated be careful if you have a mesh already created
The final mesh will always end up as a result in an ArrayMesh
.
This is the material that will be applied to the Terrain. Take a look on Shader material examples to get a detailed terrain surface mixing textures.
When enabled, in each generation the seed of the selected noise will be randomized. Disable it to do it manually and keep the same seed for the generated land and not lose the structure.
This is a FastNoiseLite instance. Noise values are perfect to generate a variety of surfaces, higher frequencies tend to generate more mountainous terrain.
Play with the parameters and different types of noise to get the result you want, take into account that if this noise
variable is defined, the noise_texture
will be ignored.
Use a texture as noise to generate the terrain. If a noise
is defined, this texture will be ignored.
You can find a lot of ready noise textures inside the addon in this path addons/ninetailsrabbit.terrainy/assets/SBS - Noise Texture Pack - 256x256
folder from ScreamingBrainStudios
This textures are divided into categories:
- Cracks
- Craters
- Gabor
- Grainy
- Manifold
- Marble
- Melt
- Milky
- Perlin
- Spokes
- Streak
- Super Noise
- Super Perlin
- Swirl
- Techno
- Turbulence
- Vein
- Voronoi
This curve is powerful that you can adjust what the maximum height on the ground will be according to the graph from left to right in the generated noise image. This allows you to create flat mountains or holes in the generated terrain
Here you can see an example:
Use an image to smooth the edges on the terrain. We provide a few images to get some extra shapes in the generated terrains by being able to create islands, cliffs and so on.
Below I will show the images and the result of the generated plots.
When you generate the terrain with a StandardMaterial3D
the result will be simple and with a single colour unless you use gradients.
This can be useful for some cases where you don't need a lot of detail but if you need something more advanced there are some shaders that can help us.
This addons comes with a modified shader from DiztyNinja that can be used on terrain_material
exported parameter.
With this shader you can mix a total of 3 textures that represents a surface based on the height of the terrain where grass represents the top surface
, the rock represents the medium surface
and the sand represents the bottom_surface
.
Play around with the parameters until you get the result you want.
You can see an example here using textures from https://ambientcg.com/