Table of Contents

Class HeightMapShape3D

A 3D height map shape used for physics collision.

Inheritance
HeightMapShape3D

Remarks

A 3D heightmap shape, intended for use in physics. Usually used to provide a shape for a CollisionShape3D. This is useful for terrain, but it is limited as overhangs (such as caves) cannot be stored. Holes in a HeightMapShape3D are created by assigning very low values to points in the desired area.

Performance: HeightMapShape3D is faster to check collisions against than ConcavePolygonShape3D, but it is significantly slower than primitive shapes like BoxShape3D.

A heightmap collision shape can also be build by using an Image reference:

var heightmap_texture = ResourceLoader.load("res://heightmap_image.exr")
var heightmap_image = heightmap_texture.get_image()
heightmap_image.convert(Image.FORMAT_RF)

var height_min = 0.0
var height_max = 10.0

update_map_data_from_image(heightmap_image, height_min, height_max)

Properties

map_data

Height map data. The array's size must be equal to map_width multiplied by map_depth.

var map_data : PackedFloat32Array = PackedFloat32Array(0, 0, 0, 0)

Property Value

PackedFloat32Array

Remarks

map_depth

Number of vertices in the depth of the height map. Changing this will resize the map_data.

var map_depth : int = 2

Property Value

int

Remarks

  • void set_map_depth(int value)
  • int get_map_depth

map_width

Number of vertices in the width of the height map. Changing this will resize the map_data.

var map_width : int = 2

Property Value

int

Remarks

  • void set_map_width(int value)
  • int get_map_width

Methods

get_max_height

Qualifiers: const

Returns the largest height value found in map_data. Recalculates only when map_data changes.

float get_max_height

get_min_height

Qualifiers: const

Returns the smallest height value found in map_data. Recalculates only when map_data changes.

float get_min_height

update_map_data_from_image(Image, float, float)

Updates map_data with data read from an Image reference. Automatically resizes heightmap map_width and map_depth to fit the full image width and height.

The image needs to be in either Image.FORMAT_RF (32 bit), Image.FORMAT_RH (16 bit), or Image.FORMAT_R8 (8 bit).

Each image pixel is read in as a float on the range from 0.0 (black pixel) to 1.0 (white pixel). This range value gets remapped to height_min and height_max to form the final height value.

void update_map_data_from_image(Image image, float height_min, float height_max)

Parameters

image Image
height_min float
height_max float