如何在运行时在MonoGame for Android项目中加载来自wavefront .obj(+ mtl + textures)文件的模型(模型是动态生成的)?是否有任何开箱即用的解决方案(类似于Content.Load(" myobj.obj"))?
答案 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,因为我从未使用它。