gpt4 book ai didi

opengl - 大型 3D 场景流

转载 作者:行者123 更新时间:2023-12-02 06:25:40 25 4
gpt4 key购买 nike

我正在开发适合超大场景显示的 3D 引擎。渲染本身的部分(视锥体剔除、遮挡剔除等),我想知道场景管理的最佳解决方案是什么。

数据以大量 3D 网格的形式给出,它们之间没有关系,所以我认为我无法生成门户......

主要目标是能够在低 RAM (500MB-1GB) 的系统上运行该引擎,并且加载到其中的场景非常大,可以包含数百万个三角形,这导致内存使用非常密集。我现在实际上正在使用一个松散的八叉树,在加载时构建,它在中小型场景中运行良好,但许多场景太大而无法完全装入内存,所以这是我的问题:

您将如何处理动态加载和卸载 block 的场景(最好是无缝地),以及您将根据什么来确定是否应该加载/卸载 block ?如果需要,我可以创建自定义文件格式,因为场景是使用已知 3D 创作工具上的自定义导出器导出的。

重要信息:许多场景由于其构造而无法被有效遮挡。示例:一个非常巨大的管网,因此没有太多遮挡,但元素数量非常多。

最佳答案

我认为最好的解决方案是“解决方案包”,即一组不同的技术。

  • 如果不加载未使用的级别,详细级别 (LOD) 可以减少内存占用。通过使用新旧细节之间的 alpha 混合,可以或多或少无缝地更改它。最简单的 Controller 将使用到相机的网格距离。
  • 当对象上传到 GPU(设备)时释放主机内存(RAM),并显然释放所有未使用的内存(OpenGL 资源也是如此)。 Valgrind 可以帮助您解决这个问题。
  • 使用低质量网格并使用曲面分割来提高视觉质量。
  • 使用 VBO 索引,这应该会减少 VRAM 使用并提高性能
  • 如果可能,不要使用网格,地形可以使用高度图渲染。有些东西可以通过程序生成。
  • 使用凹凸或/和法线贴图。这将提高质量,然后您可以减少顶点数。
  • 将这些“管道”划分为不同的网格。
  • 带有 2D 图像的虚假 3D 网格:冒名顶替者、穹顶......

关于opengl - 大型 3D 场景流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25823729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com