Unity3d 如何计算平面多边形网格的UV

Unity3d 如何计算平面多边形网格的UV,unity3d,unity5,mesh,uv-mapping,Unity3d,Unity5,Mesh,Uv Mapping,我的游戏生成一个平面(建筑物的地板)。它是一个平面多边形网格,如图所示: poligon是按程序生成的,每次都不同 我需要映射UV坐标,以便正确显示标准的方形纹理,比如说,砖地板 将正确的UV坐标分配给每个顶点的最佳方法是什么?对于不规则形状,您可能希望在网格上“粘贴”纹理(想象一下在网格上粘贴一个矩形贴纸,并切掉网格形状以外的纹理) 对于该类型的贴图,您可能希望使用Mesh.bounds,这将在局部坐标中提供网格的边界框,这是要“粘贴”纹理的区域 Mesh mesh = GetCompone

我的游戏生成一个平面(建筑物的地板)。它是一个平面多边形网格,如图所示:

poligon是按程序生成的,每次都不同

我需要映射UV坐标,以便正确显示标准的方形纹理,比如说,砖地板


将正确的UV坐标分配给每个顶点的最佳方法是什么?

对于不规则形状,您可能希望在网格上“粘贴”纹理(想象一下在网格上粘贴一个矩形贴纸,并切掉网格形状以外的纹理)

对于该类型的贴图,您可能希望使用
Mesh.bounds
,这将在局部坐标中提供
网格
边界框
,这是要“粘贴”纹理的区域

Mesh mesh = GetComponent<MeshFilter>();
Bounds bounds = mesh.bounds;
现在进行映射:

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;
Vector2[]uvs=新矢量2[顶点.长度];
对于(int i=0;i
效果很好,谢谢!我试图找出网格周围的一个边界正方形,然后将顶点坐标映射到该正方形,但我在某个地方搞砸了。使用给定的边界要容易得多:)
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;