仅将材质设置为来自 Open Bim 组件库/三个 js 的fragmentMesh 类的一个实例

问题描述 投票:0回答:1

我尝试为特定的fragmentMesh 设置独特的材质。然而,事实证明,fragmentMesh 可以有多个实例,因此材质将应用于其所有实例。

  1. 如何判断我的光线投射 intersect.object 指向哪个实例?

const raycaster =viewer.raycaster;

const intersect: Intersection | null =
  raycaster.castRay([
    ...this.components.meshes,
  ]);
const obj3d = intersect.object;
 
  1. 然后使用该数据将其映射到其各自的网格几何体/bufferGeometry,以便我可以设置绘画材质

问候

three.js ifc
1个回答
0
投票

显然, 库中的 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

© www.soinside.com 2019 - 2024. All rights reserved.