Problems with UVs in a cube (add UV in SurfaceTool?)

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Anyu137

Hi, I’m new to UV mapping and I’m having some problems.

I made a StandardMaterial3D with a 4x4 texture. I’m trying to put that texture in all faces of a cube,but it had a little problem

my codes:
->MeshGEN:
extends MeshInstance3D
@tool

var voxelMap=[]

var surfacetool:SurfaceTool=SurfaceTool.new()
# Called when the node enters the scene tree for the first time.
func _ready()->void:
	voxelMap.resize(VoxelData.ChunkWidth)
	for i in range(VoxelData.ChunkWidth):
		voxelMap[i]=[]
		voxelMap[i].resize(VoxelData.ChunkHeight)
		for j in range(VoxelData.ChunkHeight):
			voxelMap[i][j]=[]
			voxelMap[i][j].resize(VoxelData.ChunkWidth)
	surfacetool.begin(Mesh.PRIMITIVE_TRIANGLES)
	PopulateVoxelMap()
	CreateMeshData()
	CreateMesh()
	


func PopulateVoxelMap()->void:
	for x in range(VoxelData.ChunkWidth):
		for  y  in range(VoxelData.ChunkHeight):
			for  z in range(VoxelData.ChunkWidth):
				voxelMap[x][y][z] = true;

func CreateMeshData()->void:
	for x in range(VoxelData.ChunkWidth):
		for  y  in range(VoxelData.ChunkHeight):
			for  z in range(VoxelData.ChunkWidth):
				AddVoxelDataToChunk(Vector3(x, y, z))

func AddVoxelDataToChunk(pos:Vector3)->void:
	var t=[3, 1, 0,3, 2, 1]
	for i in range(6):
		if (!CheckVoxel(pos + VoxelData.faceChecks[i])):
			for j in range(6):
				surfacetool.set_normal(VoxelData.normals[i])
				surfacetool.set_uv(VoxelData.voxelUvs[j])#VoxelData.voxelUvs[t[j]])
				surfacetool.add_vertex(pos + VoxelData.voxelVerts[VoxelData.voxelTris[i][j]])
				

func CreateMesh():
	mesh = ArrayMesh.new()
	surfacetool.generate_normals()
	surfacetool.generate_tangents()
	surfacetool.index()
	mesh = surfacetool.commit()

func CheckVoxel(pos:Vector3 )->bool:
	var x = round(pos.x)
	var y = round(pos.y)
	var z = round(pos.z)
	if ((x < 0 or x > VoxelData.ChunkWidth - 1) or (y < 0 or y > VoxelData.ChunkHeight - 1) or (z < 0 or z > VoxelData.ChunkWidth - 1)):
		return false
	return voxelMap[x][y][z]

->VoxelData:

extends Node
@tool

const ChunkWidth = 5
const ChunkHeight = 15
const TextureSize:float=1



const normals = [Vector3.UP,Vector3.FORWARD, Vector3.RIGHT,Vector3.BACK,Vector3.LEFT,Vector3.DOWN]

const faceChecks = [
	Vector3(0.0, 1.0, 0.0),#TOP
	Vector3(0.0, 0.0, 1.0),#FORWARD
	Vector3(1.0, 0.0, 0.0),##RIGHT
	Vector3(0.0, 0.0, -1.0),#BACK
	Vector3(-1.0, 0.0, 0.0),#LEFT
	Vector3(0.0, -1.0, 0.0)#Bottom
	

	]

const voxelVerts = [
	Vector3(0.0, 1.0, 0.0),
	Vector3(1.0, 1.0, 0.0),
	Vector3(1.0, 1.0, 1.0),
	Vector3(0.0, 1.0, 1.0),
	
	
	Vector3(0.0, 0.0, 0.0),
	Vector3(1.0, 0.0, 0.0),
	Vector3(1.0, 0.0, 1.0),
	Vector3(0.0, 0.0, 1.0)
	
	]
const voxelTris = [
	# 0 1 2 2 1 3
	[0,1,2,0,2,3],#TOP
	[3,2,7,2,6,7],#FORWARD
	[2,1,6,1,5,6],#RIGHT
	[1,4,5,1,0,4],#BACK
	[0,3,7,4,0,7], #LEFT
	[6,5,4,4,7,6]#Bottom
	
	]



var voxelUvs = [
	Vector2(0,TextureSize),
	Vector2(0,0),
	Vector2( TextureSize,0),
	
	Vector2(0, TextureSize),
	Vector2( TextureSize,0),
	
	Vector2( TextureSize, TextureSize),
	
	
	
	]

Image of Result: