使Object3D“对齐网格”?

时间:2014-07-28 03:26:43

标签: three.js

我在Three.js制作了一个魔方。一个小问题是由于累积的四舍五入错误,碎片逐渐漂移到位。因此,在每次完成90°转弯后,我想将它移动到完全它应该在哪里。

这个地方定义明确。所有坐标应舍入为整数,所有方向应指向X,Y或Z轴。但我不确定如何正确/安全地做到这一点。

如果obj.position为(0.99999,0,0.00002),则很容易将其移动到(1,0,0)。但是后来有obj.matrixobj.matrixWorldobj.quaternionobj.rotation以及其他几个,我不知道所有这些是如何相互作用以及可以做什么安全的。

有没有通用的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

Math.floor()可以帮助您进行四舍五入。

可能使事情变得更简单的一种方法是不要定位碎片并仅旋转它们(相对于立方体的中心)。您需要先将几何体定位到位,但不要改变旋转中心,最简单的方法可能是:

geometry.applyMatrix( new THREE.Matrix4().makeTranslation(x, y, z) );