【问题标题】:Three.js increase local object rotation三.js增加局部对象旋转
【发布时间】:2016-12-06 13:35:22
【问题描述】:

我的目标是让一个对象像飞船一样控制,我的理解是我需要使用四元数来实现这个目标。首先,当我按下 A 键时,我试图让我的立方体开始向左旋转,这是代码:

if(controls.pressingA === true)
{
    //var pLocal = new THREE.Vector3( 0, 0, -1 );
    //var pWorld = pLocal.applyMatrix4( me.matrixWorld );
    //var dir = pWorld.sub( me.position ).normalize();
    var dir = me.getWorldDirection();
    var quaternion = new THREE.Quaternion().setFromAxisAngle( dir, 0.05 );
    me.rotation.setFromQuaternion( quaternion );
}

据我了解,me.getWorldDirection() 获取对象所面对的轴,然后我在之前获得的轴上创建四元数并将给定对象旋转 0.05 度,最后一行我只是将四元数应用于我的对象的代码。我遇到的问题是它不会增加旋转,它只是将我的对象设置为给定的旋转,我怎样才能让它增加旋转而不是设置它?

【问题讨论】:

  • 在该轴和 + 0.05 上旋转(现在不知道代码

标签: javascript three.js rotation quaternions


【解决方案1】:

你为什么不使用以下一种或组合:

mesh.rotation.x += 0.05;
mesh.rotation.y += 0.05;
mesh.rotation.z += 0.05;

JSFiddle

【讨论】:

  • 这在全局空间中旋转,无论如何要在本地空间中旋转?
【解决方案2】:

如果你要设置所有这些,你可以这样做

mesh.rotation.set(9, 7, 3)

【讨论】:

    猜你喜欢
    • 2019-07-16
    • 2012-07-19
    • 2018-05-20
    • 2021-08-27
    • 2016-03-25
    • 2014-05-07
    • 2015-03-13
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多