将相机位置移动限制在特定3D对象的区域

时间:2017-02-18 21:43:03

标签: three.js aframe webvr

我正在尝试将相机位置移动限制为由3D对象/对象子项定义的特定区域。例如,如果我在海洋上有一个走道对象,我只希望我的用户能够在该走道上向前和向后移动摄像机。类似于Unity中的第一人称控制器导航网格,但没有AI方面。

我会喜欢基于AFrame的解决方案,但如果有三种解决方案,我不介意编写自定义组件。

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以创建一个THREE.Box3来获取3D对象/对象子节点的边界:

 var box = new THREE.Box3();
 box.setFromObject(yourObject);

在第一人称控制器内,您可以检查相机是否超出范围:

if(camera.position.x > box.max.x){
    camera.position.x = box.max.x;
}

if(camera.position.x < box.min.x){
    camera.position.x = box.max.x;
}

if(camera.position.z > box.max.z){
    camera.position.z = box.max.z;
}

if(camera.position.z < box.min.z){
    camera.position.z = box.max.z;
}

我希望它会有所帮助