9

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

更新:

阅读评论

4

3 回答 3

9

看看 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);

高温高压

于 2013-07-28T10:56:17.680 回答
5

这个答案对我有帮助,但代码并不完全正确。轴必须是单位向量,并且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);
    }
}
于 2018-07-27T12:28:58.810 回答
0

请参阅如何在轴 three.js 上旋转 3D 对象?

我这样解决了这个问题:

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

包括库:

用法:

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

你可以在这里找到一个现场演示:https ://albertopiras.github.io/threeJS-object-controls/

这是回购:https ://github.com/albertopiras/threeJS-object-controls 。

于 2018-07-14T15:11:24.733 回答