Voxel Plugin
2.0p5
2.0p5
  • Home
  • Getting Started
    • Installing Voxel Plugin
    • Working with Voxel Plugin
      • First Steps with Voxel Worlds
    • Installing Example Content
    • Migrating from Voxel Plugin Legacy
  • Knowledgebase
    • Working with Stamps
      • Stamp Types
        • Height & Volume Stamps
        • Spline Stamps
        • Sculpt Stamps
      • Layers & Priority
      • Blend Modes
      • Instanced Stamps
    • Using the Graph Editor
      • Graph Preview
      • Functions & Function Libraries
    • Foliage & PCG
      • Configuring PCG
      • Using PCG on Voxel Terrains
      • Voxel PCG Graphs
    • Materials & Metadata
      • Flat Normals & Blocky Rendering
      • Authoring Materials
        • Smooth (Alpha) Blends
      • Working with Metadata
    • Gameplay Systems
      • Blueprint API
        • Spawning & Configuring Stamps
        • Querying Voxel Data
        • Writing Voxel Data to Render Targets
      • Collision, Navmesh & Invokers
      • Multiplayer Support
    • Technical Information
      • Adding Custom Nodes using C++
      • Buffers and Uniforms
      • Profiling & Debugging
        • Compiling From Source
        • Generation Performance
        • Memory Usage & Render Performance
        • Debugging plugin code
      • Platform Support
        • Targeting Mac & iOS
        • Targeting Android
  • Resources
    • Change Log
    • Voxel Graph API
      • Noise
        • Advanced Noise 2D
        • Advanced Noise 3D
        • Domain Warp 2D
        • Domain Warp 3D
        • Perlin Noise 2D
        • Perlin Noise 3D
        • Cellular Noise 2D
        • Cellular Noise 3D
        • True Distance Cellular Noise 2D
        • True Distance Cellular Noise 3D
        • Simplex Noise 2D
        • Simplex Noise 3D
        • Value Noise 2D
        • Value Noise 3D
      • Array
        • Length
        • Get
        • Make Array
        • Add to Array
        • Append Array
      • Math
        • Boolean
          • AND Boolean
          • OR Boolean
          • NAND Boolean
          • NOT Boolean
          • NOR Boolean
          • XOR Boolean
        • Operators
          • Equal
          • Nearly Equal
          • Not Equal
          • Less
          • Greater
          • Less Equal
          • Greater Equal
          • Ceil
          • Round
          • Floor
          • Add
          • Subtract
          • Multiply
          • Divide
          • % (Integer)
          • Min
          • Max
          • Abs
          • One Minus
          • Sign
        • Misc
          • Clamp
          • Mapped Range Value Clamped
          • Mapped Range Value Unclamped
          • Interpolate
          • Lerp
          • Smooth Step
          • Height Splitter
        • Trig
          • Sin (Radians)
          • Sin (Degrees)
          • Cos (Radians)
          • Cos (Degrees)
          • Tan (Radians)
          • Tan (Degrees)
          • Asin (Radians)
          • Asin (Degrees)
          • Acos (Radians)
          • Acos (Degrees)
          • Atan (Radians)
          • Atan (Degrees)
          • Atan2 (Radians)
          • Atan2 (Degrees)
          • Get PI
          • Radians to Degrees
          • Degrees to Radians
        • Float
          • Bilinear Interpolation
          • Frac
          • Power
        • Integer
          • Left Shift
          • Right Shift
          • Bitwise AND
          • Bitwise OR
          • Bitwise XOR
          • Bitwise NOT
        • Rotation
          • Make Quaternion
          • Break Quaternion
          • Make Rotation from Z
          • Combine Rotation
          • Get Forward Vector
          • Get Right Vector
          • Get Up Vector
          • Rotate Vector
          • Unrotate Vector
        • Seed
          • Mix Seeds
          • Make Seeds
        • Vector Operators
          • Cross Product
          • Dot Product
          • Normalize
          • Length
          • Length XY
          • Distance
          • Distance 2D
        • Conversions
          • To Double Vector (Double Linear Color)
          • To Double Vector 2D (Double Linear Color)
          • To Linear Color (Double Linear Color)
          • To Vector (Double Linear Color)
          • To Vector 2D (Double Linear Color)
          • To Double Linear Color (Double)
          • To Double Vector (Double)
          • To Double Vector 2D (Double)
          • To Float (Double)
          • To Double Linear Color (Double Vector 2D)
          • To Double Vector (Double Vector 2D)
          • To Linear Color (Double Vector 2D)
          • To Vector (Double Vector 2D)
          • To Vector 2D (Double Vector 2D)
          • To Double Linear Color (Double Vector)
          • To Double Vector 2D (Double Vector)
          • To Linear Color (Double Vector)
          • To Vector (Double Vector)
          • To Vector 2D (Double Vector)
          • To Double (Float)
          • To Linear Color (Float)
          • To Vector (Float)
          • To Vector 2D (Float)
          • To Double (Integer)
          • To Float (Integer)
          • To Int Point (Integer)
          • To Int Vector (Integer)
          • To Int Vector 4 (Integer)
          • To Seed (Integer)
          • To Double Linear Color (Int Point)
          • To Double Vector (Int Point)
          • To Double Vector 2D (Int Point)
          • To Int Vector (Int Point)
          • To Int Vector 4 (Int Point)
          • To Linear Color (Int Point)
          • To Vector (Int Point)
          • To Vector 2D (Int Point)
          • To Double Linear Color (Int Vector 4)
          • To Double Vector (Int Vector 4)
          • To Double Vector 2D (Int Vector 4)
          • To Int Point (Int Vector 4)
          • To Int Vector (Int Vector 4)
          • To Linear Color (Int Vector 4)
          • To Vector (Int Vector 4)
          • To Vector 2D (Int Vector 4)
          • To Double Linear Color (Int Vector)
          • To Double Vector (Int Vector)
          • To Double Vector 2D (Int Vector)
          • To Int Point (Int Vector)
          • To Int Vector 4 (Int Vector)
          • To Linear Color (Int Vector)
          • To Vector (Int Vector)
          • To Vector 2D (Int Vector)
          • To Double Linear Color (Linear Color)
          • To Double Vector (Linear Color)
          • To Double Vector 2D (Linear Color)
          • To Vector (Linear Color)
          • To Vector 2D (Linear Color)
          • To Integer (Seed)
          • To Double Linear Color (Vector 2D)
          • To Double Vector (Vector 2D)
          • To Double Vector 2D (Vector 2D)
          • To Linear Color (Vector 2D)
          • To Vector (Vector 2D)
          • To Double Linear Color (Vector)
          • To Double Vector (Vector)
          • To Double Vector 2D (Vector)
          • To Linear Color (Vector)
          • To Vector 2D (Vector)
        • Box
          • Break Box
          • Break Box 2D
          • Extend Box
          • Extend Box 2D
          • Is Box 2D Valid
          • Is Box Valid
          • Make Box
          • Make Box 2D
          • Make Box 2D From Radius
          • Make Box from Radius
          • Make Infinite Box
          • Transform Box
        • Curve
          • Make Curve from Asset
          • Sample Curve
        • Color
          • Break Double Linear Color
          • Break Linear Color
          • Make Double Linear Color
          • Make Linear Color
        • Vector
          • Break Double Vector
          • Break Vector
          • Make Double Vector
          • Make Vector
        • Vector2D
          • Break Double Vector 2D
          • Break Vector 2D
          • Make Double Vector 2D
          • Make Vector 2D
        • Interval
          • Break Float Range
          • Break Integer Range
          • Make Float Range
          • Make Integer Range
        • Int Point
          • Break Int Point
          • Make Int Point
        • Int Vector
          • Break Int Vector
          • Make Int Vector
        • Int Vector 4
          • Break Int Vector 4
          • Make Int Vector 4
        • Transform
          • Break Transform
          • Combine Transform
          • Inverse Transform Location
          • Make Transform
          • Transform Location
        • Distance
          • Smooth Intersection
          • Smooth Max
          • Smooth Min
          • Smooth Subtraction
          • Smooth Union
      • Color
        • Distance to Color
      • Name
        • Append Names
      • Point
        • Generate 2D Points
        • Make Points
        • Make Radial Point Spawner
        • Merge Points
        • Prune by Bounds
        • Prune by Distance
        • Scatter Points
        • Set Point Attribute
        • Get Point Attribute
        • Set Parent Point Attribute
        • Get Parent Point Attribute
        • Set Point Mesh
        • Get Point Mesh
        • Get Parent Point Mesh
        • Set Point Position
        • Get Point Position
        • Get Parent Point Position
        • Set Point Rotation
        • Get Point Rotation
        • Get Parent Point Rotation
        • Set Point Scale
        • Get Point Scale
        • Get Parent Point Scale
        • Set Point Normal
        • Get Point Normal
        • Get Parent Point Normal
        • Set Point Custom Data
        • Get Point Custom Data
        • Get Parent Point Custom Data
        • Get Point Seed
        • Set Point Density
        • Get Point Density
        • Set Point Bounds Min
        • Get Point Bounds Min
        • Set Point Bounds Max
        • Get Point Bounds Max
        • Set Point Color
        • Get Point Color
        • Set Point Steepness
        • Get Point Steepness
        • Apply Translation
        • Apply Rotation
        • Apply Scale
        • Get Points
        • Filter Points
        • Density Filter
      • PCG
        • Get Input Points
      • Stamp
        • Get Previous Distance
        • Get Previous Height
      • Misc
        • Make Value
        • Raise Error
        • Is Valid
        • Query with Position
        • Filter Buffer
        • Get Collision Enabled
        • Get LOD
        • Is Editor World
        • Is Game World
        • Is Hidden in Editor
        • Is Preview Scene
        • Get Height Blend Mode
        • Get Height Smoothness
        • Is Height Override Blend Mode
        • Get Position 2D
        • Get Position 3D
        • Get Volume Blend Mode
        • Get Volume Smoothness
        • Is Volume Override Blend Mode
      • Biome
        • Query Biomes: null
      • Random
        • Random Select
        • Rand Float
        • Random Vector
        • Random Rotator
        • Hash Position
        • Rand Unit Vector
        • Break Random Vector Settings
        • Make Random Vector Settings
      • Flow Control
        • Select
      • Actor
        • Get Local to Query
        • Get Local to World
        • Get Query to World
      • Network
        • Is Client
        • Is Dedicated Server
        • Is Listen Server
        • Is Server
        • Is Standalone
      • Heightmap
        • Create Cubemap Planet Distance Field
        • Get Heightmap Bounds
        • Sample Heightmap
      • Distance Field
        • Create Box Distance Field
        • Create Sphere Distance Field
      • Material
        • Blend Materials
      • Voxelized Mesh
        • Create Voxelized Mesh Distance Field
        • Make Voxelized Mesh from Static Mesh
    • Glossary
    • Licensing
    • Roadmap
