Guest User

Untitled

a guest
Nov 9th, 2025
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. @tool
  2. extends MeshInstance3D
  3.  
  4. @export_tool_button("Create Square", "Callable") var button_action = generate
  5.  
  6. func generate():
  7. var square_mesh := square_array()
  8. var triangle_mesh := triangle_array()
  9.  
  10. var a_mesh := ArrayMesh.new()
  11. a_mesh.add_blend_shape("Triangle Shape")
  12. a_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, square_mesh, [triangle_mesh])
  13. mesh = a_mesh
  14.  
  15.  
  16. func square_array() -> Array:
  17. var vertices := PackedVector3Array([
  18. Vector3(0, 0, 0),
  19. Vector3(0, 1, 0),
  20. Vector3(0, 0, 1),
  21. Vector3(0, 1, 1),
  22. ])
  23.  
  24. var normals := PackedVector3Array([
  25. Vector3(1, 0, 0),
  26. Vector3(1, 0, 0),
  27. Vector3(1, 0, 0),
  28. Vector3(1, 0, 0),
  29. ])
  30.  
  31. var indices := PackedInt32Array([
  32. 0, 1, 2,
  33. 3, 2, 1,
  34. ])
  35.  
  36. var array = []
  37. array.resize(Mesh.ARRAY_MAX)
  38. array[Mesh.ARRAY_VERTEX] = vertices
  39. array[Mesh.ARRAY_NORMAL] = normals
  40. array[Mesh.ARRAY_INDEX] = indices
  41.  
  42. return array
  43.  
  44.  
  45. func triangle_array() -> Array:
  46. var vertices := PackedVector3Array([
  47. Vector3(0, 0, -0.2),
  48. Vector3(0, 1, 0.5),
  49. Vector3(0, 0, 1.2),
  50. Vector3(0, 1, 0.5),
  51. ])
  52.  
  53. var normals := PackedVector3Array([
  54. Vector3(1, 0, 0),
  55. Vector3(1, 0, 0),
  56. Vector3(1, 0, 0),
  57. Vector3(1, 0, 0),
  58. ])
  59.  
  60. var indices := PackedInt32Array([
  61. 0, 1, 2,
  62. 3, 2, 1,
  63. ])
  64.  
  65. var array = []
  66. array.resize(Mesh.ARRAY_MAX)
  67. array[Mesh.ARRAY_VERTEX] = vertices
  68. array[Mesh.ARRAY_NORMAL] = normals
  69. array[Mesh.ARRAY_INDEX] = indices
  70.  
  71. return array
  72.  
Advertisement
Add Comment
Please, Sign In to add comment