box3.setFromObject与object.location不匹配

时间:2015-07-31 10:36:51

标签: three.js

我有一个对象(加载了装载程序,stl),我试图创建一个' snpping'移动时的效果。

我从对象创建了一个THREE.Box3来做一些检测,但我注意到我的Box3与我的对象的位置object.location不匹配。

我确定我搞乱了世界空间,本地空间等等,所以任何人都可以解释我如何解决这个问题以及什么是什么?

代码:

var box = new THREE.Box3().setFromObject(activeElement);/
    $("#debug").html(

    "<p>location: <span>" + activeElement.position.x + " - " + activeElement.position.z + "</span></p>" +
    "<p>box - min: <span>" + box.min.x + " - " + box.min.z + "</span></p>" + 
    "<p>box - max: <span>" + box.max.x + " - " + box.max.z + "</span></p>" + 
    "<p>sceneScale: <span>" + sceneScale);

所以位置和盒子不适合他们应该适合的地方。

1 个答案:

答案 0 :(得分:1)

box3 minmax是3D空间中的点向量,从边界框前面的左下角到右上角。 请参阅此BoxGeometry的简单示例值,其大小为(10,10,10)

mesh.position { x: 0, y: 5, z: 0 }
box.min { x: -5, y: 0, z: -5 }
box.max { x: 5, y: 10, z: 5 }

http://jsfiddle.net/L0rdzbej/12/

enter image description here

更新:如在Chat中所示,要将对象放在另一个边界框旁边,请使用此公式(用于捕捉x轴的一侧):

newPosition.x = otherBox.min.x - ( (activeElement.max.x - activeElement.min.x ) / 2 )