(立方体)用三个.js旋转

(Cube) Rotation with three.js

本文关键字:旋转 js 三个 立方体      更新时间:2023-09-26

我在three.js中做一个项目,在那里我有一个立方体,可以用一些按钮(箭头)旋转它。旋转是有效的,但经过一些旋转后,它就不再朝着正确的方向旋转了。可能是因为立方体的轴偏移了?但这让我有点困惑。。

我需要立方体能够通过一些控件向上、向下、向左和向右旋转。这基本上就是它目前的工作方式:

当按下一个方向时,比如"右",我们用tween.js更新mesh.rotation.y,直到mesh.rotection.y旋转90度。

//SCENE, MESH,.. SETUP
...
function rotateRight(){
   var start = {x:cubeMesh.rotation.x, y:cubeMesh.rotation.y, z:cubeMesh.rotation.z};
   //RIGHT: y + 90°
   var end = {x:cubeMesh.rotation.x, y:cubeMesh.rotation.y + degreeToRadians(90),
              z:cubeMesh.rotation.z};
   var tween = new TWEEN.Tween(start)
      .to(end, 1000)
      .easing( TWEEN.Easing.Exponential.InOut )
      .onUpdate(function(){
         cubeMesh.rotation.x = this.x;
         cubeMesh.rotation.y = this.y;
         cubeMesh.rotation.z = this.z;
       })
   .start();
}
function animateScene(){
    requestAnimationFrame(animateScene);
    TWEEN.update();
    renderer.render(scene, camera);
}

我需要更改什么才能使这个立方体在正确的方向上旋转?我们能固定立方体的轴,这样它们就不会移动吗?我读过一些关于世界轴与对象轴的文章,这是我需要改变的吗?我该如何实现?

提前感谢!

对不起,不能发表评论,这肯定不是完美的答案,但如果你在旋转方面有问题,也许你的推特不太正确?让我印象深刻的是,你的函数只在一个轴上旋转,但你仍然更新所有三个轴。也许你应该去掉x和z,只更新正确的轴?也许这也有助于解决你的问题,因为你知道自己实际上在改变什么。不过,这只是一个想法。

多亏了这篇文章,才明白了:如何在轴three.js上旋转三维对象?

围绕世界轴旋转对象。