Three.js 光线与模型相交

Three.js 光线与模型相交,three.js,autodesk,autodesk-forge,autodesk-viewer,Three.js,Autodesk,Autodesk Forge,Autodesk Viewer,是否可以从摄影机投射光线并知道其是否与模型相交 同样,是否可以通过这种方式计算到交点的距离 我想要这个,这样我就可以通过编程知道墙是有窗的还是平的,如果有窗的话,交叉点的距离会有一个跳跃 绝对是。下面是一个例子,ForgeFader,准确地演示了您的要求: GitHub上的来源: 绝对是这样。下面是一个例子,ForgeFader,准确地演示了您的要求: GitHub上的来源: 是否可以从摄影机投射光线并知道其是否与模型相交? 您可以使用以下几个选项: 如果要与任何内容相交,可以使用查看器内

是否可以从摄影机投射光线并知道其是否与模型相交

同样,是否可以通过这种方式计算到交点的距离


我想要这个,这样我就可以通过编程知道墙是有窗的还是平的,如果有窗的话,交叉点的距离会有一个跳跃

绝对是。下面是一个例子,ForgeFader,准确地演示了您的要求:

GitHub上的来源:


绝对是这样。下面是一个例子,ForgeFader,准确地演示了您的要求:

GitHub上的来源:

是否可以从摄影机投射光线并知道其是否与模型相交? 您可以使用以下几个选项:

如果要与任何内容相交,可以使用查看器内置的api

设posClientCoords=new-THREE.Vector3(x,y,1.0)
让结果=this.viewer.utilities.viewerImpl.hitTestViewport(posClientCoords,false);
如果(结果!==null&&result.fragId>=0){
//给你
}

如果希望对选定的对象进行光线投射,可以使用Three.js raycaster

设vray=new THREE.Vector3(ptarget.x-psource.x,ptarget.y-psource.y,ptarget.z-psource.z)
vray.normalize()
让光线=新的三点光线投射器(P源,vray,0,最大距离)
让intersectResults=ray.intersectObjects(墙网格,真)

Wallmesh是从查看器中获取的代理图形数组

viewer.impl.getRenderProxy(viewer.model,fragId),null,null,null)

同样,是否可以通过这种方式计算到交点的距离? 每个API都将返回命中点(光线和对象之间的交点)

举了一个例子

是否可以从摄影机投射光线并知道其是否与模型相交? 您可以使用以下几个选项:

如果要与任何内容相交,可以使用查看器内置的api

设posClientCoords=new-THREE.Vector3(x,y,1.0)
让结果=this.viewer.utilities.viewerImpl.hitTestViewport(posClientCoords,false);
如果(结果!==null&&result.fragId>=0){
//给你
}

如果希望对选定的对象进行光线投射,可以使用Three.js raycaster

设vray=new THREE.Vector3(ptarget.x-psource.x,ptarget.y-psource.y,ptarget.z-psource.z)
vray.normalize()
让光线=新的三点光线投射器(P源,vray,0,最大距离)
让intersectResults=ray.intersectObjects(墙网格,真)

Wallmesh是从查看器中获取的代理图形数组

viewer.impl.getRenderProxy(viewer.model,fragId),null,null,null)

同样,是否可以通过这种方式计算到交点的距离? 每个API都将返回命中点(光线和对象之间的交点)


发布了一个示例

什么是
posClientCoords
?光线的方向?还有,我怎样才能在不点击节点的情况下获得
viewer.impl.getRenderProxy
的相关fragid?看一看-posClientCoords是画布鼠标位置,hitTest会给你dbId和fragid。什么是
posClientCoords
?光线的方向?还有,我怎样才能在不点击节点的情况下获得
viewer.impl.getRenderProxy
的相关fragid?看一看-posClientCoords是画布鼠标位置,hitTest会给你dbId和fragid。这会在内存中保存模型的所有网格吗?有没有一种不用这样做就能得到距离的方法?这是不是在内存中保存了模型的所有网格?有没有一种不用这样做就能获得距离的方法?