I have debugged tons of stuff with this but at this point I cant really debug any further, so can someone give my code a quick look over and hopefully spot an issue? feel free to ask any questions regarding what has been debugged or what any certain chunk of code is trying to achieve, i will try to post as much relevant info as i can below the code:
@tool
extends Node3D
var voxamnt = 5
var voxels = []
var voxvals = []
var voxtypes = []
var verts = PackedVector3Array()
var inds = PackedInt64Array()
var norms = PackedVector3Array()
var noise = FastNoiseLite.new()
func genmesh(vox,cubeID):
var additiveInd = cubeID*12
var points = [
vox,
vox + Vector3(1,0,0),
vox + Vector3(0,-1,0),
vox + Vector3(1,-1,0),
vox + Vector3(0,0,1),
vox + Vector3(1,0,1),
vox + Vector3(0,-1,1),
vox + Vector3(1,-1,1)
]
var index = 0
for i in range(0,7):
print(i)
if voxvals[indlookup(points[i])]:
index |= 1 << i
var cube = MeshInstance3D.new()
var mesh = BoxMesh.new()
mesh.size = Vector3(0.2,0.2,0.2)
cube.mesh = mesh
cube.position = points[i]
add_child(cube)
var trigtable = VoxelLookups.tritable[index]
for i in range(0,trigtable.size()-1):
var vert = points[VoxelLookups.edgelookup[trigtable[i]][0]].lerp(points[VoxelLookups.edgelookup[trigtable[i]][1]],0.5)
verts.push_back(vert)
inds.push_back(verts.size()-1)
func indlookup(pos):
var ind = null
for i in range(0,voxels.size()-1):
if voxels[i].x == pos.x and voxels[i].y == pos.y and voxels[i].z == pos.z:
ind = i
return ind
func march():
verts.clear()
var cubeID = 0
for p1 in range(0,voxamnt-1):
var vox1 = voxels[0]+Vector3(p1,0,0)
genmesh(vox1,cubeID)
for p2 in range(0,voxamnt-1):
var vox2 = voxels[0]+Vector3(p1,0,p2)
genmesh(vox2,cubeID)
for p3 in range(0,voxamnt-1):
var vox3 = voxels[0]+Vector3(p1,-p3,p2)
genmesh(vox3,cubeID)
func voxeval(pos):
var surfacelvl = noise.get_noise_2d(pos.x,pos.z)
if pos.y <= surfacelvl-3:
voxvals.push_back(true)
#var cube = MeshInstance3D.new()
#cube.mesh = PlaneMesh.new()
#cube.position = pos
#add_child(cube)
else:
voxvals.push_back(false)
func genvoxels():
voxels = []
for i1 in range(0,voxamnt):
var point1 = Vector3(-voxamnt/2 + i1,0,-voxamnt/2)
voxels.push_back(point1)
voxeval(point1)
for i2 in range(0,voxamnt):
var point2 = Vector3(point1.x,0,-voxamnt/2+i2)
voxels.push_back(point2)
voxeval(point2)
for i3 in range(0,voxamnt):
var point3 = Vector3(point1.x,-i3,point2.z)
voxels.push_back(point3)
voxeval(point3)
# Called when the node enters the scene tree for the first time.
func _ready():
noise.noise_type = noise.TYPE_PERLIN
noise.frequency = 0.01
noise.fractal_lacunarity = 2
noise.fractal_gain = 0.5
noise.fractal_type = noise.FRACTAL_FBM
genvoxels()
var arr_mesh = ArrayMesh.new()
var arrays = []
arrays.resize(Mesh.ARRAY_MAX)
march()
await(get_tree().create_timer(2).timeout)
arrays[Mesh.ARRAY_VERTEX] = verts
arrays[Mesh.ARRAY_INDEX] = inds
arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
var m = MeshInstance3D.new()
m.mesh = arr_mesh
add_child(m)
Ive debugged a ton of stuff,not including all the console errors I’ve come across (which i have eliminated entirely), some of which includes the edge points, which I have visualized using basic box meshes, and the corner points, which I have also visualized using the same method, i have also tried creating simpler meshes with the arraymesh I set up to create, and as you can see I added a small wait before it finalizes and appends the mesh incase computational time was a factor, now I have gotten to the point where everything looks fine and i believe it honestly should work yet it doesnt and there isnt a single console error, please help it would mean the world to me.
here are the lookup tables I used, I do not know enough about marching cubes to know myself if this is the problem, which is why I’m hoping someone more experienced can help me out on this:
const edgelookup = [
[0, 1],
[1, 3],
[3, 2],
[2, 0],
[4, 5],
[5, 7],
[7, 6],
[6, 4],
[0, 4],
[1, 5],
[3, 7],
[2, 6],
]
const tritable = [
[],
[ 0, 3, 8],
[ 0, 9, 1],
[ 3, 8, 1, 1, 8, 9],
[ 2, 11, 3],
[ 8, 0, 11, 11, 0, 2],
[ 3, 2, 11, 1, 0, 9],
[ 11, 1, 2, 11, 9, 1, 11, 8, 9],
[ 1, 10, 2],
[ 0, 3, 8, 2, 1, 10],
[ 10, 2, 9, 9, 2, 0],
[ 8, 2, 3, 8, 10, 2, 8, 9, 10],
[ 11, 3, 10, 10, 3, 1],
[ 10, 0, 1, 10, 8, 0, 10, 11, 8],
[ 9, 3, 0, 9, 11, 3, 9, 10, 11],
[ 8, 9, 11, 11, 9, 10],
[ 4, 8, 7],
[ 7, 4, 3, 3, 4, 0],
[ 4, 8, 7, 0, 9, 1],
[ 1, 4, 9, 1, 7, 4, 1, 3, 7],
[ 8, 7, 4, 11, 3, 2],
[ 4, 11, 7, 4, 2, 11, 4, 0, 2],
[ 0, 9, 1, 8, 7, 4, 11, 3, 2],
[ 7, 4, 11, 11, 4, 2, 2, 4, 9, 2, 9, 1],
[ 4, 8, 7, 2, 1, 10],
[ 7, 4, 3, 3, 4, 0, 10, 2, 1],
[ 10, 2, 9, 9, 2, 0, 7, 4, 8],
[ 10, 2, 3, 10, 3, 4, 3, 7, 4, 9, 10, 4],
[ 1, 10, 3, 3, 10, 11, 4, 8, 7],
[ 10, 11, 1, 11, 7, 4, 1, 11, 4, 1, 4, 0],
[ 7, 4, 8, 9, 3, 0, 9, 11, 3, 9, 10, 11],
[ 7, 4, 11, 4, 9, 11, 9, 10, 11],
[ 9, 4, 5],
[ 9, 4, 5, 8, 0, 3],
[ 4, 5, 0, 0, 5, 1],
[ 5, 8, 4, 5, 3, 8, 5, 1, 3],
[ 9, 4, 5, 11, 3, 2],
[ 2, 11, 0, 0, 11, 8, 5, 9, 4],
[ 4, 5, 0, 0, 5, 1, 11, 3, 2],
[ 5, 1, 4, 1, 2, 11, 4, 1, 11, 4, 11, 8],
[ 1, 10, 2, 5, 9, 4],
[ 9, 4, 5, 0, 3, 8, 2, 1, 10],
[ 2, 5, 10, 2, 4, 5, 2, 0, 4],
[ 10, 2, 5, 5, 2, 4, 4, 2, 3, 4, 3, 8],
[ 11, 3, 10, 10, 3, 1, 4, 5, 9],
[ 4, 5, 9, 10, 0, 1, 10, 8, 0, 10, 11, 8],
[ 11, 3, 0, 11, 0, 5, 0, 4, 5, 10, 11, 5],
[ 4, 5, 8, 5, 10, 8, 10, 11, 8],
[ 8, 7, 9, 9, 7, 5],
[ 3, 9, 0, 3, 5, 9, 3, 7, 5],
[ 7, 0, 8, 7, 1, 0, 7, 5, 1],
[ 7, 5, 3, 3, 5, 1],
[ 5, 9, 7, 7, 9, 8, 2, 11, 3],
[ 2, 11, 7, 2, 7, 9, 7, 5, 9, 0, 2, 9],
[ 2, 11, 3, 7, 0, 8, 7, 1, 0, 7, 5, 1],
[ 2, 11, 1, 11, 7, 1, 7, 5, 1],
[ 8, 7, 9, 9, 7, 5, 2, 1, 10],
[ 10, 2, 1, 3, 9, 0, 3, 5, 9, 3, 7, 5],
[ 7, 5, 8, 5, 10, 2, 8, 5, 2, 8, 2, 0],
[ 10, 2, 5, 2, 3, 5, 3, 7, 5],
[ 8, 7, 5, 8, 5, 9, 11, 3, 10, 3, 1, 10],
[ 5, 11, 7, 10, 11, 5, 1, 9, 0],
[ 11, 5, 10, 7, 5, 11, 8, 3, 0],
[ 5, 11, 7, 10, 11, 5],
[ 6, 7, 11],
[ 7, 11, 6, 3, 8, 0],
[ 6, 7, 11, 0, 9, 1],
[ 9, 1, 8, 8, 1, 3, 6, 7, 11],
[ 3, 2, 7, 7, 2, 6],
[ 0, 7, 8, 0, 6, 7, 0, 2, 6],
[ 6, 7, 2, 2, 7, 3, 9, 1, 0],
[ 6, 7, 8, 6, 8, 1, 8, 9, 1, 2, 6, 1],
[ 11, 6, 7, 10, 2, 1],
[ 3, 8, 0, 11, 6, 7, 10, 2, 1],
[ 0, 9, 2, 2, 9, 10, 7, 11, 6],
[ 6, 7, 11, 8, 2, 3, 8, 10, 2, 8, 9, 10],
[ 7, 10, 6, 7, 1, 10, 7, 3, 1],
[ 8, 0, 7, 7, 0, 6, 6, 0, 1, 6, 1, 10],
[ 7, 3, 6, 3, 0, 9, 6, 3, 9, 6, 9, 10],
[ 6, 7, 10, 7, 8, 10, 8, 9, 10],
[ 11, 6, 8, 8, 6, 4],
[ 6, 3, 11, 6, 0, 3, 6, 4, 0],
[ 11, 6, 8, 8, 6, 4, 1, 0, 9],
[ 1, 3, 9, 3, 11, 6, 9, 3, 6, 9, 6, 4],
[ 2, 8, 3, 2, 4, 8, 2, 6, 4],
[ 4, 0, 6, 6, 0, 2],
[ 9, 1, 0, 2, 8, 3, 2, 4, 8, 2, 6, 4],
[ 9, 1, 4, 1, 2, 4, 2, 6, 4],
[ 4, 8, 6, 6, 8, 11, 1, 10, 2],
[ 1, 10, 2, 6, 3, 11, 6, 0, 3, 6, 4, 0],
[ 11, 6, 4, 11, 4, 8, 10, 2, 9, 2, 0, 9],
[ 10, 4, 9, 6, 4, 10, 11, 2, 3],
[ 4, 8, 3, 4, 3, 10, 3, 1, 10, 6, 4, 10],
[ 1, 10, 0, 10, 6, 0, 6, 4, 0],
[ 4, 10, 6, 9, 10, 4, 0, 8, 3],
[ 4, 10, 6, 9, 10, 4],
[ 6, 7, 11, 4, 5, 9],
[ 4, 5, 9, 7, 11, 6, 3, 8, 0],
[ 1, 0, 5, 5, 0, 4, 11, 6, 7],
[ 11, 6, 7, 5, 8, 4, 5, 3, 8, 5, 1, 3],
[ 3, 2, 7, 7, 2, 6, 9, 4, 5],
[ 5, 9, 4, 0, 7, 8, 0, 6, 7, 0, 2, 6],
[ 3, 2, 6, 3, 6, 7, 1, 0, 5, 0, 4, 5],
[ 6, 1, 2, 5, 1, 6, 4, 7, 8],
[ 10, 2, 1, 6, 7, 11, 4, 5, 9],
[ 0, 3, 8, 4, 5, 9, 11, 6, 7, 10, 2, 1],
[ 7, 11, 6, 2, 5, 10, 2, 4, 5, 2, 0, 4],
[ 8, 4, 7, 5, 10, 6, 3, 11, 2],
[ 9, 4, 5, 7, 10, 6, 7, 1, 10, 7, 3, 1],
[ 10, 6, 5, 7, 8, 4, 1, 9, 0],
[ 4, 3, 0, 7, 3, 4, 6, 5, 10],
[ 10, 6, 5, 8, 4, 7],
[ 9, 6, 5, 9, 11, 6, 9, 8, 11],
[ 11, 6, 3, 3, 6, 0, 0, 6, 5, 0, 5, 9],
[ 11, 6, 5, 11, 5, 0, 5, 1, 0, 8, 11, 0],
[ 11, 6, 3, 6, 5, 3, 5, 1, 3],
[ 9, 8, 5, 8, 3, 2, 5, 8, 2, 5, 2, 6],
[ 5, 9, 6, 9, 0, 6, 0, 2, 6],
[ 1, 6, 5, 2, 6, 1, 3, 0, 8],
[ 1, 6, 5, 2, 6, 1],
[ 2, 1, 10, 9, 6, 5, 9, 11, 6, 9, 8, 11],
[ 9, 0, 1, 3, 11, 2, 5, 10, 6],
[ 11, 0, 8, 2, 0, 11, 10, 6, 5],
[ 3, 11, 2, 5, 10, 6],
[ 1, 8, 3, 9, 8, 1, 5, 10, 6],
[ 6, 5, 10, 0, 1, 9],
[ 8, 3, 0, 5, 10, 6],
[ 6, 5, 10],
[ 10, 5, 6],
[ 0, 3, 8, 6, 10, 5],
[ 10, 5, 6, 9, 1, 0],
[ 3, 8, 1, 1, 8, 9, 6, 10, 5],
[ 2, 11, 3, 6, 10, 5],
[ 8, 0, 11, 11, 0, 2, 5, 6, 10],
[ 1, 0, 9, 2, 11, 3, 6, 10, 5],
[ 5, 6, 10, 11, 1, 2, 11, 9, 1, 11, 8, 9],
[ 5, 6, 1, 1, 6, 2],
[ 5, 6, 1, 1, 6, 2, 8, 0, 3],
[ 6, 9, 5, 6, 0, 9, 6, 2, 0],
[ 6, 2, 5, 2, 3, 8, 5, 2, 8, 5, 8, 9],
[ 3, 6, 11, 3, 5, 6, 3, 1, 5],
[ 8, 0, 1, 8, 1, 6, 1, 5, 6, 11, 8, 6],
[ 11, 3, 6, 6, 3, 5, 5, 3, 0, 5, 0, 9],
[ 5, 6, 9, 6, 11, 9, 11, 8, 9],
[ 5, 6, 10, 7, 4, 8],
[ 0, 3, 4, 4, 3, 7, 10, 5, 6],
[ 5, 6, 10, 4, 8, 7, 0, 9, 1],
[ 6, 10, 5, 1, 4, 9, 1, 7, 4, 1, 3, 7],
[ 7, 4, 8, 6, 10, 5, 2, 11, 3],
[ 10, 5, 6, 4, 11, 7, 4, 2, 11, 4, 0, 2],
[ 4, 8, 7, 6, 10, 5, 3, 2, 11, 1, 0, 9],
[ 1, 2, 10, 11, 7, 6, 9, 5, 4],
[ 2, 1, 6, 6, 1, 5, 8, 7, 4],
[ 0, 3, 7, 0, 7, 4, 2, 1, 6, 1, 5, 6],
[ 8, 7, 4, 6, 9, 5, 6, 0, 9, 6, 2, 0],
[ 7, 2, 3, 6, 2, 7, 5, 4, 9],
[ 4, 8, 7, 3, 6, 11, 3, 5, 6, 3, 1, 5],
[ 5, 0, 1, 4, 0, 5, 7, 6, 11],
[ 9, 5, 4, 6, 11, 7, 0, 8, 3],
[ 11, 7, 6, 9, 5, 4],
[ 6, 10, 4, 4, 10, 9],
[ 6, 10, 4, 4, 10, 9, 3, 8, 0],
[ 0, 10, 1, 0, 6, 10, 0, 4, 6],
[ 6, 10, 1, 6, 1, 8, 1, 3, 8, 4, 6, 8],
[ 9, 4, 10, 10, 4, 6, 3, 2, 11],
[ 2, 11, 8, 2, 8, 0, 6, 10, 4, 10, 9, 4],
[ 11, 3, 2, 0, 10, 1, 0, 6, 10, 0, 4, 6],
[ 6, 8, 4, 11, 8, 6, 2, 10, 1],
[ 4, 1, 9, 4, 2, 1, 4, 6, 2],
[ 3, 8, 0, 4, 1, 9, 4, 2, 1, 4, 6, 2],
[ 6, 2, 4, 4, 2, 0],
[ 3, 8, 2, 8, 4, 2, 4, 6, 2],
[ 4, 6, 9, 6, 11, 3, 9, 6, 3, 9, 3, 1],
[ 8, 6, 11, 4, 6, 8, 9, 0, 1],
[ 11, 3, 6, 3, 0, 6, 0, 4, 6],
[ 8, 6, 11, 4, 6, 8],
[ 10, 7, 6, 10, 8, 7, 10, 9, 8],
[ 3, 7, 0, 7, 6, 10, 0, 7, 10, 0, 10, 9],
[ 6, 10, 7, 7, 10, 8, 8, 10, 1, 8, 1, 0],
[ 6, 10, 7, 10, 1, 7, 1, 3, 7],
[ 3, 2, 11, 10, 7, 6, 10, 8, 7, 10, 9, 8],
[ 2, 9, 0, 10, 9, 2, 6, 11, 7],
[ 0, 8, 3, 7, 6, 11, 1, 2, 10],
[ 7, 6, 11, 1, 2, 10],
[ 2, 1, 9, 2, 9, 7, 9, 8, 7, 6, 2, 7],
[ 2, 7, 6, 3, 7, 2, 0, 1, 9],
[ 8, 7, 0, 7, 6, 0, 6, 2, 0],
[ 7, 2, 3, 6, 2, 7],
[ 8, 1, 9, 3, 1, 8, 11, 7, 6],
[ 11, 7, 6, 1, 9, 0],
[ 6, 11, 7, 0, 8, 3],
[ 11, 7, 6],
[ 7, 11, 5, 5, 11, 10],
[ 10, 5, 11, 11, 5, 7, 0, 3, 8],
[ 7, 11, 5, 5, 11, 10, 0, 9, 1],
[ 7, 11, 10, 7, 10, 5, 3, 8, 1, 8, 9, 1],
[ 5, 2, 10, 5, 3, 2, 5, 7, 3],
[ 5, 7, 10, 7, 8, 0, 10, 7, 0, 10, 0, 2],
[ 0, 9, 1, 5, 2, 10, 5, 3, 2, 5, 7, 3],
[ 9, 7, 8, 5, 7, 9, 10, 1, 2],
[ 1, 11, 2, 1, 7, 11, 1, 5, 7],
[ 8, 0, 3, 1, 11, 2, 1, 7, 11, 1, 5, 7],
[ 7, 11, 2, 7, 2, 9, 2, 0, 9, 5, 7, 9],
[ 7, 9, 5, 8, 9, 7, 3, 11, 2],
[ 3, 1, 7, 7, 1, 5],
[ 8, 0, 7, 0, 1, 7, 1, 5, 7],
[ 0, 9, 3, 9, 5, 3, 5, 7, 3],
[ 9, 7, 8, 5, 7, 9],
[ 8, 5, 4, 8, 10, 5, 8, 11, 10],
[ 0, 3, 11, 0, 11, 5, 11, 10, 5, 4, 0, 5],
[ 1, 0, 9, 8, 5, 4, 8, 10, 5, 8, 11, 10],
[ 10, 3, 11, 1, 3, 10, 9, 5, 4],
[ 3, 2, 8, 8, 2, 4, 4, 2, 10, 4, 10, 5],
[ 10, 5, 2, 5, 4, 2, 4, 0, 2],
[ 5, 4, 9, 8, 3, 0, 10, 1, 2],
[ 2, 10, 1, 4, 9, 5],
[ 8, 11, 4, 11, 2, 1, 4, 11, 1, 4, 1, 5],
[ 0, 5, 4, 1, 5, 0, 2, 3, 11],
[ 0, 11, 2, 8, 11, 0, 4, 9, 5],
[ 5, 4, 9, 2, 3, 11],
[ 4, 8, 5, 8, 3, 5, 3, 1, 5],
[ 0, 5, 4, 1, 5, 0],
[ 5, 4, 9, 3, 0, 8],
[ 5, 4, 9],
[ 11, 4, 7, 11, 9, 4, 11, 10, 9],
[ 0, 3, 8, 11, 4, 7, 11, 9, 4, 11, 10, 9],
[ 11, 10, 7, 10, 1, 0, 7, 10, 0, 7, 0, 4],
[ 3, 10, 1, 11, 10, 3, 7, 8, 4],
[ 3, 2, 10, 3, 10, 4, 10, 9, 4, 7, 3, 4],
[ 9, 2, 10, 0, 2, 9, 8, 4, 7],
[ 3, 4, 7, 0, 4, 3, 1, 2, 10],
[ 7, 8, 4, 10, 1, 2],
[ 7, 11, 4, 4, 11, 9, 9, 11, 2, 9, 2, 1],
[ 1, 9, 0, 4, 7, 8, 2, 3, 11],
[ 7, 11, 4, 11, 2, 4, 2, 0, 4],
[ 4, 7, 8, 2, 3, 11],
[ 9, 4, 1, 4, 7, 1, 7, 3, 1],
[ 7, 8, 4, 1, 9, 0],
[ 3, 4, 7, 0, 4, 3],
[ 7, 8, 4],
[ 11, 10, 8, 8, 10, 9],
[ 0, 3, 9, 3, 11, 9, 11, 10, 9],
[ 1, 0, 10, 0, 8, 10, 8, 11, 10],
[ 10, 3, 11, 1, 3, 10],
[ 3, 2, 8, 2, 10, 8, 10, 9, 8],
[ 9, 2, 10, 0, 2, 9],
[ 8, 3, 0, 10, 1, 2],
[ 2, 10, 1],
[ 2, 1, 11, 1, 9, 11, 9, 8, 11],
[ 11, 2, 3, 9, 0, 1],
[ 11, 0, 8, 2, 0, 11],
[ 3, 11, 2],
[ 1, 8, 3, 9, 8, 1],
[ 1, 9, 0],
[ 8, 3, 0],
[],
]