HeightMapShape3D
Eredita: Shape3D < Resource < RefCounted < Object
Una forma di heightmap 3D utilizzata per le collisioni fisiche.
Descrizione
Una forma heightmap 3D, progettata per l'uso in fisica. Solitamente utilizzata per fornire una forma per una CollisionShape3D. Questo tipo è più comunemente utilizzato per terreni con vertici disposti in una griglia a larghezza fissa. Data la natura dell'heightmap, non si può utilizzare per modellare sporgenze o grotte, che richiederebbero più vertici nella stessa posizione verticale. È possibile creare fori assegnando @GDScript.NAN all'altezza dei vertici desiderati (ciò è supportato sia in GodotPhysics3D sia in Jolt Physics). È quindi possibile inserire mesh con una propria collisione separata per creare sporgenze, grotte e così via.
Prestazioni: HeightMapShape3D è più veloce per verificare le collisioni rispetto a ConcavePolygonShape3D, ma è notevolmente più lento di forme primitive come BoxShape3D.
Una forma di collisione heightmap può anche essere creata usando un Image di riferimento:
var heightmap_texture: Texture = ResourceLoader.load("res://heightmap_image.exr")
var heightmap_image: Image = heightmap_texture.get_image()
heightmap_image.convert(Image.FORMAT_RF)
var height_min: float = 0.0
var height_max: float = 10.0
update_map_data_from_image(heightmap_image, height_min, height_max)
Proprietà
|
||
|
||
|
Metodi
get_max_height() const |
|
get_min_height() const |
|
void |
update_map_data_from_image(image: Image, height_min: float, height_max: float) |
Descrizioni delle proprietà
PackedFloat32Array map_data = PackedFloat32Array(0, 0, 0, 0) 🔗
void set_map_data(value: PackedFloat32Array)
PackedFloat32Array get_map_data()
Dati della heightmap. La dimensione dell'array deve essere uguale a map_width moltiplicato per 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.
Numero di vertici nella profondità della heightmap. Modificando questa proprietà, si ridimensionerà map_data.
Numero di vertici nella larghezza della heightmap. Modificando questa proprietà, si ridimensionerà map_data.
Descrizioni dei metodi
float get_max_height() const 🔗
Restituisce il valore di altezza più grande trovato in map_data. È ricalcolato solo quando map_data cambia.
float get_min_height() const 🔗
Restituisce il valore di altezza più piccolo trovato in map_data. È ricalcolato solo quando map_data cambia.
void update_map_data_from_image(image: Image, height_min: float, height_max: float) 🔗
Aggiorna map_data con i dati letti da un riferimento Image. Ridimensiona automaticamente map_width e map_depth della heightmap per adattarle alla larghezza e all'altezza complete dell'immagine.
L'immagine deve essere in formato Image.FORMAT_RF (32 bit), Image.FORMAT_RH (16 bit) o Image.FORMAT_R8 (8 bit).
Ogni pixel dell'immagine viene letto come float nell'intervallo da 0.0 (pixel nero) a 1.0 (pixel bianco). Questo valore di intervallo viene rimappato da height_min a height_max per formare il valore di altezza finale.
Nota: Si consiglia di utilizzare una heightmap con dati a 16 o 32 bit, memorizzati in formato EXR o HDR. Utilizzare dati di altezza a 8 bit, o in un formato come PNG che Godot importa come 8 bit, risulterà in terreno terrazzato.