Ориентация устройства запаздывает при добавлении в three.js OrbitControls
Я использую это руководство для изменения функции OrbitControls в Three.js, чтобы она также работала с мобильными гироскопами. Я следил за этим, и он работает, но он очень сильно отстает. Это странно, если учесть, что если я использую OrbitControls с мышью, даже с измененной версией, задержки нет, и камера движется плавно. Смотрите это видео для уточнения. Я пробовал это на физическом мобильном устройстве, и возникает та же проблема. Я подумал, что, возможно, что-то в слушателе событий вызывается недостаточно часто, но когда я попытался поместить журналы консоли в функцию обратного вызова слушателя, используемую в учебнике, он вызывается так же часто, как и должно быть. Что здесь происходит?
function onDeviceOrientationChangeEvent( event ) {
scope.deviceOrientation = event;
console.log(event);
// ^ this is being called much more frequently than the camera is being updated
}
function onScreenOrientationChangeEvent( event ) {
scope.screenOrientation = window.orientation || 0;
}
window.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false );
window.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false );
Модифицированный код для OrbitControls слишком длинный, чтобы вставить его здесь, поэтому я надеюсь, что pastebin в порядке.