Threejs大场景优化的资料

https://stackoverflow.com/questions/47807069/three-js-loading-big-obj-file-about-300-mb-will-crash-the-browser-and-take-m

  1. 尽可能减少多重计数。请记住,模型根本不应该过于详细。

  2. 将Obj文件转换为Json和/或为场景中的每个对象创建单独的JSON文件。请记住,geometry是您尝试加载的文件中最重的数据块。因此,如果可能,BufferGeometry为每个文件创建单独的文件并通过它加载BufferGeometryLoader

  3. 在加载所有js和json文件之前,您可以使用一些压缩/解压缩技术。查看OpenCTM压缩。您也可以尝试gzip您的文件并放下它。

  4. 在创建网格的3D建模阶段,合并尽可能多的几何。最简单的方法是识别具有相同/相似材料的所有网格,合并这些几何图形,并为这些几何图形指定相同的材质。您拥有的几何数量越少,渲染管道中绘制调用的次数就越少。因此,您的表现将会提高。

  5. 您可以跟踪您的drawcalls使用情况renderer.info

  6. 保持纹理文件大小较低的分辨率。我一般建议少于1K

  7. 材料性能成本是这样的MeshBasicMaterialMeshLambertMaterialMeshPhongMaterialMeshStandardMaterialMeshPhysicalMaterial。因此,在将材质指定给几何体时要小心。Threejs doc清楚地说明了每种材料的所有特征。因此,如果您知道对象不需要材料的某些属性,则回退到更便宜的材质

  8. 使用normalMaps伪造的goemetries。这将减少您vertices所需的数量。

  9. 如果您的场景是静态使用aoMap并且LightMap在您的场景中消除了对光源的需求及其计算成本。

  10. 如果场景是静态的,请停止requestAnimationFrame并仅在需要时渲染。例。如果您使用的是orbitcontrol.js,请onChange在触发用户活动时使用方法进行渲染。

  11. 使用Chrome扩展程序(如Threejs Inspector和WebGL Inspector)进行调试

  12. 如果动态删除场景中的任何内容,请确保正确处理数据

  13. 300 MB的文件非常大。确保将其减少到30 mb或更低,理想情况下,小于10 mb以获得最佳体验

https://blog.csdn.net/ItChuangyi/article/details/85242427(Three.js 从内存删除scene中remove的模型数据,释放内存)

https://zhidao.baidu.com/question/920590249979771619.html(threejs需要加载大量场景模型,需要时时清理无用模型出场景同时能够显著降低内存消耗)

https://threejs.org/docs/index.html#api/en/math/Frustum(视锥)

 

https://blog.csdn.net/niuge8905/article/details/80898522(Webgl基于Three.js的开发——利用Frustum来判断相交或者包含)

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
three.js是一个用于在Web浏览器上创建和显示3D图形的JavaScript库。在处理大场景时,性能优化是非常重要的,以下是一些three.js大场景性能优化的方法: 1. 模型合并:将场景中的相关模型合并为一个单独的模型,可以减少绘制调用的次数,从而提高性能。 2. 纹理压缩:通过使用压缩格式的纹理,如WebP或DDS,可以减少纹理的大小和加载时间,提高渲染性能。 3. 层级着色器:使用层级着色器技术,将复杂的3D模型分层渲染,只绘制可见的部分,隐藏掉被遮挡的部分,从而降低渲染负载。 4. LOD(细节层次):使用LOD技术,根据相机距离来自动切换不同细节层次的模型,以确保远处的物体具有较低的多边形数量,提高性能。 5. 遮挡剔除:使用遮挡剔除技术,可根据相机位置自动计算隐藏在其他物体后面的物体,避免不必要的渲染。 6. 光照优化:减少光源数量和复杂度,使用更简单的光照模型,如平行光或环境光,可以提高渲染性能。 7. 离屏渲染:使用离屏渲染技术,将不经常变化的场景渲染到一个纹理中,然后将该纹理用作场景的背景,避免重复渲染,提高性能。 8. WebGL扩展:利用WebGL的扩展功能,如VAO(顶点数组对象)和instancing(实例化)等,可以优化渲染效率和内存使用。 总之,three.js大场景性能优化的关键在于减少渲染调用次数、降低多边形数量、使用优化的纹理和光照,并合理利用WebGL的扩展功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值