【问题标题】:Rotate an object arranged around a sphere to look at origin, then rotate it again旋转围绕球体排列的对象以查看原点,然后再次旋转它
【发布时间】:2015-02-28 06:57:06
【问题描述】:

我知道如何旋转围绕球体排列的对象,以便它看到原点,但是我如何沿着从对象中心到球体原点的轴再次旋转它?

在这里提琴:http://jsfiddle.net/s3L6tqj0/

我尝试过的所有方法都没有奏效,包括我之前使用的代码来执行与 lookAt 相同的操作,但我还添加了额外的轮换。

我想这是我错过的非常简单的事情 - 任何指针?

【问题讨论】:

    标签: three.js


    【解决方案1】:

    您可以使用 makeRotationAxis() 沿轴从球体原点旋转到网格。假设球体的原点是 (0,0,0),您可以这样做:

    var axis = new THREE.Vector3( mesh.position.x, mesh.position.y, mesh.position.z );
    var angle = someAmountYoudLike * Math.PI / 256;
    var matrix = new THREE.Matrix4();
    matrix.makeRotationAxis( axis.normalize(), angle ); 
    mesh.rotation.setFromRotationMatrix( matrix );
    

    【讨论】:

    • 谢谢 Bob - 我之前试过了,所以我希望你的解决方案有一行我错过了,但它似乎仍然不正确 - jsfiddle.net/s3L6tqj0/1 - 我错过了什么吗?我怀疑我对问题的原始描述是错误的 - 想象一下海洋上有一个大浮子 - 我想让它平放在水面上,但围绕从浮子中心到地球中心的轴旋转。
    【解决方案2】:

    正如我想象的那样,答案其实很简单。

    在我的对象上调用 rotateZ(angle) 就可以了。

    在这里演示:http://jsfiddle.net/2hkg76se/

    【讨论】:

      猜你喜欢
      • 2015-04-11
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多