Я хочу иметь возможность вращать мой объект, когда я нажимаю клавишу "x" с помощью Matrix4. Мой код ниже работает, однако, чем дольше я держу клавишу «х», объект начинает вращаться гораздо быстрее, чем начать. Как я могу это исправить.
var r1 = 1, r5 = 1, r9 = 1, r2 = 0, r3 = 0, r4 = 0, r6 = 0, r7 = 0, r8 = 0;
var Rx = 0, Ry = 0, Rz = 0;
var rotation = new THREE.Matrix4();
function keyDown(event){
if(event.key == 'x'){
mesh.matrixAutoUpdate = false;
Rx += Math.PI/180 //1 degree per key press
r5 = Math.cos(Rx);
r6 = -Math.sin(Rx);
r8 = Math.sin(Rx);
r9 = Math.cos(Rx);
rotation.set( r1, r2, r3, 0,
r4, r5, r6, 0,
r7, r8, r9, 0,
0, 0, 0, 1 );
mesh.applyMatrix4(rotation);
}
if(event.key == 'y'){
}
if(event.key == 'z'){
}
}
let loader = new THREE.STLLoader();
var material = new THREE.MeshLambertMaterial({color: 0x818181});
loader.load('STL/test.stl', function (geometry) {
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
});
window.addEventListener("keypress", keyDown);