Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @tool
- extends MeshInstance3D
- @export_tool_button("Create Square", "Callable") var button_action = generate
- func generate():
- var square_mesh := square_array()
- var triangle_mesh := triangle_array()
- var a_mesh := ArrayMesh.new()
- a_mesh.add_blend_shape("Triangle Shape")
- a_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, square_mesh, [triangle_mesh])
- mesh = a_mesh
- func square_array() -> Array:
- var vertices := PackedVector3Array([
- Vector3(0, 0, 0),
- Vector3(0, 1, 0),
- Vector3(0, 0, 1),
- Vector3(0, 1, 1),
- ])
- var normals := PackedVector3Array([
- Vector3(1, 0, 0),
- Vector3(1, 0, 0),
- Vector3(1, 0, 0),
- Vector3(1, 0, 0),
- ])
- var indices := PackedInt32Array([
- 0, 1, 2,
- 3, 2, 1,
- ])
- var array = []
- array.resize(Mesh.ARRAY_MAX)
- array[Mesh.ARRAY_VERTEX] = vertices
- array[Mesh.ARRAY_NORMAL] = normals
- array[Mesh.ARRAY_INDEX] = indices
- return array
- func triangle_array() -> Array:
- var vertices := PackedVector3Array([
- Vector3(0, 0, -0.2),
- Vector3(0, 1, 0.5),
- Vector3(0, 0, 1.2),
- Vector3(0, 1, 0.5),
- ])
- var normals := PackedVector3Array([
- Vector3(1, 0, 0),
- Vector3(1, 0, 0),
- Vector3(1, 0, 0),
- Vector3(1, 0, 0),
- ])
- var indices := PackedInt32Array([
- 0, 1, 2,
- 3, 2, 1,
- ])
- var array = []
- array.resize(Mesh.ARRAY_MAX)
- array[Mesh.ARRAY_VERTEX] = vertices
- array[Mesh.ARRAY_NORMAL] = normals
- array[Mesh.ARRAY_INDEX] = indices
- return array
Advertisement
Add Comment
Please, Sign In to add comment