2016-12-15 330 views

回答

1

更改使用mesh.position.set(x, y, z)

我用window.innerWidthwindow.innerHeight到对象移动到屏幕的角落立方体的位置。

这里是一个更新的fiddle与您的盒子在屏幕的左上角。

如果您不喜欢拖动时多维数据集飞行的方式,则不能再使用orbitControls。为了使立方体旋转静态通常情况下,使用此代码(jQuery的要求):

var isDragging = false; 
var previousMousePosition = { 
    x: 0, 
    y: 0 
}; 
$(renderer.domElement).on('mousedown', function(e) { 
    isDragging = true; 
}) 
.on('mousemove', function(e) { 
    //console.log(e); 
    var deltaMove = { 
     x: e.offsetX-previousMousePosition.x, 
     y: e.offsetY-previousMousePosition.y 
    }; 

    if(isDragging) { 

     var deltaRotationQuaternion = new THREE.Quaternion() 
      .setFromEuler(new THREE.Euler(
       toRadians(deltaMove.y * 1), 
       toRadians(deltaMove.x * 1), 
       0, 
       'XYZ' 
      )); 

     mesh.quaternion.multiplyQuaternions(deltaRotationQuaternion, mesh.quaternion); 
    } 

    previousMousePosition = { 
     x: e.offsetX, 
     y: e.offsetY 
    }; 
}); 

$(document).on('mouseup', function(e) { 
    isDragging = false; 
}); 
function toRadians(angle) { 
    return angle * (Math.PI/180); 
} 

function toDegrees(angle) { 
    return angle * (180/Math.PI); 
} 

源出于此代码:使用你的代码https://jsfiddle.net/MadLittleMods/n6u6asza/

例子:https://jsfiddle.net/3eau15pv/3/