C# 计算程序生成的圆网格的uv纹理坐标

C# 计算程序生成的圆网格的uv纹理坐标,c#,mesh,texture-mapping,procedural-generation,C#,Mesh,Texture Mapping,Procedural Generation,我试图计算我在代码中生成的网格的uv。这是一个非常简单的圆(2d) 我想把它做成如下的纹理 并将此代码用于UV uvs[i] = new Vector2((verts[i].x+radius)/(radius), (verts[i].y+radius)/(2*radius)); 中心顶点为(0.5f,0.5f) 但是我得到了一个扭曲的图像。(在回答的帮助后编辑照片,但仍处于拉伸状态) 有人能帮忙吗?提前谢谢这个怎么样: 假设中心顶点的坐标为(centerX,centerY) 谢谢,我没有

我试图计算我在代码中生成的网格的uv。这是一个非常简单的圆(2d)

我想把它做成如下的纹理

并将此代码用于UV

uvs[i] = new Vector2((verts[i].x+radius)/(radius), (verts[i].y+radius)/(2*radius));
中心顶点为(0.5f,0.5f)

但是我得到了一个扭曲的图像。(在回答的帮助后编辑照片,但仍处于拉伸状态)

有人能帮忙吗?提前谢谢

这个怎么样:

假设中心顶点的坐标为(centerX,centerY)


谢谢,我没有把中心部分放进去,因为顶点在局部空间,中心坐标是(0,0),但它帮助很大。我已经编辑了这张照片。尽管看起来垂直坐标很好,但仍然有一些拉伸,只是水平坐标是错误的。正如我所记得的,UV u和v应该在0.0到1.0之间。你最近的图片显示你的u更像是从-0.5到1.5,你确定你没有忘记除以(2*半径)吗?(正如在您的原始代码中,x坐标仅除以半径)我们如何对任意平面形状执行类似的过程?假设一个二维多边形,但顶点到多边形中心的距离不同。@AramAzhari您只需将顶点坐标缩放并转换为[0.0-1.0]范围。这样您将获得纹理坐标。您需要计算多边形的宽度(最大x增量)和高度(最大y增量)。您还需要多边形中心的坐标:centerX和centerY。然后,对于每个顶点(x,y),用以下方式计算其纹理坐标(u,v):
u=0.5f+(x-centerX)/WIDTHv=0.5f+(y-中心)/高度所以对于顶点:(-2,4)(6,1)(4,7)宽度=8,高度=6,centerX=2,centerY=4纹理坐标:(0.0,0.5)(1.0,0.0)(0.75,1.0)@andrew_m我试过了,但它没有给出我想要的。我试图更好地解释我的问题
uvs[i] = new Vector2(0.5f +(verts[i].x-centerX)/(2*radius), 
                             0.5f + (verts[i].y-centerY)/(2*radius));