monogame obj + mtl装载机与纹理

时间:2014-07-19 19:44:03

标签: 3d xna xamarin monogame

如何在运行时在MonoGame for Android项目中加载来自wavefront .obj(+ mtl + textures)文件的模型(模型是动态生成的)?是否有任何开箱即用的解决方案(类似于Content.Load(" myobj.obj"))?

2 个答案:

答案 0 :(得分:1)

第一种简单的方法是在任何模型编辑器中将模型转换为标准的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表示从顶点索引创建的面。

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

答案 1 :(得分:1)

我最近完成了为我的需求编写obj格式的内容管道。 我可以与之共享源代码,但它适用于XNA 4.0,我不确定它是否适用于MonoGame,因为我从未使用它。