2010-07-30 97 views
3

我已经编写了一个3d地形引擎,在它上面有一个简单的模型引擎。纹理模型

我为我的地形使用矩形高度贴图,因此纹理化这些三角形非常简单。

但是,纹理我的模型我有点卡住了。

我使用自定义的模型格式,所以喜欢使用搅拌机的答案或使用3DS不会有帮助。

这样做的原因是,我开始了这个爱好项目来教自己的OpenGL编程,因为我已经从一个真正旧的Turbo Pascal软件渲染我的一个朋友在1999年写了准备的车型,我只是不停使用它们。

我的问题是:

是否有一个著名的算法来为我的模型由三角形的纹理坐标?如果不是,我应该遵循什么策略?

回答

4

有很多方法可以自动生成纹理坐标,但我不知道有什么简单的方法可以做到这一点,这样可以使坐标没有明显的失真或过多的不连续性。

我会说最简单的方法是编写一个小程序,将您的当前模型格式转换为更标准的格式。过去我已经完成了这个工作,并且我发现XNA .x格式非常易于转换。我认为你尝试的任何事情最终都会花费更长的时间,比做这个更困难,然后使用3D建模软件包中提供的工具。

如果您完全确定您不想进行转换,那么我的建议是瞄准简单的东西,并接受结果不会太好。一种简单的方法是球面投影 - 基本上,您可以根据与从模型中心到顶点的矢量对应的“纬度”和“经度”将纹理坐标分配给顶点。

同样容易,但通常对于像角色这样的东西更好,是将所有面向前方的多边形投影到它们的x和y坐标上,并且对于后面的多边形也是如此,除了将它们抵消以使两组彼此相邻。

进一步你可以尝试圆柱投影也。这些投影中的每一个都适用于某些形状。但是,一般来说,它们会比Blender等适当的紫外线打包更差。

1

您也可以编写一个小搅拌机导入程序和相应的导出程序。每个人都应该不会超过100行的Python(模型格式看似简单),并自动UV映射算法是很多比2X 100 LOC

另一种解决方案是下降的支持更复杂的旧格式,并使用您找到的第一个.obj加载器(或任何其他)。