javascript - three.js:在正确的轴上旋转四面体

标签 javascript 3d rotation three.js

我必须使用 three.js 在动画 HTML5 图形中显示旋转的四面体。

当我创建对象时,它是倒置的,但它应该在地面上,只有一个表面,如屏幕截图所示:http://www10.pic-upload.de/08.10.12/v3nnz25zo65q.png

目前,这是旋转对象的代码。存储在 render() 函数中。但是轴不正确,对象旋转错误。

object.useQuaternion = true;
var rotateQuaternion_ = new THREE.Quaternion();
rotateQuaternion_.setFromAxisAngle(new THREE.Vector3(0, 1, 1), 0.2 * (Math.PI / 180));
object.quaternion.multiplySelf(rotateQuaternion_);
object.quaternion.normalize();

(从 Three.JS - how to set rotation axis 复制)

这是目前的结果:http://jsfiddle.net/DkhT3/

如何访问正确的轴以移动/旋转地面上的四面体?

感谢您的建议!

最佳答案

不要做你复制的东西。这是不正确的。

我假设您想要做的是从一个正面朝上的四面体开始。您可以做的一件事是修改 THREE.TetrahedronGeometry() 以使用四个顶点生成您想要的四面体。

如果你想使用现有的代码,那么你要做的就是在创建几何体后立即对其应用旋转,如下所示:

const geometry = new THREE.TetrahedronGeometry( 10, 0 );
geometry.applyMatrix4( new THREE.Matrix4().makeRotationAxis( new THREE.Vector3( 1, 0, - 1 ).normalize(), Math.atan( Math.sqrt( 2 ) ) ) );
geometry.translate( 0, 10 / 3, 0 ); // optional, so it sits on the x-z plane

(确定正确的旋转 Angular 需要一些数学知识,但在这种情况下它是 sqrt( 2 ) 的反正切,以弧度表示。)

three.js r.146

关于javascript - three.js:在正确的轴上旋转四面体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784455/

相关文章:

javascript - 有没有办法将所有双击事件绑定(bind)到 jQuery/JavaScript 中的单击等效项?

javascript - 在 WordPress 前端添加选择

javascript - 访问json不起作用

javascript - Fabric js sendBackwards 问题

java - 计算机图形学 : Moving in the world

Python 3D 绘制测量数据

matlab - 如何将旋转应用于由中心和轴长度定义的椭圆?

3d - Meshlab:调用meshlab命令行版

python - '全局名称 <同一 namespace 中的函数> 未定义' - 为什么会发生这种情况?

jquery - 旋转 + 缩放图像