2017-01-22 69 views
0

我正在做一个WebGL的魔方。我创建了27个小立方体,形成一个大立方体,但我不知道该怎么说“旋转位于该特定位置的立方体(例如,顶部的9块)”。 立方体总是改变它们的位置,所以我需要一种动态的方式来称呼它们。 我该怎么办?我怎样称呼一组立方体并且不是通过他们的名字旋转它们,而是感谢他们的位置?如何根据WebGL(和THREE.js库)的位置来旋转对象?

在我的代码中,我只创建了立方体,并将它们添加到场景中以创建大块,而不是更多。

我真的需要帮助,所以thx很多。

+1

查看http://stackoverflow.com/questions/20089098/three-js-adding-and-removing-children-of-rotated-objects。 – WestLangley

回答

-1

我一直在关注和贡献一个项目,可以让您非常轻松地创建基于WebGL的应用程序。这就是所谓的whitestormJS,你可以看看它here

所以whitestorm只是Three.js的一个包装,它有一个很好的API,它会简化很多事情。无论如何,尽管你使用的是什么。我建议你使用组来移动所有的面孔。 Jonathan Petitcolas在Three.js中有很好的关于轮换的tutorial

//you should create a group for each face with its proper cubes 
var face1 = new THREE.Group(); 
group.add(piece1); 
group.add(piece2); 
// and so on, finally set a rotation to the group on the proper axis. 
pivot.rotation.y = 1.5708; //this is 90 degrees in radians 
+0

但如果我使用这种方法,我使用立方体的名称...当他们改变位置,他们与其他立方体混合,效果完全是一团糟 – HugoB