- Three.js控制渲染帧率(FPS)
- 如果场景有动画效果,就必须周期性执行.render()更新canvas画布图像,如果场景默认是静态的,没有动画,比如展示一个产品、建筑或机械零件的三维模型,只需要在鼠标旋转缩放三维模型,触发.render()执行即可,在没有发生鼠标事件的时候,可以不执行.render()
- 周期性渲染函数中代码尽量简洁,不要参杂过多业务逻辑
- 适当
减面
,例如绘制方形图时;对于曲面而言,减面过多,可能会影响显示效果,所以减面程度要控制好 - 对于曲面模型,使用
法线贴图
可以在不影响显示质量的情况下有效减少模型面数,法线贴图会通过图片像素值记录模型表面的几何细节,只需要3D美术对模型表面很多几何细节进行减面后,然后导出法线贴图,提供给程序员加载即可。简单地说就是通过法线贴图可以表达三维模型表面的丰富几何细节 - 不同的网格模型如果可以共享几何体或材质,最好采用
共享
的方式,如果两个网格模型无法共享几何体或材质,自然不需要共享,比如两个网格模型的材质颜色不同,这种情况下,一般要分别为网格模型创建一个材质对象 -
多细节层次
:根据场景不同,可以把同一个模型进行分级,比如远距离观看该模型使用1万面数的模型,如果距离更近,需要使用更精细的模型,比如2万面数 - 生成geometry时适当调参;material不同材料适合场景不同,性能也不同
- 可通过requestIdleCallback及deadline.timeRemaining()来合理安排密集渲染,防止页面卡死
网友评论