extends MeshInstance3D var mat: StandardMaterial3D var ang: float = 0.0 var poslist: PackedVector3Array = PackedVector3Array() func _ready(): mat = StandardMaterial3D.new() mat.albedo_color = Color(1, 0, 0, 0.5) mat.cull_mode = BaseMaterial3D.CULL_DISABLED mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED # mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA mesh = ImmediateMesh.new() var n = 30 for i in range(0, n, 1): poslist.append(Vector3.ZERO) func _process(delta): # store positon to PackedVector3Array for i in range(0, poslist.size(), 1): var x1 = 6.0 + 4.0 * sin(deg_to_rad((ang + 10 * i) * 0.75)) var y1 = 4.0 + 4.0 * sin(deg_to_rad(ang + 10 * i)) var z1 = 10 - 1.0 * i poslist[i] = Vector3(x1, y1, z1) # set ImmediateMesh mesh.clear_surfaces() mesh.surface_begin(Mesh.PRIMITIVE_TRIANGLES, mat) # mesh.surface_set_color(Color.WHITE) for i in range(1, poslist.size(), 1): var v0 = poslist[i - 1] var v1 = poslist[i] mesh.surface_add_vertex(Vector3(v1.x, v1.y, v1.z)) mesh.surface_add_vertex(Vector3(v0.x + 0.5, v0.y, v0.z)) mesh.surface_add_vertex(Vector3(v0.x - 0.5, v0.y, v0.z)) mesh.surface_end() ang += 120.0 * delta