admin管理员组文章数量:1130349
1、起因:简单说就是,在透视矩阵作用下,矩形的两对平行的边中得至少一对将不再平行,导致构成改矩形的两个三角形不再等大,所以其纹理坐标也不再等比;
详细的可参照这篇博文 伪 3D 中的贴图纹理的透视矫正-腾讯云开发者社区-腾讯云
2、具体矫正方式:通过三角形顶点的齐次坐标的w分量完美解决
假设三角形三个顶点其次坐标为:pts[3][4]; // pts[i][3]为w分量
对应的纹理坐标为:texPos[3][2];
任一点的重心坐标为(a, b, c)
则可得校正后的纹理坐标为
texX = (a/pts[0][3]*texPos[0][0] + b/pts[1][3]*texPos[1][0] + c/pts[2][3]*texPos[2][0]) / (a/pts[0][3] + b/pts[1][3] + c/pts[2][3]);
texY = (a/pts[0][3]*texPos[0][1] + b/pts[1][3]*texPos[1][1] + c/pts[2][3]*texPos[2][1]) / (a/pts[0][3] + b/pts[1][3] + c/pts[2][3]);
=========================================================================
矫正前后效果对比如下,可以看到左边箱子的纹路是折线
以下是将构成箱子的三角面片画出来的结果,可用于辅助理解
最后感谢以下博文作者
math - perspective correction of texture coordinates in 3d - Stack Overflow
伪 3D 中的贴图纹理的透视矫正-腾讯云开发者社区-腾讯云
WebGL 纹理映射的透视纠正
1、起因:简单说就是,在透视矩阵作用下,矩形的两对平行的边中得至少一对将不再平行,导致构成改矩形的两个三角形不再等大,所以其纹理坐标也不再等比;
详细的可参照这篇博文 伪 3D 中的贴图纹理的透视矫正-腾讯云开发者社区-腾讯云
2、具体矫正方式:通过三角形顶点的齐次坐标的w分量完美解决
假设三角形三个顶点其次坐标为:pts[3][4]; // pts[i][3]为w分量
对应的纹理坐标为:texPos[3][2];
任一点的重心坐标为(a, b, c)
则可得校正后的纹理坐标为
texX = (a/pts[0][3]*texPos[0][0] + b/pts[1][3]*texPos[1][0] + c/pts[2][3]*texPos[2][0]) / (a/pts[0][3] + b/pts[1][3] + c/pts[2][3]);
texY = (a/pts[0][3]*texPos[0][1] + b/pts[1][3]*texPos[1][1] + c/pts[2][3]*texPos[2][1]) / (a/pts[0][3] + b/pts[1][3] + c/pts[2][3]);
=========================================================================
矫正前后效果对比如下,可以看到左边箱子的纹路是折线
以下是将构成箱子的三角面片画出来的结果,可用于辅助理解
最后感谢以下博文作者
math - perspective correction of texture coordinates in 3d - Stack Overflow
伪 3D 中的贴图纹理的透视矫正-腾讯云开发者社区-腾讯云
WebGL 纹理映射的透视纠正
本文标签: 纹理透视笔记图形学Correction
版权声明:本文标题:图形学笔记【纹理透视矫正(perspective correction)】 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1758703307a2783081.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论