【发布时间】:2015-05-01 12:13:58
【问题描述】:
我正在将一个 THREE.js 应用程序从 r60 迁移到 r70。在其他更改中,我注意到以下形式的 r60 构造不再适用于 r70。
mesh.position.set(0,0,0);
myVector3 = new THREE.Vector3 (100,200,300);
mesh.position = myVector3;
这适用于网格、pointLights,大概适用于所有 Object3D,但我没有进一步测试。
在上面的示例中,mesh.position x,y,z 值在 (0,0,0) 处保持不变。有关说明,请参见 this JSFiddle 并比较第 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
在调试器中,在执行过程中不会发出控制台警告,指出分配没有起作用。在非常简短的 THREE.js migration notes for (r68 --> r69) 中,我看到 Object3D 的位置不再是不可变的,但我不知道这意味着什么。
无论如何,我的问题
是否有一个标准的三个构造或函数可以用来将 x,y,z 值从 Vector3 对象复制到 mesh.position 的 x,y,z 值,而不是有效但冗长的形式,例如
mesh.position.x = myVector3.x;
mesh.position.y = myVector3.y;
mesh.position.z = myVector3.z; ?
例如诸如
之类的东西mesh.position = F_Get_Object3DPosition_from_Vector3(myVector3); ?
我知道编写自己的函数很容易,但标准的 THREE 函数更有可能随着 THREE 的未来版本顺利发展。
【问题讨论】:
-
啊,谢谢。我确实很努力地搜索了其他问题,但错过了那个。
标签: three.js position migration mesh