如何使用InstancedBufferGeometry在ThreeJS中进行光线投射?

时间:2020-02-05 16:05:59

标签: three.js

an example to show how to raycast using BufferGeometry,但是如何使用InstancedBufferGeometry进行光线投射?

例如,向此演示添加射线广播功能吗? https://threejs.org/examples/?q=instancing#webgl_buffergeometry_instancing

1 个答案:

答案 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