Manual UV-Mapping of a Primitive Cube

Oh noes! I am stuck on the concepts of UV mapping; more specifically, how Vector3 positions correspond to Vector2 coordinates.

I have made a simple code for a ‘box’ prefab:

using System.Collections.Generic;
using UnityEngine;

namespace Assets.Scripts
{
    class BoxProcedural : MonoBehaviour
    {
        public int length;
        public int width;
        public int height;

        void Awake()
        {

        }

        void Start()
        {
            Mesh mesh = gameObject.AddComponent<MeshFilter>().mesh;
            MeshRenderer meshRenderer = gameObject.AddComponent<MeshRenderer>();

            mesh.vertices = new Vector3[]
            {
            new Vector3
                (
                transform.position.x - (width / 2.0f),
                transform.position.y - (height / 2.0f),
                transform.position.z - (length / 2.0f)
                ),
            new Vector3
                (
                transform.position.x + (width / 2.0f),
                transform.position.y - (height / 2.0f),
                transform.position.z - (length / 2.0f)
                ),
            new Vector3
                (
                transform.position.x - (width / 2.0f),
                transform.position.y - (height / 2.0f),
                transform.position.z + (length / 2.0f)
                ),
            new Vector3
                (
                transform.position.x + (width / 2.0f),
                transform.position.y - (height / 2.0f),
                transform.position.z + (length / 2.0f)
                ),
            new Vector3
                (
                transform.position.x - (width / 2.0f),
                transform.position.y + (height / 2.0f),
                transform.position.z - (length / 2.0f)
                ),
            new Vector3
                (
                transform.position.x + (width / 2.0f),
                transform.position.y + (height / 2.0f),
                transform.position.z - (length / 2.0f)
                ),
            new Vector3
                (
                transform.position.x - (width / 2.0f),
                transform.position.y + (height / 2.0f),
                transform.position.z + (length / 2.0f)
                ),
            new Vector3
                (
                transform.position.x + (width / 2.0f),
                transform.position.y + (height / 2.0f),
                transform.position.z + (length / 2.0f)
                )
            };

            mesh.triangles = new int[36]
            {
                0, 2, 3,
                3, 1, 0,
                1, 5, 4,
                4, 0, 1,
                3, 7, 5,
                5, 1, 3,
                2, 6, 7,
                7, 3, 2,
                0, 4, 6,
                6, 2, 0,
                5, 7, 6,
                6, 4, 5
            };

            mesh.RecalculateNormals();
        }

        void Update()
        {

        }

        void OnGUI()
        {

        }
    }
}

The code makes me a cubic ‘box’ interior to be used as a room. Now I want to implement UV mapping for each face, with the aim of altering material parameters (i.e. tiling and texture) for each face individually. I would like to type in the code for the UV coordinates manually as I have done for the vertices and triangles, a) because I would like to see the pattern behind the process, b) because I would like to be able to alter UV mapping code if required at a later date.

Could someone post me the Vector2 UV mapping coordinates for the box, or even a single face, so that I can get the principal? Many thanks in advance!

Here’s my classic answer on the topic :slight_smile:

note the hand drawn diagrams. If you are gonna weave mesh

#YOU MUST DRAW DIAGRAMS ON PAPER!

I hope it helps. Be sure to up-thumb my other famous answer ok :slight_smile: