我已经在其顶部编写了具有简化模型引擎的3d地形引擎。

我为自己的地形使用了矩形高度图,因此对这些三角形进行纹理化非常简单。

但是,在对模型进行纹理化时,我有点卡住了。

我使用自定义模型格式,因此使用Blender或3ds之类的答案将无济于事。

这样做的原因是,我开始了这个业余项目,以自学OpenGL编程,并且由于我是从我的一位 friend 在1999年写的一个非常老的Turbo Pascal软件渲染器中准备好模型的,所以我一直在使用它们。

我的问题是:

是否存在一种众所周知的算法来生成模型所组成的三角形的纹理坐标?如果没有,我应该遵循什么策略?

最佳答案

有多种自动生成纹理坐标的方法,但是我不知道有任何简单的方法可以使您的坐标没有明显的变形或过多的不连续性。

我想说,最简单的方法是编写一个小程序,将您当前的模型格式转换为更标准的格式。我过去已经这样做过,并且发现XNA .x格式很容易转换为。我认为,您尝试做的任何其他事情最终都会比在3D建模套件中使用其他工具花费更长的时间并且更加困难。

如果您绝对确定不想进行转换,那么我的建议是针对简单的东西,并接受结果不会很好。一种简单的方法是球形投影-基本上是根据“纬度”和“经度”将纹理坐标分配给顶点,该“纬度”和“经度”对应于从模型中心到顶点的 vector 。

同样简单但对于字符之类的东西通常更好的方法是将所有面向前的多边形投影到它们的x和y坐标上,并且类似地针对面向后的多边形投影,除了将它们偏移使两个集合彼此相邻。

更进一步,您也可以尝试圆柱投影。这些投影中的每一个都适用于某些形状。但是,通常它们比诸如Blender等中的适当UV解包要差得多。

10-07 19:12
查看更多