Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
THREE.js将r60迁移到r70:现在无法写入:mesh.position=myVector3()_Three.js_Position_Migration_Mesh - Fatal编程技术网

THREE.js将r60迁移到r70:现在无法写入:mesh.position=myVector3()

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)处保持不变。有关插图,请参见并比较

我正在将一个THREE.js应用程序从r60迁移到r70。在其他变化中,我注意到以下形式的r60构造在r70中不再工作

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);