babylonjs 分部加载模型_Babylonjs 在场景中优化处于实体墙后面的大量模型

本文介绍了在Babylon.js中如何优化场景中被实体墙遮挡的大量模型,以避免掉帧问题。通过AssetContainer管理模型,使用removeAllFromScene()方法移除视线外的模型,可以显著提高帧率。实验结果显示,启用不同的隐藏模型策略,如设置isVisible、renderingGroupId、occlusionQuery等,性能表现各异,而removeAllFromScene()方法表现最佳,达到5600 FPS。文章提供了一个测试代码链接以供参考。
摘要由CSDN通过智能技术生成

Babylonjs 的摄像机转向时,如果镜头内有一面墙,墙不透明,墙后面一堆资源,比如花草树木无数个,会掉帧严重。

这时候镜头内虽然看着只有墙,但是BJS的引擎把墙后面的模型也渲染了。

例如墙后面有1000个球体,那么就可以隐藏这些球体模型。(表示1000个不同模型,否则同模型可用instance优化)

先说总结,可以使用AssetContainer进行资源管理,removeAllFromScene后,场景内totals总模型数量就下降了,帧率就提高。

测试用例截图和分析如下:

1.墙后面有1000个球,顶视图“看不到”这些球,但是绝对帧率和前视图一样,只有118帧率。

inspector也提示active meshes为1002,说明镜头内所有模型都被渲染了,无论是否只看到一面墙。

2.如果镜头内的1000个球体模型不加载,那么帧率可高达5800帧,所以目的为通过隐藏墙后“看不到”的模型,提高帧率。

3.隐藏模型方法 :mesh.isVisible = false,帧率1300,有成效,但是距离5800还太远,说明引擎是通过计算后渲染这些模型消失的。

4.隐藏方法:mesh.renderingGroupId=10,判断和camera的renderingGroupId

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值