我正在使用this tutorial来修改three.js的OrbitControls函数,使其也可以与移动陀螺仪一起使用。我遵循了它,但它确实有效,但它的表现确实很差。考虑到如果我用鼠标使用OrbitControls,即使使用修改后的版本,也不会出现滞后,并且相机可以平稳移动,这很奇怪。有关说明,请参见this video。我已经在物理移动设备上尝试过此操作,并且发生了相同的问题。我认为关于事件侦听器的某些事情可能没有得到足够频繁的触发,但是当我尝试将控制台日志放入本教程中使用的侦听器回调中时,它的调用频率应该是应该的。发生了什么事?
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 is ok.