MDX C#加载Wavefront OBJ

时间:2010-01-03 23:55:01

标签: c# 3d mdx .obj irrlicht

我正在尝试加载并显示(极其简单)波前OBJ文件。

我让解析器100%工作......它从文件加载数据并将它们存储在程序的结构中。

现在是我完全无法找到目标数据结构的任何信息的部分。

我不知道如何使用顶点缓冲区和索引缓冲区,我只在OpenGL中使用过显示列表和立即模式。

现在我正在尝试使用Managed Direct X,而且我的脑子周围存在严重的问题。


有几件我很困惑的事情......

1)是否有关于如何存储和渲染简单的VB& MDX中的IB对象?

2)我应该使用什么顶点格式?如果Vertex没有定义一个(因此某些面可能具有法线,纹理和位置索引而其他面可能具有JUST位置),OBJ规范允许您错过纹理或法线索引。那么我只是将它存储在CustomVertex.PositionNormalTexture中,然后如果未在OBJ中定义它们,则将普通和纹理留空吗?

3)这是我最难理解的(可能源于我对VB和IB概念的无知)。 OBJ规范允许(和我的示例文件具有)具有任意数量的顶点索引的面。基本上,面部可以定义为

f 1/1 2/2 3/3 4/4 5/5 6/6 7/7 8/8 9/9 10/10

问题是,我该如何渲染?那是三角形条,多边形等吗?


作为替代方案,如果有人知道任何预先存在的解决方案(这是一个非常轻量级且文档齐全的C#3D系统,可以自己加载OBJ或通过已经制作的插件),那也很好。 / p>

Mogre已经出局,这么差的文档很可笑(不正确的Wiki信息,文档中的不一致等等)

我试过Irrlicht,这是我最接近的。它有一个内置的OBJ加载器,这很好(并且不会抛出任何异常,比如90%的其他预构建的OBJ查看器(我认为这是由于任意的顶点面,大多数解析器似乎都修复了最多3或4).Irrlicht的唯一问题是A.)我无法弄清楚如何将纹理应用于OBJ文件,以及B.)我无法弄清楚如何将它渲染到控件而不是而不是整个表格(希望窗体形式的UI与控件中嵌入的3D视口)。

如果你能解决任何一个Irrlicht的问题,那也是一个可以接受的答案。

编辑:另外,如果你知道一个C#Library或一个非常小的命令行.exe,我可以用它来转换OBJ到另一种更容易使用的3D格式,我也想知道。< / p>

0 个答案:

没有答案