所以,我想我开始掌握这个 3D 的东西了,我现在已经到了需要做一些纹理映射的地步。但我的问题是如何创建/获取我的纹理坐标。我了解 [u,v] 坐标,但现在的问题是“我该如何制作它们”?看看我的 .obj 文件,我发现它们有 vt 坐标,我不完全确定它们是如何生成的,但我如何根据自己的喜好操纵它们?
我需要以编程方式进行映射,因为纹理将在整个程序中发生变化。 我目前正在使用 MayaVI,但我觉得使用这些东西有点通用。感谢您的帮助!
纹理坐标通常不是生成的,而是手动分配的。这种情况发生在您选择的使用 GUI 的 3D 建模应用程序中(而不是通过将它们写入 3D 文件)。导出网格时,UV 坐标将与网格数据的其余部分一起导出。
几何体的自动纹理映射很复杂。这并不像展平所有三角形那么简单。毕竟,您想在展开的面上绘制纹理,因此拥有更大的连接面块(而不是数千个单独的三角形)至关重要。您还想避免接缝/隐藏接缝。 有多种工具可能在某些方面表现不错,但我个人更喜欢使用优质 3D 建模软件手动展开。更多的控制,更好的结果(以一些设计时间为代价)。
对于简单的网格(四边形、立方体、2D 网格地形),您可以在 OBJ 文件或算法中手动完成。
纹理坐标的基本变换(移动、旋转和缩放)也可以在顶点着色器中轻松完成。
Pandas3D 包含纹理坐标生成算法,详细信息如下:https://docs.panda3d.org/1.10/python/programming/texturing/automatic-texture-coordinates
一个简单的方法就是通过与模型的计算比例相关的某个因素来标准化顶点的 xy 并将其用作 uv。