2013-07-27 35 views
0

我在Three.JS中有一个Mesh对象。
如何获得具有ID的网格对象,并更改其位置,如jQuery中的$(#"sample")
或者在代码中间改变对象位置的更好的主意。ThreeJS通过编号获取元素(网格)

var voxel = new THREE.Mesh(new THREE.CubeGeometry(x, y, z), new THREE.MeshBasicMaterial(...)) 
voxel.id = "sample"; 
scene.add(voxel); 

回答

3

为了安全起见,请不要覆盖现有的Object3D.id

var objects = {}; 

mesh1.id2 = "mesh1"; 
objects[ mesh1.id2 ] = mesh1; 

mesh2.id2 = "mesh2"; 
objects[ mesh2.id2 ] = mesh2; 

objects[ "mesh2" ].position.set(1, 1, 1); 

编辑:Object3D有一个属性userData现在。所以,你可以使用这个模式:

mesh1.userData.id = "mesh1"; 
objects[ mesh1.userData.id ] = mesh1; 

three.js所r.73

+0

首先感谢您的关注; 我做了你所说的,并且该对象成员的位置发生了变化,但它并没有对我的场景做任何改变! 我如何更新我的场景以显示新的位置? 我必须从场景中删除该对象并重新添加它,或者...? –

+0

好的,这是工作! 我只是在代码顶部添加了这个: mesh.matrixAutoUpdate = true; 谢谢 –