Я собираюсь использовать 'raycaster', чтобы выбрать один из 'объектов', чтобы увеличить - PullRequest
0 голосов
/ 25 февраля 2020

Я собираюсь использовать 'raycaster', чтобы выбрать один из 'объектов' для увеличения, но когда камера перемещается к объекту, она наклоняется вместо того, чтобы идти прямо. Теперь, как вы go по диагонали, когда она наклоняется к координатной точке?

Вот мой код:

if(mouseup && (selectobject!==undefined ||selectobject!==null)) {
  //Calculate distance to camera and selectobjectca
  var distance =
    Math.sqrt(
      (
        (selectobject.point.x-camera.position.x) * (selectobject.point.x-camera.position.x)
      ) +
      (
        (selectobject.point.y-camera.position.y) * (selectobject.point.y-camera.position.y)
      ) +
      (
        (selectobject.point.z-camera.position.z) * (selectobject.point.z-camera.position.z)
      )
    )

    if(distance>100) {
      camera.lookAt(selectobject.point)
      console.log('camera.position ',camera.position.x)
      if(  camera.position.x < selectobject.point.x &&
           Math.abs(selectobject.point.x-camera.position.x) > 50) {
        camera.position.x += xratio
      } else if(camera.position.x < selectobject.point.x &&
                Math.abs(selectobject.point.x-camera.position.x) > 50) {
        camera.position.x -= xratio
      }
      if(  camera.position.y < selectobject.point.y &&
           Math.abs(selectobject.point.y-camera.position.y) > 50) {
        camera.position.y+=yratio
      } else if (camera.position.y > selectobject.point.y &&
                 Math.abs(selectobject.point.y-camera.position.y) > 50) {
        camera.position.y-=yratio
      }
      if(  camera.position.z<selectobject.point.z &&
           Math.abs(selectobject.point.z-camera.position.z) > 50) {
        camera.position.z+=zratio
      } else if(camera.position.z>selectobject.point.z &&
                Math.abs(selectobject.point.z-camera.position.z) > 50) {
        camera.position.z-=zratio
      }
      camera.updateProjectionMatrix();
    } else {
      controls.update()
      mouseup = false
    }
  } else {
    mouseup = false
}

handdrawing

...