旋转锚点在Three.js

Dan*_* D. 3 javascript three.js

我正在定义一个锥体,我需要能够绕其顶点旋转(锥体厚度最小的点).我找不到设置旋转发生点的方法.

var coneGeometry = new THREE.CylinderGeometry(1000, 0, width, 50, 50, false);
var cone = new THREE.Mesh(coneGeometry, material);
cone.position.x = x;
cone.position.y = y + width / 2;
cone.position.z = z;
// I want this rotation to happen around the point given by the (x, y, z) location
cone.rotation.x = dip;
Run Code Online (Sandbox Code Playgroud)

Wes*_*ley 9

圆锥几何体以原点为中心.您需要做的是在创建锥形几何体之后立即将其转换,使锥体的尖端位于原点.

coneGeometry.applyMatrix( new THREE.Matrix4().makeTranslation( 0, coneHeight/2, 0 ) );
Run Code Online (Sandbox Code Playgroud)

(平移的符号根据圆锥的哪一端是小端而变化.)

现在,当您旋转圆锥时,它将围绕尖端旋转.尖端也将位于您设置的位置.

编辑:您现在可以这样做,而不是:

coneGeometry.translate( 0, coneHeight/2, 0 ); // three.js r.72
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用。它单独与几何体一起平移枢轴点。 (2认同)