- Home /
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!
If you are actually talking about the Unity Primitive Cube, then check my answer here : http://answers.unity3d.com/questions/306959/uv-mapping.html
Upvote to Fattie.
Answer by Fattie · Apr 07, 2013 at 08:30 PM
Here's my classic answer on the topic :)
http://answers.unity3d.com/questions/293607/tiling-uv-mapping.html
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 :)
Your answer
Follow this Question
Related Questions
Create planar UVs on procedurally generated mesh 1 Answer
2 Textures on a single mesh 1 Answer
UV Mapping a Sphere at runtime 1 Answer
How to texture walls in procedurally generated mesh? 1 Answer
How to split UV in Mesh 1 Answer