2015-03-24 2 views
0

у меня есть сцена содержит некоторые объекты, я выбрать один из них затем повернуть его, то тест столкновения с помощью Фес кодаТри JS Box3 от объекта неправильно после поворота

 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; 
       } 
      } 
     } 

код работает отлично, прежде чем вращения, но после того, как вращение ограниченных бос не вычисляется правильно.

ответ

1

Я тоже сталкивался с той же проблемой. Это приводит к тому, что ограничивающая рамка создается без коэффициента трансляции и вращения, поэтому быстрое исправление для этого заключается в попытке применить матричную операцию на сетке до вычисления значения 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); 
Смежные вопросы