单一游戏对象+ MTL加载器与纹理



我如何从wavefront .obj (+mtl +纹理)文件加载模型在运行时(模型是动态生成的)在MonoGame Android项目?是否有任何开箱即用的解决方案(如Content.Load("myobj.obj"))?

第一种简单的方法是在任何模型编辑器中将模型转换为标准的DirectX格式,并通过内容管道使用它。

如果出于某种原因,您必须动态加载它——这比您想象的要容易。当你可以搜索并找到一个预制的API,如http://assimp.sourceforge.net/时,只需在记事本或类似的文本编辑器中查看.obj文件。下面是一个(经过大量修改的)示例:

o Cube
v 1.000000 0.000000 -1.000000
v 1.000000 0.000000 0.000000
v -0.000000 0.000000 -0.000000
v 0.000000 0.000000 -1.000000
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
usemtl Material
s off
f 2/1 3/2 4/3

这是一个非常简单的模型格式!o表示一个新的网格,v表示一个新的顶点,vt表示一个纹理坐标,把它们放在一起,f表示一个由顶点索引创建的面。

通过一些工作和研究,任何人都可以为任何引擎(包括XNA)组装.obj加载器。它是最简单的模型格式之一。

我最近根据自己的需要编写了obj格式的内容管道。我可以分享源代码,但它是XNA 4.0,我不确定它是否适合一夫一妻制,因为我从来没有使用过它。

最新更新