Three.js 工程向:实例化渲染 InstancedMesh 的批量优化

文章目录

一、何时使用 InstancedMesh

当场景里有大量同材质同几何对象(树、路灯、子弹)时,InstancedMesh 可显著减少 draw call。

二、基础结构

javascript 复制代码
const mesh = new THREE.InstancedMesh(geometry, material, count);
for (let i = 0; i < count; i++) {
  matrix.compose(pos[i], quat[i], scale[i]);
  mesh.setMatrixAt(i, matrix);
}
mesh.instanceMatrix.needsUpdate = true;

三、工程要点

  • 预分配实例数,避免频繁重建。
  • 动态实例只更新脏区索引,减少整批更新开销。
  • 结合 frustum culling 分块,避免无效绘制。

四、功能边界

单实例交互、差异化材质较复杂,必要时拆分多个 InstancedMesh。

五、结语

InstancedMesh 的核心收益是"CPU 提交成本下降",适合海量重复对象场景。

相关推荐
李纲明4 小时前
微信小程序 getSystemInfo 提示已废弃、屏幕高度算错胶囊还对不齐?getWindowInfo 和 getDeviceInfo 怎么接才稳
javascript·微信小程序·小程序·小程序开发·devdiy
deli0074 小时前
从一句反馈到一次升级:Mystudy 的自进化实践
前端
FungLeo5 小时前
成为全栈·Vue 管理后台篇·用 fetch 建一层可控的请求内核
前端·javascript·vue.js·http·fetch·formdata·接口封装
用户84298142418105 小时前
ByteJS,让重要的 JavaScript 以字节码运行。
javascript
FungLeo7 小时前
成为全栈·Vue 管理后台篇·Vue Router如何守住多角色后台边界
前端·javascript·vue.js·rbac·vue router·路由守卫·前端权限
FungLeo7 小时前
成为全栈·Vue 管理后台篇·分页只显示第一页:从接口total 定位到前端修复
前端·vue.js·状态模式·分页·naive ui·服务端分页·前端问题排查
ZhengEnCi7 小时前
苹果滑动为什么有「肉感」:橡皮筋越界阻尼与弹簧动画的物理原理
前端
Moment8 小时前
不会后期的我,发现了一个开源胶片神器😍😍😍
前端·后端·开源
L1mbo8 小时前
Lite模式 缓解微信开发者工具卡顿,附 uni-app 实践方案
前端·微信小程序
FungLeo8 小时前
成为全栈·Vue管理后台篇·仪表盘不是几张卡片:组合统计接口与角色视图
前端·javascript·vue.js·rbac·仪表盘·管理后台·tanstack query