对象中的三个 JS box3 旋转后错误
Three JS box3 from object is wrong after rotation
我有一个场景包含一些对象,我 select 其中一个然后旋转它然后通过这些代码测试碰撞
var firstObject = SELECTED;
for(var i=0;i<objects.length;i++){
if(objects[i]!=SELECTED){
var secondObject = objects[i];
firstBB = new THREE.Box3().setFromObject(firstObject);
secondBB = new THREE.Box3().setFromObject(secondObject);
var collision = firstBB.isIntersectionBox(secondBB);
if(collision){
return;
}
}
}
代码在旋转之前工作正常,但在旋转之后,有界 bos 计算不正确。
我也遇到了同样的问题。这是因为边界框是在没有平移和旋转因素的情况下创建的,所以快速解决这个问题的方法是在计算 setFromObject 之前尝试在网格上应用矩阵操作,例如:
firstObject.updateMatrix();
firstObject.geometry.applyMatrix( firstObject.matrix );
secondObject.updateMatrix();
secondObject.geometry.applyMatrix( secondObject.matrix );
firstBB = new THREE.Box3().setFromObject(firstObject);
secondBB = new THREE.Box3().setFromObject(secondObject);
var collision = firstBB.isIntersectionBox(secondBB);
我有一个场景包含一些对象,我 select 其中一个然后旋转它然后通过这些代码测试碰撞
var firstObject = SELECTED;
for(var i=0;i<objects.length;i++){
if(objects[i]!=SELECTED){
var secondObject = objects[i];
firstBB = new THREE.Box3().setFromObject(firstObject);
secondBB = new THREE.Box3().setFromObject(secondObject);
var collision = firstBB.isIntersectionBox(secondBB);
if(collision){
return;
}
}
}
代码在旋转之前工作正常,但在旋转之后,有界 bos 计算不正确。
我也遇到了同样的问题。这是因为边界框是在没有平移和旋转因素的情况下创建的,所以快速解决这个问题的方法是在计算 setFromObject 之前尝试在网格上应用矩阵操作,例如:
firstObject.updateMatrix();
firstObject.geometry.applyMatrix( firstObject.matrix );
secondObject.updateMatrix();
secondObject.geometry.applyMatrix( secondObject.matrix );
firstBB = new THREE.Box3().setFromObject(firstObject);
secondBB = new THREE.Box3().setFromObject(secondObject);
var collision = firstBB.isIntersectionBox(secondBB);