Matrix 为什么这个立方体不绕自己的轴旋转?
我有一个立方体,我想通过键盘输入在3D空间中绕着它自己的轴旋转。立方体仍在围绕世界轴旋转 这是我的密码:Matrix 为什么这个立方体不绕自己的轴旋转?,matrix,rotation,three.js,Matrix,Rotation,Three.js,我有一个立方体,我想通过键盘输入在3D空间中绕着它自己的轴旋转。立方体仍在围绕世界轴旋转 这是我的密码: var rotation_matrix_y, rotation_matrix_x, rotation_matrix_z; var geometry = new THREE.CubeGeometry(1,1,1); var material = new THREE.MeshBasicMaterial({color: 0x00ff00, wireframe: true}); var cube
var rotation_matrix_y, rotation_matrix_x, rotation_matrix_z;
var geometry = new THREE.CubeGeometry(1,1,1);
var material = new THREE.MeshBasicMaterial({color: 0x00ff00, wireframe: true});
var cube = new THREE.Mesh(geometry, material);
var axisHelper = new THREE.AxisHelper( 5 );
cube.add( axisHelper );
scene.add(cube);
cube.rotation.set(0, 0, 0);
cube.matrix.makeRotationFromEuler(cube.rotation);
var render = function () {
document.addEventListener("keydown", onKeyDown, false);
function onKeyDown(e) {
// W - up
if (e.keyCode == 87) {
rotation_matrix_x = new THREE.Matrix4().makeRotationX(.0001);
cube.applyMatrix(rotation_matrix_x);
}
// S - down
if (e.keyCode == 83) {
rotation_matrix_x = new THREE.Matrix4().makeRotationX(-0.0001);
cube.applyMatrix(rotation_matrix_x);
}
// D - right
if (e.keyCode == 68) {
rotation_matrix_y = new THREE.Matrix4().makeRotationY(-0.0001);
cube.applyMatrix(rotation_matrix_y);
}
// A - left
if (e.keyCode == 65) {
rotation_matrix_y = new THREE.Matrix4().makeRotationY(0.0001);
cube.applyMatrix(rotation_matrix_y);
}
requestAnimationFrame(render);
stats.update();
renderer.render(scene, camera);
};
有两个问题与此类似,但它们似乎都过时了,有些方法已被弃用。一种简单的方法可以在对象自身的x轴上旋转对象,如下所示:
object.rotateX( radians );
还有object.rotateY(弧度)代码>和对象旋转(弧度)代码>
three.js r.66Trycube.rotateX(0.01)代码>或<代码>立方体旋转(-0.01)代码>这些方法在矩阵上可用,但也已被弃用并删除。您是否尝试了我的建议?您正在使用three.js r.66吗?抱歉,当我将它们应用到多维数据集本身时,什么都没有发生。当我在矩阵上调用它时,收到了弃用警告。我用的是r.66。我应该调用其他方法来应用rotateX/Y吗?我在测试时添加了以下行,这导致您的建议被打断:cube.rotation.setFromRotationMatrix(cube.matrix);请添加您最初的建议作为答案,我会将其标记为已解决。非常感谢。