代码之家  ›  专栏  ›  技术社区  ›  liminalFrog

three.js-OrbitControls阻尼在鼠标按下时有效,但在鼠标停止移动时没有阻尼

  •  0
  • liminalFrog  · 技术社区  · 2 年前

    这可能很难解释:

    使用 OrbitControls 在three.js中,并启用了阻尼功能以实现鼠标的平滑旋转。它部分起作用。我单击、拖动,阻尼效果很好,但只要我停止移动鼠标,并按住按钮,阻尼就会停止,场景会立即停止,而不是平稳地拖动更长的时间。

    有趣的是,当我使用滚轮时,在滚动滚轮时,没有完成的阻尼以一种轻松的方式再次增加。

    我的轨道控制设置如下:

    const controls = new OrbitControls( camera, renderer.domElement );
    
    controls.target.set(0,0,0);
    controls.enableDamping = true;
    controls.dampingFactor = 0.07;
    controls.enablePan = false;
    controls.maxDistance = highestDimension * 2;
    controls.minDistance = 10;
    controls.minPolarAngle = Math.PI / 8;
    controls.maxPolarAngle = Math.PI / 2;
    controls.update();
    

    我没有看到任何其他阻尼在线选项,除非我错过了什么。

    1 回复  |  直到 2 年前
        1
  •  0
  •   Łukasz Daniel Mastalerz    2 年前

    试试棍子 controls.update 内部动画循环。

    function animate() {
      requestAnimationFrame(animate);
      controls.update();
      renderer.render(scene, camera);
    }
    animate();
    
    推荐文章