godot_voxel/doc/03_create-terrain.md

43 lines
2.1 KiB
Markdown
Raw Normal View History

2019-05-27 03:06:28 -07:00
# Creating A Voxel Terrain
Now that your Godot Engine has voxel support built in, you can either download the [Voxel Game demo](https://github.com/Zylann/voxelgame) and start playing with it, or start creating your own terrain.
## Create A Terrain In The Editor
1. Create a new project and a new 3D scene, with a Spatial type root node.
1. Add a Camera and elevate it by setting Transform Y = 75 and Rotation X = -25. The terrain starts generating around (0,0,0), but creates high hills, and may be invisible from underneath. We will be looking down from above.
1. Import a black and white heightmap texture such as [this one](https://github.com/Zylann/voxelgame/blob/master/project/blocky_terrain/noise_distorted.png) from the demo. Make sure that the file is imported as an Image and NOT a Texture on the Import panel. You'll likely have to re-import and restart.
1. Add a VoxelTerrain node and adjust the following settings:
1. Provider: New VoxelStreamImage. Then click VoxelStreamImage again.
1. Image: Load. Select your imported noise texture.
1. Decide on the type of terrain you want:
* Blocky: Set Channel = "Type" (or 0), and leave Smooth Meshing Enabled unchecked (lower down).
* Smooth: Set Channel = "SDF" (or 1), and enable Smooth Meshing Enabled.
1. Voxel Library: add a New VoxelLibrary
1. Set the Viewer Path, Assign, select your camera or player (the parent of your camera).
1. Play your scene and you should see a terrain.
![Generated voxel terrain](images/default-terrain.jpg)
## Create A Terrain With Code
Add your own camera and environment as desired, or from above. Then drop this into a script:
```
const HEIGHT_MAP = preload("res://blocky_terrain/noise_distorted.png")
var terrain = VoxelTerrain.new()
func _ready():
terrain.voxel_library = VoxelLibrary.new()
terrain.stream = VoxelStreamImage.new()
terrain.stream.image = HEIGHT_MAP
terrain.view_distance = 256
terrain.viewer_path = "/root/Spatial/Player" # Change to the path of your camera or player node
add_child(terrain) # Add the terrain to the tree so Godot will render it
```
---
* [Next Page](04_materials.md)
* [Doc Index](01_get-started.md)