导入超大XNA模型(多边形计数)

时间:2014-07-18 01:00:40

标签: c# xna monogame

我目前正在尝试将一个非常大的模型导入XNA / Monogame,这是一种具有超过80,000,000个顶点的钢结构模型。编写引擎是为了优化该模型以实现可视化,在ModelMesh级别上运行OcTree和View Frustum剔除。

我最近了解到,Model Processor中的默认base.Process操作结合了模型中所有ModelMesh的顶点和索引缓冲区,按照本文中的答案:

Confusion about model's vertexbuffer and indexbuffer

这提出了一个问题,因为此模型超出了最大的VertexBuffer大小67108863.因此,内容处理器甚至不允许我创建xnb文件。

理想情况下,我会将顶点和索引缓冲区拆分为内容处理器中的多个较小缓冲区,但缓冲区本身是在模型处理器的base.Process函数中生成的,之后似乎不可编辑。

我可以使用任何机制来拆分XNA模型的顶点和索引缓冲区吗?

1 个答案:

答案 0 :(得分:1)

我最终解决了这个问题。 XNA模型根本不支持多个顶点和索引缓冲区,因此解决方案是编写一个大型模型自定义内容处理器,它返回一个ModelContent对象数组,而不仅仅是一个。

这可以很容易地调用:

Model[] myModel = Content.Load<Model[]>("myModelFile");

......虽然我需要对我的三角形拾取和绘图程序进行一些更改,但结果却是一个相对简单的解决方案。