three.js围绕Y轴旋转Object3d

时间:2013-07-28 10:31:55

标签: 3d rotation three.js

我在Object3d中有一个Three.JS,它是一组Mesh对象 我想围绕Y轴旋转这个组,在它的中心,远离世界中心(0,0,0) 我只知道Group.rotate.y += deg代码,但是对于每个轴方向,它总是围绕(0,0,0)旋转对象,而不是我的组中心!
我怎样才能解决这个问题?

UPDATE:

阅读评论

3 个答案:

答案 0 :(得分:7)

查看Object3D的rotateOnAxis(axis, angle)函数。 它应该是这样的:

//declared once at the top of your code
var axis = new THREE.Vector3(0.5,0.5,0);//tilted a bit on x and y - feel free to plug your different axis here
//in your update/draw function
rad += radIncrement;
object.rotateOnAxis(axis,rad);

HTH

答案 1 :(得分:2)

This answer帮助了我,但是代码不太正确。轴必须是单位矢量,并且object.rotateOnAxis()是增量的。

这是一个有效的示例:

var axis = new THREE.Vector3(4, 0, 7).normalize();
var speed = 0.01;

// set up scene, etc.

function animate () {

    // other code

    if (object) {
        object.rotateOnAxis(axis, speed);
    }
}

答案 2 :(得分:0)

请参见How to rotate a 3D object on axis three.js?

我通过以下方式解决了这个问题:

我为ThreeJS创建了“ ObjectControls”模块,该模块允许您旋转单个对象(或组),而不是SCENE。

包含库文件

用法:

var controls = new THREE.ObjectControls(camera,renderer.domElement,yourMesh);

您可以在此处找到实时演示:https://albertopiras.github.io/threeJS-object-controls/

以下是仓库:https://github.com/albertopiras/threeJS-object-controls