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

本文关键字:多边形 模型 XNA 导入 | 更新日期: 2023-09-27 18:13:38

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

我最近才知道,默认的基础。模型处理器中的过程操作结合了模型中所有ModelMesh的顶点和索引缓冲区,根据这篇文章的答案:

关于模型's vertexbuffer和indexbuffer的混淆

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

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

是否有任何机制,我可以使用分裂的XNA模型的顶点和索引缓冲区?

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

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

这可以很容易地调用,像这样:

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

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