我尝试为特定的fragmentMesh 设置独特的材质。然而,事实证明,fragmentMesh 可以有多个实例,因此材质将应用于其所有实例。
const raycaster =viewer.raycaster;
const intersect: Intersection | null =
raycaster.castRay([
...this.components.meshes,
]);
const obj3d = intersect.object;
问候
显然, 库中的 OBC.MaterialManager 类不提供为单个实例设置材质颜色的方法。 https://github.com/ThatOpen/engine_components/blob/main/src/core/MaterialManager/index.ts#L57
事实上,fragmentMesh 是从instancedMesh 类扩展而来的,快速的解决方案是使用纯 Threejs 库: 示例在这里:https://github.com/mrdoob/ Three.js/blob/master/examples/webgl_instancing_raycast.html