现在不推荐使用ThreeJS Translate添加位置

时间:2019-04-16 12:17:41

标签: three.js rotation translate-animation

在three.js r96中,存在翻译(x,y,z)。我将使用它来将对象移出其原点。

现在在r103中,不推荐使用translationX(x),但是在查看网格的控制台输出时,我看到如果我有一个位置position.set(50,0,0)和traslateX(50 ),则“网格”的属性显示的位置为(100,0,0)。

https://codepen.io/anon/pen/XQVmyZ

这是问题的一个示例。在这段代码中,我有三个平面。旋转平面必须在y轴上的红色和蓝色相交点处旋转。

如果我的平面宽度为100,则将位置设置为(50,0,0)会将蓝色中心移至红色的最右边缘。那应该是蓝色的新起源。

现在,如果我在x轴50上平移蓝色,则原点应仍在同一位置,但是现在旋转时蓝色将在位于蓝色最外点的Y轴上旋转。如您所见,并非如此。

对“网格”的观察表明没有平移,只是一个位置。

plane3.position.set(50,0,0);
//plane3.translate(50,0,0);  //Used to work
plane3.translateX(50); //New translate, adds to position instead
//var vector = new THREE.Vector3( 1, 0, 0 );
//plane3.translateOnAxis(vector,40);

function render() {
 requestAnimationFrame( render );
 plane3.rotation.y += 0.03;
     renderer.render( scene, camera );
}

我想要的结果是可以在其最左侧的Y轴上旋转蓝色。

1 个答案:

答案 0 :(得分:0)

似乎您正在将不赞成使用的Object3D.translate()方法与BufferGeometry.translate()混合在一起。如果平移几何图形而不是3D对象,则可以按预期更改枢轴点。希望更新后的Codepen能够显示您预期的视觉效果:

https://codepen.io/anon/pen/BEJpLg