extends MeshInstance3D func _ready(): var vertices = PackedVector3Array([ Vector3( 0, 0, 1), # 0: Top-Left Vector3( 1, 0, 1), # 1: Top-Right Vector3( 1, 0, 0), # 2: Bottom-Right Vector3( 0, 0, 0) # 3: Bottom-Left ]) var normals = PackedVector3Array([ Vector3(0, 1, 0), Vector3(0, 1, 0), Vector3(0, 1, 0), Vector3(0, 1, 0) ]) var indices = PackedInt32Array([ 0, 2, 1, # First triangle (0, 1, 2) 0, 3, 2 # Second triangle (0, 2, 3) ]) var uvs = PackedVector2Array([ Vector2(0, 0), # Maps to Vertex 0 Vector2(1, 0), # Maps to Vertex 1 Vector2(1, 1), # Maps to Vertex 2 Vector2(0, 1) # Maps to Vertex 3 ]) var arrays = [] arrays.resize(Mesh.ARRAY_MAX) arrays[Mesh.ARRAY_VERTEX] = vertices arrays[Mesh.ARRAY_NORMAL] = normals arrays[Mesh.ARRAY_TEX_UV] = uvs arrays[Mesh.ARRAY_INDEX] = indices var array_mesh = ArrayMesh.new() array_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays) self.mesh = array_mesh var material = StandardMaterial3D.new() material.albedo_color = Color.DEEP_SKY_BLUE self.set_surface_override_material(0, material)