如何在Lithtech引擎中通过UV数据求解纹理方向向量P和Q?
求解Tron 2.0(Lithtech引擎)纹理映射中的P、Q向量问题
我正在对电子游戏《Tron 2.0》的关卡文件做逆向工程,目前卡在纹理映射环节——需要从已知的三角形顶点位置与UV数据,反推用于计算UV的两个向量P和Q。以下是具体问题说明:
示例数据
已知三角形ABC的顶点位置与UV数据如下:
A.position = (64.0, 0.0, 0.0) B.position = (61.2172813, 18.6666679, 0.0) C.position = (43.2871819, 18.6666679, 43.2871284) A.uv = (0.5, 0.0) B.uv = (0.478260010, 0.0) C.uv = (0.338181108, 0.338180691)
UV的计算公式为:
Vertex.uv.u = P.Dot(Vertex.position) / Texture.width Vertex.uv.v = Q.Dot(Vertex.position) / Texture.height
其中P、Q是描述纹理方向的向量(可视为切线/副切线,无需与法线正交),本例中已知正确的P、Q与纹理尺寸:
P = (1.0, 0.0, 0.0) Q = (0.0, 0.0, 1.0) Texture.width = 128, Texture.height = 128
核心问题
当P和Q的值未知时,如何从顶点位置与UV数据反推出这两个向量?
关键约束
- P和Q的方向不固定
- P和Q可能与三角形法线正交,也可能不正交
- 三个顶点共面,且使用同一组P、Q值
- 顶点坐标分量不总是为0
我已经尝试过Eric Lengyel的方法及其变体、多种重心法,但均未成功,欢迎任何可行的解法思路。
内容的提问来源于stack exchange,提问作者KainXavier
相关产品推荐
相关产品推荐

