【问题标题】:Finding isocurve from triangulation with known uv at all vertices在所有顶点处用已知 uv 从三角剖分中找到等曲线
【发布时间】:2014-07-04 23:33:12
【问题描述】:

我有一个 3D 三角网格,它类似于一张弯曲的纸,因为它有 4 条边并且存在于 3 维空间中。边缘可能有不同的长度和不同的曲线,但理论上它可以不断变形,看起来像一张纸。每个顶点都分配了一个 uv 坐标,u 和 v 的范围在 0 到 1 之间。有些顶点显然在边界上。对于底部边界,u 在 [0,1] 范围内,v 为 0。顶部边界顶点的 u 在 [0,1] 内且 v = 1。左右边界的 u = 0 或 u = 1(分别) 且 v 在 [0,1] 内。

现在想想 u = 0.5 的“等曲线”。这将是从表面“中间”的底部到顶部的“线”(或线段的集合?)。我将如何找到它?

或者,假设我想找到对应于 uv 坐标 (0.2,0.7) 的 3D 坐标。我怎么去那里?

想通过渲染器(OpenGL 等)放置数据来实现这一点。我确信必须有一个标准的方法。感觉就像是纹理映射函数的逆函数。

【问题讨论】:

    标签: texture-mapping triangulation uv-mapping


    【解决方案1】:

    基本上,您的两个问题都归结为同一件事:如何在UVXYZ 坐标之间进行转换。

    这是一个插值问题。考虑网格中的单个三角形,您知道 3 个顶点处的 UVXYZ 坐标。因此,您有适量的数据可以将 X、Y、Z 内插为 U、V 的线性函数:

    X(U,V) = a0 + a1*U + a2*V
    Y(U,V) = b0 + b1*U + b2*V
    Z(U,V) = c0 + c1*U + c2*V
    

    那么问题就变成了如何确定系数ai,bi,ci。这可以通过基于给定顶点数据求解一组线性方程来完成。例如,给定三角形的X 系数可以通过求解得到:

    [X1]   [1 U1 V1]   [a0]
    [X2] = [1 U2 V2] * [a1]
    [X3]   [1 U3 V3]   [a2]
    

    一旦您获得了网格中每个三角形的所有这些系数,您就可以确定任何 UV 对的 XYZ 坐标:

    1. Locate the triangle that contains the UV point.
    2. Evaluate the X(U,V),Y(U,V),Z(U,V) functions for the given triangle.
    

    【讨论】:

    • 感谢您的回复。当场。
    猜你喜欢
    • 2018-04-08
    • 2021-05-27
    • 2012-09-16
    • 1970-01-01
    • 2020-08-05
    • 2012-12-13
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多