【发布时间】:2018-06-14 15:12:56
【问题描述】:
vec2 uv = vec2(position.x / 360.0 + 0.5, position.y / 180.0 + 0.5);
什么时候用uv,什么时候用position?并且它们之间可以相互转换吗?
【问题讨论】:
vec2 uv = vec2(position.x / 360.0 + 0.5, position.y / 180.0 + 0.5);
什么时候用uv,什么时候用position?并且它们之间可以相互转换吗?
【问题讨论】:
UV 和位置是两个不同坐标系中的点。
UV 坐标也称为纹理坐标。
纹理坐标可以是任何 2d 坐标,通常在建模软件或用于生成 3d 模型的代码中创建/定义。
对于模型中的每个点(顶点),都有 0 到 2 组纹理坐标。这些集合通常称为“UV 通道”
所以...几乎所有模型都有顶点。但并非所有模型都有纹理坐标,因此无法保证在它们之间进行转换,因为它们并不总是存在。 :) 如果它们确实存在并且都设置为可预测的值,那么您有时可以在它们之间进行转换,但这用处有限,因为通常有更简单的方法可以找到与 UV 关联的点。
也就是说,有时 UV 坐标对于确定您正在渲染的模型的哪一部分很有用。例如在草着色器中...您可能有很多代表草丛的小方块,散布在您的世界中...所有这些草丛顶点的位置将遍布整个地方,但 UV 将在范围通常为 0 到 1,是草地纹理上纹理像素的坐标。因此,如果您只想变形草叶的顶部,您可以检查 UV.v 是否
不管怎样,这是一个很大的话题,所以这里有一个关于它的教程……看看吧!
http://www.opengl-tutorial.org/beginners-tutorials/tutorial-5-a-textured-cube/
【讨论】: