有an example to show how to raycast using BufferGeometry,但是如何使用InstancedBufferGeometry进行光线投射?
例如,向此演示添加射线广播功能吗? https://threejs.org/examples/?q=instancing#webgl_buffergeometry_instancing
答案 0 :(得分:3)
从未实现对带有InstancedBufferGeometry
的网格的光线投射支持。但是,您可以使用与R109
一起添加的新InstancedMesh类,该类确实支持光线投射。请查看以下示例,以了解此功能的实际作用:
https://threejs.org/examples/webgl_instancing_raycast
重要的光线投射代码部分如下所示:
var intersection = raycaster.intersectObject( mesh ); // mesh is type of InstancedMesh
if ( intersection.length > 0 ) {
var instanceId = intersection[ 0 ].instanceId;
mesh.getMatrixAt( instanceId, instanceMatrix ); // get local transformation matrix of the instance
matrix.multiplyMatrices( instanceMatrix, rotationMatrix ); // modify it
mesh.setMatrixAt( instanceId, matrix ); // write it back
mesh.instanceMatrix.needsUpdate = true;
}
three.js R113