当前位置: 首页 > 面试题库 >

在Three.js中任意位置的特定轴上旋转对象-包括网格外部

阎修明
2023-03-14
问题内容

试图绕任何轴旋转对象。

例如,像门铰链(在物体边缘)或围绕太阳的行星(在物体外部)。

问题似乎在定义轴。下面的单位向量导致轴保留在对象的原点(中心)上,与标准旋转相同:

object2.rotateOnAxis(new THREE.Vector3(1,0,0), 0.01);
// same as
object1.rotation.x += 0.01;

编辑: 寻找一种无需使用嵌套子项即可绕枢轴旋转的方法。旋转孩子的父母可以方便地操作孩子的枢轴点,但是修改枢轴点是不可行的。

在下面的示例中,如果您想以图8的运动旋转立方体,则可以通过更改父对象来使用此方法来实现。但是,必须确保精确配置了新父母的位置和方向,以使孩子在父母之间无缝地跳跃,而且不重复或不循环的复杂动作将非常复杂。取而代之的是,我想(并且我将用问题标题来解释)在特定轴上旋转对象,而无需在场景中的任何位置(包括对象网格外部)使用对象嵌套。


问题答案:

如果要围绕世界空间中的任意线旋转对象,可以使用以下方法。该线由3D point和方向矢量(axis)指定。

THREE.Object3D.prototype.rotateAroundWorldAxis = function() {

    // rotate object around axis in world space (the axis passes through point)
    // axis is assumed to be normalized
    // assumes object does not have a rotated parent

    var q = new THREE.Quaternion();

    return function rotateAroundWorldAxis( point, axis, angle ) {

        q.setFromAxisAngle( axis, angle );

        this.applyQuaternion( q );

        this.position.sub( point );
        this.position.applyQuaternion( q );
        this.position.add( point );

        return this;

    }

}();

three.js r.85



 类似资料:
  • 问题内容: 我对Three.js的旋转有很大的疑问,我想在自己的一款游戏中旋转3D立方体。 并且(x,y,z)可以是(1、0、0) 则多维数据集可以旋转,但是问题在于多维数据集绕其自身的轴旋转,因此,旋转后,它无法按预期旋转。 并且我尝试使用 matrixRotationWorld 作为 但它不起作用,我不以错误的方式使用它,还是有其他方法。 因此,如何让3D立方体绕世界轴旋转??? 问题答案:

  • 所以我有一个立方体,我想绕着它的三个轴(立方体的轴,而不是窗口)旋转。正如许多其他类似的问题所指出的,只要我只朝一个方向旋转,我的旋转就会起作用,但当我开始混合它们时,我会得到奇怪的结果。特别是,无论立方体如何旋转,围绕y轴的旋转始终围绕窗口的y轴旋转。 我的绘图代码如下: 这个问题似乎非常准确地描述了我想做什么,公认的答案似乎是我想做什么,但是他提供的链接已经死了。 从我在链接问题中收集到的信息

  • 我正在为我的游戏设计一个区块旋转组件,我遇到了一个我无法理解的小问题。基本上,我希望能够沿所有三个轴旋转网格组件。玩家一次只能旋转一个轴,旋转90度或-90度。我还希望玩家始终根据世界的X、Y和Z轴旋转网格,而不是块的相对轴,它将随着旋转而改变。我如何做到这一点? 无旋转的网格: 网格沿X轴逆时针旋转90度: 这里的问题是,如果我想沿着Y轴旋转块,相反,它将沿着Z轴旋转块,因为块现在被旋转。我如何

  • 本文向大家介绍Unity实现绕任意轴任意角度旋转向量,包括了Unity实现绕任意轴任意角度旋转向量的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Unity实现绕任意轴任意角度旋转向量的具体代码,供大家参考,具体内容如下 游戏中有一需求,就是一个矩形或者Cube绕着某一点旋转任意角度,现在给出下面算法。 测试用例 效果图   以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大

  • 我的屏幕上有一个旋转和平移的对象,但是我有两个关于z轴旋转的问题。解释起来有点棘手,所以我上传了两个视频来描述每个问题。 1) 反向旋转:在绕x轴旋转对象后,z轴旋转将被反向,并且应该如此。 2)错误的Z轴旋转:同样,在围绕x轴旋转物体后,我试图围绕z轴旋转物体,旋转导致不同的轴旋转。 我相信视频很好地描述了这些问题。 编辑:更新#1 好的,我想我找到了解决方案,就是只绕Z轴旋转相机,然后对模型本

  • 在Java8中有“方法引用”特性。其中一种是“对特定类型的任意对象的实例方法的引用” http://docs.oracle.com/javase/tutorial/java/javao/methodreferences.html#类型