Zoom to object in ThreeJS

前端 未结 6 1447
伪装坚强ぢ
伪装坚强ぢ 2020-12-10 09:08

Where can I change the zoom direction in three.js? I would like to zoom in the direction of the mouse cursor but I don\'t get where you can change the zoom target.

6条回答
  •  臣服心动
    2020-12-10 09:31

    So I recently ran into a similar problem, but I need the zoom to apply in a broader space. I've taken the code presented by Niekes in his solution, and come up with the following:

    container.on('mousewheel', function ( ev ){
    
            var factor = 10;
    
            var WIDTH = window.innerWidth;
            var HEIGHT = window.innerHeight;
    
            var mX = ( ev.clientX / WIDTH ) * 2 - 1;
            var mY = - ( ev.clientY / HEIGHT ) * 2 + 1;
    
            var vector = new THREE.Vector3(mX, mY, 1 );
            projector.unprojectVector( vector, camera );
            vector.sub( camera.position ).normalize();
    
            if( ev.originalEvent.deltaY < 0 ){
                camera.position.x += vector.x * factor;
                camera.position.y += vector.y * factor;
                camera.position.z += vector.z * factor;
                controls.target.x += vector.x * factor;
                controls.target.y += vector.y * factor;
                controls.target.z += vector.z * factor;
            } else{
                camera.position.x -= vector.x * factor;
                camera.position.y -= vector.y * factor;
                camera.position.z -= vector.z * factor;
                controls.target.x -= vector.x * factor;
                controls.target.y -= vector.y * factor;
                controls.target.z -= vector.z * factor;
            }
    });
    

    Its not pretty, but is at least functional. Improvements are welcome :)

提交回复
热议问题