如何解决如何环绕/缩放摄像机以进行贴花/光线投射?
我有This Example(@ Mugen87的积分)-如您所见,将贴花添加到Decals数组中,我添加了一个从贴花创建列表的函数(添加贴花,您将看到它出现在左上角)-我想知道在选择一个时将照相机指向指针的确切位置的方法是什么,所以假设我已经在头部的后部添加贴花了-我想回到它无需手动旋转-因此我可以单击它的名称-并获得正确的位置。 我猜想这还涉及保存交叉点,然后设置相机位置……类似这样的东西:
click on decal name function :
//intersectionaArr - store intersections
camera.position.set(intersectionaArr[index of the decal].normal);
camera.lookAt(intersectionaArr[index of the decal].point);
camera.updateProjectionMatrix ();
解决方法
由于您已经有了交点的位置以及各个表面法线的方向,因此可以执行以下操作来计算相机的位置:
const normal = new THREE.Vector3( 0,1 ).applyEuler( orientation );
const camPosition = new THREE.Vector3().copy( position ).add( normal.multiplyScalar( 50 ) );
因此,想法是通过从相交点开始并沿着曲面法线移动一定距离来计算新的相机位置。现在是50个世界单位。
然后可以将相机位置和交点存储在list元素中,并在事件侦听器中使用它来更改相机位置和方向。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。