Three.js 如何在轨迹球控件(r87)中使用鼠标左键进行透视相机平移?
默认情况下,相机平移使用鼠标右键Three.js 如何在轨迹球控件(r87)中使用鼠标左键进行透视相机平移?,three.js,Three.js,默认情况下,相机平移使用鼠标右键 Control.panSpeed = 1.5; 但我希望它在鼠标左键下工作。如何设置?这需要对轨迹球代码进行简单的修改 如果您查看TrackballControls.js,最开始的部分将详细介绍keycode相关状态机(): 这与进一步向下()的keydown()函数相关: 所以,我还没有机会测试这一点,但您应该能够将第11行中的PAN从2(右键单击的键码)更改为0(左键单击)或您想要的任何其他键码。记住也要更改ROTATE,以避免同时旋转和平移的错误倾向指
Control.panSpeed = 1.5;
但我希望它在鼠标左键下工作。如何设置?这需要对轨迹球代码进行简单的修改 如果您查看TrackballControls.js,最开始的部分将详细介绍keycode相关状态机(): 这与进一步向下()的
keydown()函数相关:
所以,我还没有机会测试这一点,但您应该能够将第11行中的PAN从2(右键单击的键码)更改为0(左键单击)或您想要的任何其他键码。记住也要更改ROTATE,以避免同时旋转和平移的错误倾向指令
编辑:根据@TheJim01的有用更正,实际的点击事件触发实际上发生在脚本第393行的函数mousedown(event)
中。event.button对应于状态机中的相应编号。很抱歉造成混淆。我相信您指的是鼠标向下
事件,而不是按键向下
。将操作状态设置为当前鼠标按钮(\u state=event.button;
)后,会出现相关逻辑。@AquaVitae非常感谢您。它成功了。但我真的想要左键单击的平移和旋转键代码。无论如何都有可能吗?不幸的是,我不知道有什么简单的方法可以做到这一点,除非将这两个状态都设置为0会自动得到想要的结果。您可能需要深入挖掘并复制+粘贴/调整所需的自定义行为@绝对正确,我坚持纠正。拉比,谢谢你的提醒。
THREE.TrackballControls = function ( object, domElement ) {
var _this = this;
var STATE = {NONE: -1, ROTATE: 0, ZOOM: 1, PN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PANE: 4};
this.object = object;
this.domElement = ( domElement !== undefined ) ? domElement : document;
// API
this.enabled = true;
this.screen = { left: 0, top: 0, width: 0, height: 0 };
function keydown( event ) {
if ( _this.enabled === false ) return;
window.removeEventListener( 'keydown', keydown );
_prevState = _state;
if ( _state !== STATE.NONE ) {
return;
} else if ( event.keyCode === _this.keys[ STATE.ROTATE ] && ! _this.noRotate ){
_state = STATE.ROTATE;
} else if ( event.keyCode === _this.keys[ STATE.ROTATE ] && ! _this.noZoom ){
_state = STATE.ZOOM;
} else if ( event.keyCode === _this.keys[ STATE.ROTATE ] && ! _this.noPan ){
_state = STATE.PAN;
}