围绕轴旋转物体

时间:2013-06-06 22:11:30

标签: three.js

我有一个几何对象,我正在尝试添加围绕该几何体的Torus网格。我要做的是拥有原始几何体,然后在单击几何体时,它会在单击的位置周围的线上添加圆环形状。但是,我无法正确旋转它。

我让圆环显示在正确的位置,但我无法将其定位在线周围。我正在使用raycaster来点击点,所以我点击了点的面部和面部索引。在我尝试使用旋转(使用setEulerFromRotationMatrix)的每个实现时,它只是移动环面网格的位置,而不是实际旋转它以允许线穿过圆环。

这似乎是微不足道的,但它给了我很多麻烦。我究竟做错了什么?我尝试了两种方法,既不成功又表现出上述行为:

var rotationMatrix = new THREE.Matrix4();
    rotationMatrix.makeRotationAxis(geometry.faces[fIndex].centroid.normalize(), Math.PI/2);
    torusLoop.matrix.multiply(rotationMatrix);
    torusLoop.rotation.setEulerFromRotationMatrix(torusLoop.matrix);

//attempt two, similar results to above attempt
tangent = geometry.tangents[segments/radiusSegments].normalize();
    axis.crossVectors( up, tangent ).normalize();
    var radians = Math.acos( up.dot( tangent ) );
    matrix.makeRotationAxis( axis, radians );
    torusLoop.rotation.setEulerFromRotationMatrix( matrix );

我需要花托结来跟随样条的曲线,但它只会保持平坦,旋转只会让它四处移动,而不是改变角度。

1 个答案:

答案 0 :(得分:2)

没关系,我明白了。对于那些想知道的人,我在旋转之前进行了翻译,这导致我的身材围绕不同的轴旋转。我的解决方案是首先旋转,然后翻译,然后在创建网格后,将其移动到我需要它的位置。