Powered by GitBook
On this page

Was this helpful?

  1. Getting Started
  2. Working with Voxel Plugin

First Steps with Voxel Worlds

A step-by-step guide on creating a basic procedural terrain from scratch.

PreviousWorking with Voxel PluginNextInstalling Example Content

Was this helpful?

The very first step when working with Voxel Plugin 2 is to place a Voxel World actor in the level. Make sure its transform is set to zero so the terrain isn't offset. You'll notice that placing this actor hasn't actually made any terrain show up yet. A Voxel World acts as a manager for other voxel-related actors. It is used to control rendering and collision settings from a central place, but it won't do anything by itself.

In order for anything to actually render, stamps need to be placed in the level. Voxel Stamps are actors that tell the Voxel World that some kind of data needs to be generated (and in most cases, rendered) in a particular place. The terrain will be generated anywhere that has a stamp, and it will not be generated where there aren't any stamps.

The plugin supports height stamps and volumetric stamps. Both of these can be read from a static data source (heightmap assets for height, voxelized meshes for volumetrics), but they can also be generated from a graph. Ideally, height stamps should be used whenever possible, because they are cheaper to generate.

In this case, the goal is to generate a base terrain with a procedural height stamp. To do so, right-click in the content browser, and then click the Voxel Height Graph type in the Voxel category. Open the created asset. A graph with a single Output Height node will appear.

