Godot Version
4.6
Question
I m learning procedural generation, so i took this tutorialabout procedural terrain generation, in it i m unable to understand some things in the script, pls if anyone can explain, i m not much good at scripting started just few weeks ago !
The script :
extends Node
var mesh : MeshInstance3D
@export var size_depth : int = 100
@export var size_width : int = 100
@export var mesh_resolution : int = 2
@export var noise : FastNoiseLite
func _ready() :
generate()
func generate():
var plane_mesh = PlaneMesh.new()
plane_mesh.size = Vector2(size_depth, size_width)
plane_mesh.subdivide_depth = mesh_resolution * size_depth
plane_mesh.subdivide_width = mesh_resolution * size_width
plane_mesh.material = preload("res://868829797d609603fb1bf05c84d052ce.jpg")
var surface = SurfaceTool.new()
var data = MeshDataTool.new()
surface.create_from(plane_mesh, 0)
var array_plane = surface.commit()
data.create_from_surface(array_plane, 0)
for i in range(data.get_vertex_count()):
var vertex = data.get_vertex(i)
vertex.y = randf_range(0 , 0.5)
data.set_vertex(i ,vertex)
array_plane.clear_surfaces()
data.commit_to_surface(array_plane)
surface.begin(Mesh.PRIMITIVE_TRIANGLES)
surface.create_from(array_plane, 0)
surface.generate_normals()
mesh = MeshInstance3D.new()
mesh.mesh = surface.commit()
mesh.create_trimesh_collision()
mesh.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF
mesh.add_to_group("navsource")
add_child(mesh)
In this the problem is i m getting confused as he used the .commit too many times and which commit does what ?
and pls explain me this block of this code ;
var array_plane = surface.commit()
data.create_from_surface(array_plane, 0)
for i in range(data.get_vertex_count()):
var vertex = data.get_vertex(i)
vertex.y = randf_range(0 , 0.5)
data.set_vertex(i ,vertex)
array_plane.clear_surfaces()
data.commit_to_surface(array_plane)
surface.begin(Mesh.PRIMITIVE_TRIANGLES)
surface.create_from(array_plane, 0)
surface.generate_normals()