Three.js - 将光线从物体发送到相机

Posted

技术标签:

【中文标题】Three.js - 将光线从物体发送到相机【英文标题】:Three.js - sending ray from object to camera 【发布时间】:2017-05-26 12:21:55 【问题描述】:

提前感谢您的帮助。

Three.js Raycaster 类允许将光线从相机发送到对象。我想实现反向操作。想象我们在场景中有一个平面,它代表我们的投影屏幕。我们还有一个要投影的对象(网格)。我试图找到一个顶点将投影在屏幕上的哪个位置。

实际上,对于一个顶点,如果我们将一条射线从顶点投射到相机,我们需要找到它与屏幕平面的交点。请注意,这里的一切都是 3D 的。所以我的屏幕(相机)平面也在 3D 坐标中。

有解决这个问题的建议吗?

【问题讨论】:

【参考方案1】:

我认为您正在寻找的是将 object3d 投影到屏幕位置。 答案在这里:

answer

那么你将拥有带有 x,y 屏幕坐标的 vector2d。

如果您希望该点位于实际的 3d 平面上,则可以从相机向屏幕上的该位置发出一条射线,仅将您位于相机前方的那个平面添加到射线交点,然后获得交点点:

    rayCaster.setFromCamera(vector2d,  camera);
    var aIntersects = rayCaster.intersectObject(planeInFrontOfCamera);
    if (aIntersects.length > 0) 
       var positionOnPlane = aIntersects[0].point.
    

【讨论】:

以上是关于Three.js - 将光线从物体发送到相机的主要内容,如果未能解决你的问题,请参考以下文章

three.js使用gpu选取物体并计算交点位置

在three.js中使用正交相机进行不精确的光线投射

THREE.JS : 带有光线投射器和透视相机的点击事件

针对其中的盒子几何形状进行光线投射(three.js)

关于从入门three.js到做出3d地球这件事(第三篇: 光与影)

Three.js用相机选择对象,没有鼠标