Three.js:带缩放阻尼的OrbitControl?

时间:2015-11-01 22:44:21

标签: javascript three.js

阻尼功能已添加到three.js的r.72dev分支中。 它非常适合旋转更平滑。

它是否也能为缩放启用阻尼(惯性)?

controls = new THREE.OrbitControls( camera, renderer.domElement );
controls.enableDamping = true;
controls.dampingFactor = 0.25;

1 个答案:

答案 0 :(得分:3)

我为three.js r73 OrbitControls添加了缩放阻尼,参见此演示

http://jsfiddle.net/L0rdzbej/149/

用法与默认的Orbit Controls一样,您可以使用这些设置进行自定义:

controls.constraint.smoothZoom = true;
controls.constraint.zoomDampingFactor = 0.2;
controls.constraint.smoothZoomSpeed = 5.0;

缺点:仅适用于鼠标滚轮,不适用于缩放或鼠标中键。我想它可以延长,但直到现在我还不够在乎。我愿意接受建议。

我的解决方案基于2013年paulkaplan的这一要点:https://gist.github.com/paulkaplan/5770247。毋庸置疑,自那以后,three.js和Orbit Controls发生了很大的变化。如果一些前作者正式添加此功能,我将不胜感激,但有时需要一段时间; - )

  

为了快速概述,我修改了以下内容:

OrbitContraint()

缩放所需的一堆变量,

添加了功能:this.smoothZoomUpdate = function () { /* ... */ };

并在OrbitConstraint.update()函数内调用它:

this.update = function () {
    //...
    this.smoothZoomUpdate ();
    //...
}

同样在THREE.OrbitControls()内修改了函数onMouseWheel() { /* ... */ }

相关问题