2016-12-28 7 views
1

Моя игра создает плоскую поверхность (пол здания). Это плоский Полигон сетки, как показано на рисунке:Как рассчитать UVs плоской сетки полигона

enter image description here

Полигон генерируется процедурно и будет каждый раз разный.

Мне нужно отобразить UV-координаты, чтобы правильно отображалась стандартная квадратная текстура, скажем, пола из кирпича.

Каков наилучший способ определения правильных UV-координат каждой вершины?

ответ

1

С неправильной формой вы можете «вставить» текстуру через сетку (представьте, что вы наклеиваете прямоугольную наклейку на свою сетку и отсекаете те, которые выходят за рамки вашей сетчатой ​​формы).

Для этого типа отображения, вы можете захотеть использовать Mesh.bounds, который дает bounding box ваших mesh в локальных координатах, которая является областью, которую вы собираетесь «вставить» текстуру поверх.

Mesh mesh = GetComponent<MeshFilter>(); 
Bounds bounds = mesh.bounds; 

Получить вершины меша:

Vector3[] vertices = mesh.vertices; 

Теперь сделайте отображение:

Vector2[] uvs = new Vector2[vertices.Length]; 
for(int i = 0; i < vertices.Length; i++) 
{ 
    uvs[i] = new Vector2(vertices[i].x/bounds.size.x, vertices[i].z/bounds.size.z); 
} 
mesh.uv = uvs; 
+0

Работает отлично, спасибо! Я пытался вычислить ограниченный квадрат вокруг сетки, а затем отобразить координаты вершин на указанный квадрат, но я где-то прищурился. Использование заданных границ намного проще :) – kace91