HeightMapShape3D
Наследует: Shape3D < Resource < RefCounted < Object
Форма трехмерной карты высот, используемая для физики столкновений.
Описание
Форма карты высот 3D, предназначенная для использования в физике. Обычно используется для предоставления формы для CollisionShape3D. Этот тип чаще всего используется для ландшафта с вершинами, размещенными в сетке фиксированной ширины. Из-за природы карты высот ее нельзя использовать для моделирования выступов или пещер, для которых потребовалось бы несколько вершин в одном и том же вертикальном положении. Отверстия можно пробить через столкновение, назначив @GDScript.NAN высоте желаемых вершин (это поддерживается как в GodotPhysics3D, так и в Jolt Physics). Затем вы можете вставить сетки с их собственным отдельным столкновением, чтобы предоставить выступы, пещеры и т. д.
Производительность: HeightMapShape3D быстрее проверяет столкновения, чем ConcavePolygonShape3D, но он значительно медленнее, чем примитивные формы, такие как BoxShape3D.
Форму столкновения карты высот также можно построить с помощью ссылки Image:
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)
Свойства
|
||
|
||
|
Методы
get_max_height() const |
|
get_min_height() const |
|
void |
update_map_data_from_image(image: Image, height_min: float, height_max: float) |
Описания свойств
PackedFloat32Array map_data = PackedFloat32Array(0, 0, 0, 0) 🔗
void set_map_data(value: PackedFloat32Array)
PackedFloat32Array get_map_data()
Данные карты высот. Размер массива должен быть равен map_width, умноженному на map_depth.
Note: The returned array is copied and any changes to it will not update the original property value. See PackedFloat32Array for more details.
Количество вершин в глубине карты высот. Изменение этого параметра изменит размер map_data.
Количество вершин в ширине карты высот. Изменение этого параметра изменит размер map_data.
Описания метода
float get_max_height() const 🔗
Возвращает наибольшее значение высоты, найденное в map_data. Пересчитывает только при изменении map_data.
float get_min_height() const 🔗
Возвращает наименьшее значение высоты, найденное в map_data. Пересчитывает только при изменении map_data.
void update_map_data_from_image(image: Image, height_min: float, height_max: float) 🔗
Обновляет map_data данными, считанными из ссылки Image. Автоматически изменяет размер карты высот map_width и map_depth для соответствия полной ширине и высоте изображения.
Изображение должно быть в Image.FORMAT_RF (32 бита), Image.FORMAT_RH (16 бит) или Image.FORMAT_R8 (8 бит).
Каждый пиксель изображения считывается как число с плавающей точкой в диапазоне от 0.0 (черный пиксель) до 1.0 (белый пиксель). Это значение диапазона переназначается на height_min и height_max для формирования окончательного значения высоты.
Примечание: Рекомендуется использовать карту высот с 16-битными или 32-битными данными, сохраненными в формате EXR или HDR. Использование 8-битных данных о высоте или формата, подобного PNG, который Godot импортирует как 8-битный, приведет к созданию террасного рельефа.