在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轴上旋转蓝色。
答案 0 :(得分:0)
似乎您正在将不赞成使用的Object3D.translate()
方法与BufferGeometry.translate()
混合在一起。如果平移几何图形而不是3D对象,则可以按预期更改枢轴点。希望更新后的Codepen能够显示您预期的视觉效果: