对象中的三个 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);