This graph will run as part of the Voxel World once it's placed in the level, but it won't actually do anything unless it has a set of bounds assigned.

To assign bounds, drag out from the Bounds pin and place a Make Box 2D From Radius node. Drag out from the Radius input pin and click Promote to parameter. This makes it configurable from the details panel on placed actors. With the parameter selected, set the default value to something like 5000 in the details panel on the right. Use the same flow to create a parameter for the Material pin on the Output Height node.

As the graph is now, it will just write a flat plane as height data. To make the terrain more interesting than that, we can use noise. Drag out from the Height pin and place an Advanced Noise 2D node. Attach Get Position2D to its position pin.

Get Position2D can be set to Local Space or World Space. Local Space will use position relative to the stamp's transform. World Space won't be affected by the stamp's transform.

With this done, minimize the graph editor and drag the graph from the content browser into the level. You'll see a terrain appear, the size being controlled by the radius parameter. The stamp only prompts terrain to generate in an area the size of its bounds around its position.

The height of the terrain can be adjusted by simply moving the stamp up and down in the level.

Stamps will automatically blend together when placed around each other, with the way they blend being controlled by their Blend Mode, Smoothness and Priority settings.

When stamps are set to the Override blendmode, they will override all existing information in their bounds. But they can access the previous surface information in their graphs, allowing for manually configured blending behavior through their graph. Read more here.

Right now, the terrain will be grey, but any material can be assigned to the material parameter, and it will immediately show up on the terrain. For details on how to work with materials on voxel terrains, see the section.

Materials