- Home /
This post has been wikified, any user with enough reputation can edit it.
Question by
Pauls · Dec 03, 2013 at 06:15 AM ·
texturetilemaprendertexturevertices
Texture on created mesh visible from below only?
Hi,
I create a mesh with this method, but there is a problem with the texture depending on the Z used in the vertices array : if Z is negative, the mesh is created in the X/-Z axis, and the texture is correctly rendered. But if Z is positive, then the texture will not be rendered correctly : it can only be seen if the camera is below the mesh, as if the texture was rendered upside down. (if the camera is above the mesh, it does not render anything, the mesh looks transparent). Any way to debug this?
Here is the code :
public void BuildMesh() {
int numTiles = size_x * size_z;
int numTris = numTiles * 2;
int vsize_x = size_x + 1;
int vsize_z = size_z + 1;
int numVerts = vsize_x * vsize_z;
// Generate the mesh data
Vector3[] vertices = new Vector3[ numVerts ];
Vector3[] normals = new Vector3[numVerts];
Vector2[] uv = new Vector2[numVerts];
int[] triangles = new int[ numTris * 3 ];
int x, z;
for(z=0; z < vsize_z; z++) {
for(x=0; x < vsize_x; x++) {
//HERE
vertices[ z * vsize_x + x ] = new Vector3( x*tileSize, 0, -z*tileSize );
normals[ z * vsize_x + x ] = Vector3.up;
uv[ z * vsize_x + x ] = new Vector2( (float)x / size_x, 1f - (float)z / size_z );
}
}
for(z=0; z < size_z; z++) {
for(x=0; x < size_x; x++) {
int squareIndex = z * size_x + x;
int triOffset = squareIndex * 6;
triangles[triOffset + 0] = z * vsize_x + x + 0;
triangles[triOffset + 1] = z * vsize_x + x + vsize_x + 1;
triangles[triOffset + 2] = z * vsize_x + x + vsize_x + 0;
triangles[triOffset + 3] = z * vsize_x + x + 0;
triangles[triOffset + 4] = z * vsize_x + x + 1;
triangles[triOffset + 5] = z * vsize_x + x + vsize_x + 1;
}
}
Thanks
Comment