2016-08-25 8 views
4

В настоящее время я работаю над проектом THREE.js. Если вы используете масштабирование управления трекболом, оно масштабируется относительно центра модели. Но я хочу увеличить масштаб в соответствии с положением курсора с колесом мыши. Любой, кто знаком, пожалуйста, помогите мне в этом. Спасибо заранее.масштабирование в зависимости от положения курсора в колесико мыши

+0

http://stackoverflow.com/questions/5613718/click-to-zoom-in-webgl – gaitat

+0

Спасибо @gaitat для справки, но вы можете вести меня с three.js кодом. –

+0

Этого я не искал. –

ответ

1

В mousewheel добавьте этот код, который поможет вам в масштабировании в зависимости от положения курсора, а не относительно модели.

Если вы используете элементы управления трекболом, вы можете использовать его для панорамирования и поворота. Таким образом, элементы управления трекболом включены в ложное в колесико мыши.

renderer.domElement.addEventListener('mousewheel', 
      function (e) { 
       mousewheel(e); 
         }, 
      false); 


    function mousewheel(event) { 
      trackBallControls.noZoom = true; 
      event.preventDefault(); 
      var factor = 50; 
      var mX = (event.clientX/jQuery(container).width()) * 2 - 1; 
      var mY = -(event.clientY/jQuery(container).height()) * 2 + 1; 
      var vector = new THREE.Vector3(mX, mY, 0.5); 
      //console.log(vector); 
      vector.unproject(camera); 
      vector.sub(camera.position); 
      if (event.deltaY < 0) { 
       camera.position.addVectors(camera.position, 
      vector.setLength(factor)); 
       trackBallControls.target.addVectors(trackBallControls.target, 
      vector.setLength(factor)); 
       camera.updateProjectionMatrix(); 
      } else { 
       camera.position.subVectors(camera.position, 
       vector.setLength(factor)); 
       trackBallControls.target.subVectors(trackBallControls.target, 
       vector.setLength(factor)); 
       camera.updateProjectionMatrix(); 
      } 
     }