我正在尝试加载和显示(非常简单)波前 OBJ 文件。
我让解析器 100% 工作......它从文件中加载数据并将它们存储在程序的结构中。
现在是我完全找不到关于目标数据结构的任何信息的部分。
我不知道如何使用顶点缓冲区和索引缓冲区,我只在 OpenGL 中使用过显示列表和立即模式。
现在,我正在尝试使用 Managed Direct X,但我在解决这个问题时遇到了严重的问题。
有几件事我很困惑...
1) 有没有关于如何在 MDX 中存储和渲染简单的 VB 和 IB 对象的好教程?
2)我应该使用什么顶点格式?如果顶点没有定义,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 或通过已制作的插件加载),那也很好。
Mogre 出局了,如此糟糕的文档令人可笑(不正确的 Wiki 信息、文档中的不一致等)
我试过 Irrlicht,这是我最接近的。它有一个内置的 OBJ 加载器,非常好(并且不会像 90% 的其他预建 OBJ 查看器那样抛出任何异常(我认为这是由于任意 # 的垂直面,大多数解析器似乎修复了最多 3 或 4). Irrlicht 的唯一问题是 A.) 我不知道如何将纹理应用到 OBJ 文件,以及 B.) 我不知道如何将其渲染到控件中而不是整个表单(希望 Windows 表单 UI 具有嵌入在控件中的 3D 视口)。
如果您可以解决 Irrlicht 的任何一个问题,那么这也是一个可以接受的答案。
编辑:另外,如果您知道一个 C# 库或一个非常小的命令行 .exe,我可以使用它从 OBJ 转换为另一种更易于使用的 3D 格式,我也想知道。