一种大规模场景优化的三维模型分帧生成方法与流程
本发明涉及三维模型生成领域,具体公开了一种大规模场景优化的三维模型分帧生成方法。
背景技术:
1、在数字孪生城市、城市级三维编辑器与实时渲染引擎中,常需要基于矢量数据批量生成建筑、道路、水体等三维模型。城市级矢量数据通常包含建筑轮廓、多部件面、道路中心线或面、水体面等;将其转换为实时引擎可用的资产,需要经过坐标转换、面填充三角化、侧墙拉伸、贴图与材质分配等处理,并在最终场景中保证可交互与高帧率。
2、然而,在数据规模大的情况下,基于矢量数据批量生成三维模型时常遇到数据规模大、生成耗时长、运行帧率低的性能瓶颈,主要体现在:生成阶段卡顿,一次性生成上万建筑会阻塞主线程,编辑器无响应或运行时掉帧严重;渲染阶段绘制调用过高,大量离散网格与多材质对象导致渲染提交开销巨大;合并策略不合理,直接全量合并会导致内存峰值过高、网格索引溢出或材质丢失;可视效果与性能难以兼得,为了性能而降低几何或贴图质量会造成视觉损失,而维持高质量则难以满足实时需求。
3、现有的实现方式主要包括以下几类:一次性全量生成,将所有要素在单帧内生成网格并实例化对象,速度快但会造成卡顿甚至崩溃;仅分帧而不合并,通过协程分帧生成避免卡顿,但生成后仍为大量小网格对象,绘制调用高;粗粒度全合并,将所有网格合并成一个大网格,绘制调用低但不利于按材质或区域管理,且易触发索引溢出与内存峰值问题;离线烘焙,将生成结果离线导出为模型文件后再导入,运行效率高但无法快速响应数据变更,编辑体验差。
4、上述现有技术缺乏分帧生成、批量合并和按材质分组的组合策略,难以同时优化生成体验与运行帧率;合并网格时未考虑多材质与子网格保持,导致材质错乱或丢失;未启用32位索引,导致顶点数超过65535时网格不可用;合并粒度不可控,难以兼顾内存、剔除、碰撞与编辑需求。
5、有鉴于此,本发明提供一种大规模场景优化的三维模型分帧生成方法,结合分帧生成与批量mesh合并策略,在保证视觉效果的同时解决大规模城市场景构建的性能瓶颈,并为建筑分布算法、程序化建模与pbr贴图提供可复用、可扩展的工程化实现路径。
技术实现思路
1、本发明的目的在于提供一种大规模场景优化的三维模型分帧生成方法,解决的问题:在保证生成过程中界面与渲染稳定的同时,按材质分组批量合并,以显著降低绘制调用,通过分批阈值与32位索引避免网格溢出与内存峰值,从而解决大规模场景构建的性能瓶颈;具体方案如下:
2、一种大规模场景优化的三维模型分帧生成方法,包括:
3、步骤1:读取矢量几何数据和属性数据,解析得到要素集合;
4、步骤2:将所述要素集合中各要素的坐标转换至三维引擎坐标系,得到引擎坐标系下的要素;
5、步骤3:按帧对引擎坐标系下的要素进行程序化建模,为每个要素生成携带材质的临时网格对象并加入合并队列;当本帧累计处理的要素达到预设的分帧阈值时暂停本帧处理,并在下一帧继续处理,直至全部要素处理完毕;
6、步骤4:当所述合并队列中临时网格对象的数量达到分批阈值时,触发分批合并;所述分批合并包括:第一阶段按材质对所述合并队列中的临时网格对象分组,对每一材质组内的网格分别合并,得到该材质对应的中间网格;第二阶段将各所述中间网格作为独立子网格合并为最终网格,保留多材质结构,得到合并结果对象,并清空所述合并队列;
7、步骤5:待全部要素处理完毕后,对所述合并队列中剩余不足分批阈值个的临时网格对象再次执行所述分批合并,并将各所述合并结果对象作为支持分块管理的场景资产输出。
8、进一步的,所述矢量几何数据为shp几何数据;
9、所述属性数据为dbf属性表;
10、所述要素集合包括多类要素,所述多类要素的类型包括建筑、道路与水体,并按要素类型将要素分别送入对应的生成器。
11、进一步的,所述分帧阈值包括每帧要素数量阈值和每帧时间预算;
12、在按帧处理时,当本帧累计处理的要素数量达到所述每帧要素数量阈值或本帧累计耗时达到所述每帧时间预算时,暂停本帧处理。
13、进一步的,所述程序化建模包括:
14、对要素的轮廓面进行填充三角化,并沿高度方向拉伸生成墙体,得到包括所述墙体的多个子网格的所述临时网格对象;所述墙体包括下部墙体、上部墙体、屋顶和女儿墙。
15、进一步的,所述步骤3还包括为所述临时网格对象生成携带材质,包括:
16、基于物理渲染的材质,根据建筑高度选择对应的材质集合,为所述临时网格对象的各子网格分别绑定对应材质。
17、进一步的,所述步骤3还包括按携带材质对所述合并队列中的临时网格对象分组,包括:
18、将各临时网格对象的子网格按其绑定的材质映射为合并实例,收集得到各材质对应的合并实例列表,并以所述合并实例列表作为所述第一阶段合并的输入。
19、进一步的,所述第一阶段的合并为:
20、对材质组内的网格执行扁平化合并,得到仅含单一子网格的所述中间网格;
21、所述第二阶段的合并为:
22、将各所述中间网格作为独立子网格进行不扁平化合并,使所述最终网格的子网格数量等于该批实际出现的材质数量,并按子网格顺序为所述最终网格赋值材质数组。
23、进一步的,所述步骤4,还包括:
24、在执行所述分批合并之前,将网格的索引格式设置为32位索引;
25、在合并完成后校验所述最终网格的顶点数量与三角形完整性。
26、进一步的,所述得到合并结果对象,包括:
27、为所述合并结果对象挂载渲染器和碰撞体,并将其标记为静态对象;
28、所述清空所述合并队列包括:
29、销毁或回收本批的临时网格对象。
30、进一步的,所述作为支持分块管理的场景资产输出,包括:
31、将各所述合并结果对象按其所属批次分块组织并输出为静态场景资产,各分块能够独立地进行剔除、碰撞检测和编辑。
32、本发明具有如下优点和有益效果:
33、本发明的生成过程更平滑,分帧策略显著降低卡顿,提升了编辑器与运行时的交互体验。
34、本发明的运行性能更高,按材质分组合并减少绘制调用(drawcall),保留多材质子网格,兼顾性能与视觉效果。
35、本发明的稳定性更强,分批合并与32位索引可以避免网格溢出与内存峰值风险,更适用于城市级数据规模。
36、本发明的工程可维护性更好,合并结果按块输出便于管理、剔除与后续编辑,可与建筑分布算法、程序化建模、基于物理渲染的贴图系统协同扩展。
1.一种大规模场景优化的三维模型分帧生成方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述矢量几何数据为shp几何数据;
3.根据权利要求1所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述分帧阈值包括每帧要素数量阈值和每帧时间预算;
4.根据权利要求1所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述程序化建模包括:
5.根据权利要求4所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述步骤3还包括为所述临时网格对象生成携带材质,包括:
6.根据权利要求1所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述步骤3还包括按携带材质对所述合并队列中的临时网格对象分组,包括:
7.根据权利要求1所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述第一阶段的合并为:
8.根据权利要求1所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述步骤4,还包括:
9.根据权利要求1所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述得到合并结果对象,包括:
10.根据权利要求1所述的大规模场景优化的三维模型分帧生成方法,其特征在于,所述作为支持分块管理的场景资产输出,包括:
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com