Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | jujumumu |
I’m trying to make a cube by using ArrayMesh. But whenever I try to make one a weird black shadow appears on the cube.
The code I used to generate this is below:
extends Spatial
var verts = PoolVector3Array()
var normals = PoolVector3Array()
var indices = PoolIntArray()
func _ready():
var arr_mesh = ArrayMesh.new()
var mesh_arrays = []
mesh_arrays.resize(ArrayMesh.ARRAY_MAX)
make_cube(0,0,0)
mesh_arrays[Mesh.ARRAY_VERTEX] = verts
mesh_arrays[Mesh.ARRAY_NORMAL] = normals
mesh_arrays[Mesh.ARRAY_INDEX] = indices
arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, mesh_arrays)
get_node("MeshInstance").mesh = arr_mesh
func make_cube(x,y,z):
#left
make_quad(Vector3(x,y,z), Vector3(x,y+1,z), Vector3(x,y+1,z+1), Vector3(x,y,z+1))
#right
make_quad(Vector3(x+1,y,z+1), Vector3(x+1,y+1,z+1), Vector3(x+1,y+1,z), Vector3(x+1,y,z))
#down
make_quad(Vector3(x+1,y,z), Vector3(x,y,z), Vector3(x,y,z+1), Vector3(x+1,y,z+1))
#up
make_quad(Vector3(x+1,y+1,z+1), Vector3(x,y+1,z+1), Vector3(x,y+1,z), Vector3(x+1,y+1,z))
#back
make_quad(Vector3(x+1,y,z), Vector3(x+1,y+1,z), Vector3(x,y+1,z), Vector3(x,y,z))
#front
make_quad(Vector3(x,y,z+1), Vector3(x,y+1,z+1), Vector3(x+1,y+1,z+1), Vector3(x+1,y,z+1))
func make_quad(a,b,c,d):
var length = len(verts)
indices.append_array([length, length+1, length+2, length, length+2, length+3])
verts.append_array([a,b,c,d])
normals.append_array([a.normalized(),b.normalized(),c.normalized(),d.normalized()])
The weird thing is that this only happens when I try to make a cube at 0,0,0 not at any other point. How can I fix this?