【问题标题】:Calculating uv texture coords for a procedurally generated circle mesh计算程序生成的圆形网格的 uv 纹理坐标
【发布时间】:2014-08-24 04:41:46
【问题描述】:

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

我想像下面这样纹理化它

并将此代码用于 uvs

uvs[i] = new Vector2((verts[i].x+radius)/(radius), (verts[i].y+radius)/(2*radius));

中心顶点为(0.5f,0.5f)

但我得到了一个扭曲的图像。 (在回答的帮助下编辑照片但仍然拉伸)

有人可以帮忙吗?提前致谢

【问题讨论】:

    标签: c# mesh texture-mapping procedural-generation


    【解决方案1】:

    这个怎么样:

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

    uvs[i] = new Vector2(0.5f +(verts[i].x-centerX)/(2*radius), 
                                 0.5f + (verts[i].y-centerY)/(2*radius));
    

    【讨论】:

    • 谢谢,我没有把中心部分放进去,因为顶点在本地空间,中心坐标是(0,0),但它有很大帮助。我已经编辑了照片。不过还是有一些拉伸
    • 看起来纵坐标没问题,只是横坐标不对。我记得,UV u 和 v 应该在 0.0 - 1.0 的范围内 你最近的图像表明你的 u 更像是从 -0.5 到 1.5,你确定你没有忘记除以 (2*radius) 吗? (在您的原始代码中,x 坐标仅除以半径)
    • 我们如何对任意平面形状执行类似的过程?假设一个二维多边形,除了顶点到多边形中心的距离不一样。
    • @AramAzhari 您只需要缩放顶点坐标并将其转换为范围 [0.0 - 1.0]。这样您将获得纹理坐标。您需要计算多边形的宽度(最大 x 增量)和高度(最大 y 增量)。您还需要多边形中心的坐标:centerX 和 centerY。然后对于每个顶点 (x,y),您以这种方式计算其纹理坐标 (u,v):u = 0.5f + (x - centerX)/WIDTH;v = 0.5f + (y - centerY)/HEIGHT; 所以对于顶点:(-2, 4) (6, 1) (4, 7) WIDTH =8, HEIGHT=6, centerX=2, centerY=4 纹理坐标:(0.0, 0.5) (1.0, 0.0) (0.75, 1.0)
    • @andrew_m 我试过了,但它没有给我想要的东西。我试图更好地解释我的问题here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2013-09-05
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多