【问题标题】:Three.js TrackballControls.js rotating in z & x axis onlyThree.js TrackballControls.js 仅在 z 和 x 轴上旋转
【发布时间】:2017-08-22 16:51:39
【问题描述】:

我正在尝试在threejs 中设置TracballControls 以仅在两个轴上移动,仅平移和倾斜,没有滚动。有没有可能实现它? 我的代码:http://360.art.pl/experimental/2/ 鼠标移动应该是这样的:http://360.art.pl/experimental/1/

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    我认为这会对您有所帮助:(解决了我的问题)

    查看您的 TrackballControl.js 文件并更改第 148 行

    来自:

    _this.object.up.applyQuaternion( quaternion );
    

    到:

    _this.object.up.applyQuaternion( new THREE.Vector4(0,0,0,1) );
    

    //更新 仅适用于旧版本

    【讨论】:

    • 这似乎不起作用。立方体在同一个 3 轴上旋转,但现在似乎出现了万向节锁定问题。
    【解决方案2】:

    我意识到这已经很老了,但由于它仍然是谷歌的主要结果,我将描述我是如何做到这一点的。

    为了防止滚动(锁定 z 轴),您可以防止 rotateCamera() 更改相机的 Up 向量。

    注释掉该行(~第 200 行)

    _this.object.up.applyQuaternion(quaternion);
    

    如果您愿意,也可以锁定相机的旋转矢量,添加任一

    _this.object.rotation.z = 0; 
    

    _this.object.rotation.set(0, 0, 0);
    

    到函数的末尾。但是在实践中我发现这并没有太大区别,因为大部分旋转是由相机相对于它的lookAt目标(trackballControls.js文件中的_this.target)的移动引起的。

    【讨论】:

      【解决方案3】:

      我只是改变了变量

      this.noPan
      

      在第 26 行设置为 false。 未注释

      _this.object.up.applyQuaternion( quaternion );
      

      并增加了

      this.dynamicDampingFactor = 0.2;
      

      到 0.8。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-12
        • 2012-07-23
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 2017-04-22
        • 1970-01-01
        相关资源
        最近更新 更多