我知道OrbitControls.js有一个阻尼特性,可以添加平滑的全景拖动,也称为缓动。 我想实现相同的功能,但不使用该库。原因是我需要减少使用的代码量并获得对鼠标或触摸事件的更严格控制。
我已经建立了这个Plunker来展示我用作全景视图起始项目的演示。
当我尝试使用OrbitControls.js中的阻尼效果时(参见此行),我无法获得相同的平滑行为-交互会导致全景图跳动。
我已经建立了这个Plunker来展示我用作全景视图起始项目的演示。
https://plnkr.co/edit/eX2dwgbrfNoX9RwWaPaH?p=preview
在这个演示中,鼠标坐标被转换为经纬度,从而调整相机位置。这是来自three.js网站的最基本、最简单的全景示例。当我尝试使用OrbitControls.js中的阻尼效果时(参见此行),我无法获得相同的平滑行为-交互会导致全景图跳动。
if ( scope.enableDamping === true ) {
sphericalDelta.theta *= ( 1 - scope.dampingFactor );
sphericalDelta.phi *= ( 1 - scope.dampingFactor );
panOffset.multiplyScalar( 1 - scope.dampingFactor );
}
我不相信我完全能理解如何将{{damping}}应用到我在Plunker上的例子中。
有谁能指导我如何将{{damping}}应用到我的Plunker示例中?
更新:
通过为经度和纬度添加新的delta值,我成功地进行了进展:请参见更新后的Plunker中的latDelta
和lonDelta
。我从OrbitControls.js
中获得了它的工作原理。由于lonDelta = 0.35
,您现在可以在初始页面加载时观察到一个理想的平滑滚动。但是,我不确定这在用户鼠标滚动期间如何操作。至少我正在朝着正确的方向前进。