Docs: MeshDataTool: showcase tool in code example

(cherry picked from commit 4f9b993423)
This commit is contained in:
HaSa1002 2020-10-31 20:39:24 +01:00 committed by Rémi Verschelde
parent 728200a10b
commit 18d65673af
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

@ -8,14 +8,21 @@
To use MeshDataTool, load a mesh with [method create_from_surface]. When you are finished editing the data commit the data to a mesh with [method commit_to_surface].
Below is an example of how MeshDataTool may be used.
[codeblock]
var mesh = ArrayMesh.new()
mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, CubeMesh.new().get_mesh_arrays())
var mdt = MeshDataTool.new()
mdt.create_from_surface(mesh, 0)
for i in range(mdt.get_vertex_count()):
var vertex = mdt.get_vertex(i)
...
# In this example we extend the mesh by one unit, which results in seperated faces as it is flat shaded.
vertex += mdt.get_vertex_normal(i)
# Save your change.
mdt.set_vertex(i, vertex)
mesh.surface_remove(0)
mdt.commit_to_surface(mesh)
var mi = MeshInstance.new()
mi.mesh = mesh
add_child(mi)
[/codeblock]
See also [ArrayMesh], [ImmediateGeometry] and [SurfaceTool] for procedural geometry generation.
[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-OpenGL/Face-culling]winding order[/url] for front faces of triangle primitive modes.