首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Three.js & OrbitControls.js -我可以更改输入配置吗?

Three.js & OrbitControls.js -我可以更改输入配置吗?
EN

Stack Overflow用户
提问于 2014-10-03 17:38:32
回答 4查看 5.5K关注 0票数 6

我正在编写一个使用Three.js的简单OrbitControls.js演示。目前,鼠标左键运行,鼠标右键平盘,鼠标中间按钮/滚轮娃娃(缩放)。但我想交换轨道和平移,使它们分别由鼠标右键和鼠标左键控制。是否有可更改此功能的配置设置?或者我必须深入研究代码才能改变这一点吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-07-20 10:10:24

到现在为止,您可以非常容易地配置鼠标控件。只需获取Control对象,然后更改鼠标按钮配置,如下所示:

代码语言:javascript
运行
复制
this._controls = new OrbitControls(world._engine._camera, world._container);
// Mouse buttons
this._controls.mouseButtons = { ORBIT: THREE.MOUSE.RIGHT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.LEFT };
票数 5
EN

Stack Overflow用户

发布于 2014-10-03 17:49:32

您需要深入研究代码;目前还没有配置选项。幸运的是,这是一个非常简单的更改;您只需要更新onMouseDown函数并更改检查event.button的条件

代码语言:javascript
运行
复制
// you could change this to `event.button == 1` if you wanted the 
/// right mouse button to rotate, and so on...
if ( event.button === 0 ) {
    if ( scope.noRotate === true ) return;

    state = STATE.ROTATE;

    rotateStart.set( event.clientX, event.clientY );

} else if ( event.button === 1 ) {
    if ( scope.noZoom === true ) return;

    state = STATE.DOLLY;

    dollyStart.set( event.clientX, event.clientY );

} else if ( event.button === 2 ) {
    if ( scope.noPan === true ) return;

    state = STATE.PAN;

    panStart.set( event.clientX, event.clientY );

}

https://github.com/mrdoob/three.js/blob/master/examples/js/controls/OrbitControls.js#L333-L352

将这些控件放在示例中(而不是核心的一部分)的原因之一是,人们的需求差异很大,因此鼓励您编辑这些控件以满足您的需要。

three.js r68

票数 3
EN

Stack Overflow用户

发布于 2019-01-11 22:33:02

在Three.js r99中,您可以切换轨道控制鼠标按钮如下:

代码语言:javascript
运行
复制
controls.mouseButtons = {
    LEFT: THREE.MOUSE.RIGHT,
    MIDDLE: THREE.MOUSE.MIDDLE,
    RIGHT: THREE.MOUSE.LEFT
}

请参阅https://threejs.org/docs/#examples/controls/OrbitControls

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26183926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档