three.js - 绕轴旋转对象

标签 three.js

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

我让环面出现在正确的位置,但我无法围绕直线定位它。我正在使用光线转换器来点击点,所以我有点击点的面和面索引。在我尝试使用旋转(使用 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 );

我需要圆环结跟随样条曲线,但它只会保持平坦,而旋转只会导致它四处移动,而不是改变角度。

最佳答案

没关系,我想通了。对于那些想知道的人,我在旋转之前进行了平移,这导致我的图形绕着不同的轴旋转。我的解决方案是先旋转,然后平移,然后在创建网格后,将其移动到我需要的位置。

关于three.js - 绕轴旋转对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973074/

相关文章:

javascript - Three.js不同轨道目标点

javascript - AR.JS 自定义标记

javascript - Three.js:texture到datatexture

javascript - 三JS : How to rotate object instead of rotating the camera?

javascript - three.js中解析json几何数据

javascript - Three.js 中一组共面点的最佳拟合矩形

javascript - 在 ThreeJS 中使用新的 PlaneBufferGeometry 访问顶点

three.js - 为 OrbitControls() 设置初始旋转

html - 在 three.js 渲染器上覆盖 HTML 文本