纹理坐标生成

时间:2013-01-21 14:32:42

标签: 3d coordinates texture-mapping

所以,我想我已经开始了解这个3D东西了,我现在已经达到了需要做一些纹理映射的地步。我的问题是如何创建/获取我的纹理坐标。我对[u,v]坐标有所了解,但现在问题是“我如何制作它们”?看看我的.obj文件,我发现它们有vt坐标,我不完全确定它们是如何生成的,但我怎么能按照自己的喜好操作呢?

我需要以编程方式进行映射,因为纹理将在整个程序中发生变化。 我目前正在与MayaVI合作,但我觉得使用这些东西有点普遍。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

通常不会生成纹理坐标,而是手动分配。这种情况发生在您选择的3D建模应用程序中,使用GUI(而不是将它们写入3D文件)。导出网格时,将使用其余网格数据导出UV坐标。

几何体的自动纹理贴图很复杂。它并不像简单地展平所有三角形那么简单。毕竟你想要在未展开的面上绘制纹理,因此拥有更大的连接面(不是数千个单独的三角形)是必不可少的。您还希望避免接缝/隐藏接缝。 有各种各样的工具可以在某些方面做得不错,但我个人更喜欢用高质量的3D建模软件手工打包。更多的控制,更好的结果(以一些设计时间为代价)。

对于简单网格(四边形,立方体,2D网格地形),您可以在OBJ文件或算法中手动完成。

可以自动完成什么?

  • 可以使用简单算法从三角形数据和位置生成法线,几乎可用于任何类型的网格。 (结果各不相同)
  • 可以从三角形数据,法线和纹理坐标计算切线。 (效果很好)
  • Bitangents(就像切线一样)

也可以在顶点着色器中轻松完成纹理坐标的基本变换(移动,旋转和缩放)。