【发布时间】:2022-05-03 15:30:07
【问题描述】:
我正在尝试生成一个由三角形组成的圆形网格,该三角形的中心位于圆心。
网格已正确生成,但 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?
编辑:我正在尝试使用这个圆圈作为从中心向外流动的东西的效果(想想:酿造罐的液体网)
【问题讨论】:
-
UV 映射应该是这样工作的,但是我有一种感觉,使用 vector2 重复旋转可能是它横向的地方。一种一直对我有用的方法是只复制生成的顶点,省略 z 坐标(如果你的网格需要垂直于 z 轴)
-
@zambari 感谢您的洞察力。我会试试看会发生什么。
标签: c# unity3d uv-mapping