是否有可能从相机中投射光线,并知道它是否与模型相交?
在同样的情况下,是否可以用这种方式计算到交叉点的距离?
我想要这样做,这样我就可以通过编程知道墙是否有一个窗口,或者它是平的,如果它有一个窗口,那么就会有一个跳跃的距离的交叉口。
发布于 2017-04-19 13:28:02
是否有可能从相机中投射光线,并知道它是否与模型相交?您可以使用以下几个选项:
如果要交叉任何内容,可以使用内置的api let posClientCoords = new THREE.Vector3(x, y, 1.0) let result =this.viewer.utilities.viewerImpl.hitTestViewport(posClientCoords , false); if ( result !== null && result.fragId >= 0 ) { // here you go }查看器。
如果您喜欢射线投射所选的对象,则可以使用Three.js raycaster let vray =new THREE.Vector3( ptarget.x - psource.x, ptarget.y - psource.y, ptarget.z - psource.z ) vray.normalize () let ray =new THREE.Raycaster( psource, vray, 0, max_dist ) let intersectResults = ray.intersectObjects ( wallMeshes, true )。
wallMeshes是从查看器viewer.impl.getRenderProxy(viewer.model, fragId), null, null, null )获得的代理图形数组。
在同样的情况下,是否可以用这种方式计算到交叉点的距离?每个API都将返回命中点(射线和对象之间的交点)。
一个例子是发布的这里
发布于 2017-04-19 13:16:41
绝对是。下面是一个例子,ForgeFader,演示了您所要求的内容:
http://thebuildingcoder.typepad.com/blog/2017/04/work-half-aks-opener-rvtfader-and-forgefader.html#9
GitHub上的消息来源:
https://stackoverflow.com/questions/43495669
复制相似问题