【发布时间】:2018-04-05 20:10:45
【问题描述】:
我正在使用公式在 3d 球体 X、Y、Z 坐标上对 2D 纹理进行 UV 映射
u = (0.5 + atan2(X, Y) / (2 * glm::pi<double>()));
v = (0.5 - asin(Z) / glm::pi<double>());
在现代 openGL C++ 中。
我不知道为什么球体中有这个神器。想不通。
【问题讨论】:
-
我只注意到如果我通过添加更多顶点来增加球体的分割数和复杂性,这个工件会变得更薄。但它仍然存在。
-
伪影发生在纹理坐标的翻转点(它们从 1 回到 0 的面。解决这个问题的唯一方法是复制一个顶点环,其中发生。然后将纹理坐标 0 分配给一个圆,将 1 分配给另一个圆。注意,您还必须调整索引。
-
@BDL 谢谢,所以这意味着在翻转点,片段着色器向后插值并将所有数据钳制在那个经度?
-
是的,正是:)
标签: c++ opengl uv-mapping