instancedMesh
instancedMesh
在 TSL 中创建到 JavaScript 中 `THREE.InstancedMesh` 对象的直接引用,以方便地访问其内建的实例变换矩阵 (`instanceMatrix`) 和颜色 (`instanceColor`)。
核心优势
它将 Three.js 的内部实现(如 'instanceMatrix' 的命名)完全抽象化,提供了类型安全、语义清晰的接口,极大地提高了代码的可读性、健壮性和可维护性。
常见用途
物理引擎驱动的模拟(实时更新实例矩阵)
大规模静态场景渲染(如森林、建筑群)
动态修改单个实例的颜色(通过 `setColorAt`)
数据可视化(将数据映射为实例的姿态)
如何调整
调整效果完全通过在 JavaScript 中操作传入的 InstancedMesh 对象实现。通过调用 `myMesh.setMatrixAt(index, matrix)` 或 `myMesh.setColorAt(index, color)`,并随后设置 `myMesh.instanceMatrix.needsUpdate = true`,可以实时改变单个实例的位置、旋转、缩放或颜色。
代码示例
1// 在顶点着色器中应用实例独有的变换矩阵
2const finalModelView = modelViewMatrix.mul( instancedMesh( myMesh ).instanceMatrix );
3
4// 在片元着色器中获取实例独有的颜色
5const instanceColor = instancedMesh( myMesh ).color;