threejs 如何控制模型的移动范围,即对摄像头的控制

这个方法只是给一个简单的思路,具体的实现需要根据实际情况实现,总的来说就是需要存在一个基准点。

1.规划处模型的限制区间范围,这个可以通过方法计算也可以写死


      let box = {
        min: {
          x: -10943.613394093247,
          z: -14327.533236958321,
        },
        max: {
          z: 4282.623649449902,
          x: 7992.161614671444,
        },
      };

当然也可以使用第二种方法,通过计算两点的距离的方法来实现,当操作距离后执行controls.reset()方法

 distanceBetween(pointstart, positionEnd) {
      let pos1 = new THREE.Vector3(pointstart.x, pointstart.y, pointstart.z);
      let pos2 = new THREE.Vector3(positionEnd.x, positionEnd.y, positionEnd.z);
      return pos1.distanceTo(pos2);
    },
  1. 在controls.addEventListener(“change”, (event) => {})中调用对应计算的方法
  2. 限制移动的方法

camera 摄像头
controls 控制器
controls.reset(); 重置控制器方法
controls.saveState(); 保存控制器当前属性

   if (camera.position.x > box.max.x) {
        controls.reset();
      } else if (camera.position.x < box.min.x) {
        controls.reset();
      } else if (camera.position.z > box.max.z) {
        controls.reset();
      } else if (camera.position.z < box.min.z) {
        controls.reset();
      } else {
        controls.saveState();
      }

方法2

if (distance > 16000) {
        //超过这个范围,摄像头的值将会被写死
        console.log("超出边界");
        controls.reset();
      } else {
        // 当没有超过这个值时,将对应的坐标信息保存
        controls.saveState();
      }
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圣京都

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值