Unity - Определение UV для круглой плоской сетки, сгенерированной кодом - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь создать круговую сетку, составленную из треугольников с общим центром в центре круга.

enter image description here

Сеткагенерируется правильно, но UV нет, и у меня возникли проблемы с пониманием, как их добавить.Я предполагал, что просто скопирую шаблон вершин, но это не сработало.Вот функция:

private void _MakeMesh(int sides, float radius = 0.5f)
{
m_LiquidMesh.Clear();
float angleStep = 360.0f / (float) sides;
List<Vector3> vertexes      = new List<Vector3>();
List<int>       triangles   = new List<int>();
List<Vector2>   uvs         = new List<Vector2>();
Quaternion      rotation  = Quaternion.Euler(0.0f, angleStep, 0.0f);

// Make first triangle.
vertexes.Add(new Vector3(0.0f, 0.0f, 0.0f));  
vertexes.Add(new Vector3(radius, 0.0f, 0.0f));    
vertexes.Add(rotation * vertexes[1]);        

// First UV ??
uvs.Add(new Vector2(0, 0));
uvs.Add(new Vector2(1, 0));
uvs.Add(rotation * uvs[1]);

// Add triangle indices.
triangles.Add(0);
triangles.Add(1);
triangles.Add(2);
for (int i = 0; i < sides - 1; i++)
{
    triangles.Add(0); 
    triangles.Add(vertexes.Count - 1);
    triangles.Add(vertexes.Count);

    // UV ??



    vertexes.Add(rotation * vertexes[vertexes.Count - 1]);
}
m_LiquidMesh.vertices   = vertexes.ToArray();
m_LiquidMesh.triangles  = triangles.ToArray();
m_LiquidMesh.uv         = uvs.ToArray();

m_LiquidMesh.RecalculateNormals();
m_LiquidMesh.RecalculateBounds();

Debug.Log("<color=yellow>Liquid mesh created</color>");
}

How does mapping UV work in a case like this?

Редактировать: я пытаюсь использовать этот круг как эффект чего-то, вытекающего наружу из центра (подумайте: жидкая сетка для варочного котла)

...