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

C# 导入超大型XNA模型(多边形计数),c#,xna,monogame,C#,Xna,Monogame,我目前正在尝试将一个非常大的模型导入XNA/Monogame,这是一个具有超过8000000个顶点的钢结构模型。编写该引擎是为了优化该模型的可视化效果,在ModelMesh级别上运行八叉树和视锥剔除 我最近了解到,模型处理器中的默认base.Process操作结合了模型中所有ModelMesh的顶点和索引缓冲区,如下所示: 这带来了一个问题,因为此模型超过了最大VertexBuffer大小67108863。因此,内容处理器甚至不允许我创建xnb文件 理想情况下,我会在内容处理器中将顶点缓冲区和

我目前正在尝试将一个非常大的模型导入XNA/Monogame,这是一个具有超过8000000个顶点的钢结构模型。编写该引擎是为了优化该模型的可视化效果,在ModelMesh级别上运行八叉树和视锥剔除

我最近了解到,模型处理器中的默认base.Process操作结合了模型中所有ModelMesh的顶点和索引缓冲区,如下所示:

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

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


有什么机制可以用来分割XNA模型的顶点和索引缓冲区吗?

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

这可以很容易地称为:

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

。。。尽管这需要对我的三角形拾取和绘制例程进行一些更改,但结果证明这是一个相对容易实现的解决方案。

Erm。。为什么需要这么大的模型?最好将模型导入到3d建模应用程序(如3ds或maya)中,并使用自动顶点缩减功能。您是如何实现自定义内容处理器以返回ModelContent数组作为实现覆盖的处理方法的,只返回一个ModelContent。你能解释一下吗?