THREE.js将r60迁移到r70:现在无法写入:mesh.position=myVector3()
我正在将一个THREE.js应用程序从r60迁移到r70。在其他变化中,我注意到以下形式的r60构造在r70中不再工作THREE.js将r60迁移到r70:现在无法写入:mesh.position=myVector3(),three.js,position,migration,mesh,Three.js,Position,Migration,Mesh,我正在将一个THREE.js应用程序从r60迁移到r70。在其他变化中,我注意到以下形式的r60构造在r70中不再工作 mesh.position.set(0,0,0); myVector3 = new THREE.Vector3 (100,200,300); mesh.position = myVector3; 这适用于网格、点光源,可能适用于所有Object3D,但我还没有进一步测试 在上述示例中,mesh.positionx,y,z值在(0,0,0)处保持不变。有关插图,请参见并比较
mesh.position.set(0,0,0);
myVector3 = new THREE.Vector3 (100,200,300);
mesh.position = myVector3;
这适用于网格、点光源,可能适用于所有Object3D,但我还没有进一步测试
在上述示例中,mesh.position
x,y,z值在(0,0,0)处保持不变。有关插图,请参见并比较第70行和第73行
//...The next line DOES NOT update Sphere_mesh.position.x
Sphere_mesh.position = NewPos_vector3;//...
//...The next line DOES update Sphere_mesh.position.x
Sphere_mesh.position.x = NewPos_vector3.x
在调试器中,在执行过程中不会发出控制台警告,表明分配未起作用。简单地说,我看到Object3D的位置不再是不变的,但我不知道这意味着什么
无论如何,我的问题
是否有一个标准的三个构造或函数可用于将矢量3对象的x、y、z值复制到网格的x、y、z值。位置,而不是有效但详细的形式,例如
mesh.position.x = myVector3.x;
mesh.position.y = myVector3.y;
mesh.position.z = myVector3.z; ?
e、 例如
mesh.position = F_Get_Object3DPosition_from_Vector3(myVector3); ?
我知道写我自己的函数很容易,但是标准的三元函数更可能在未来的三元函数版本中顺利发展。我想你在最后一行是指myVector3而不是myVector3()。。。不管怎样,我想这也行,但问题是,你把一个向量应用到一个应该是点/顶点的东西上。即使在我看来这是可行的,但这不是正确的方法。使用一个简单的数组怎么样:
mesh.position.set(0,0,0);
new_position = [100,200,300]
mesh.position.fromArray(new_position,0)
其中0是起始索引。因此,在一个数组中可以有多个位置集。位置不可变意味着位置属性不能更改 所以 不起作用(但你已经发现了) 您所能做的不是更改位置,而是必须更改位置值 在您的情况下,最简单的方法是
mesh.position.copy (myVector3);
看啊,谢谢。我确实很努力地搜索了其他问题,但没有找到。谢谢。“.copy”方法正是我想要的,尽管在我看来,如果名称是“.copyValues”会更直观。是的,谢谢你说得对,它应该是第三行代码中的vector3。我以前不知道.fromArray方法。有趣。实际上,我看到Object3d.position是一个Vector3对象(根据位于的文档)。在我的例子中,我已经将点存储为Vector3对象,因此.fromArray方法不适合这种情况。
mesh.position.copy (myVector3);