2016-04-27 5 views
0

J'ai utilisé le code suivant pour implémenter l'intersection. Cela fonctionne correctement pour les géométries définies dans le code. Mais il ne détecte pas les intersections avec les objets Collada.Intersection et Collada-Three.JS

 document.addEventListener('mousedown', Identify, false); 
     function Identify(event) { 

       event.preventDefault(); 
       mouse.x = (event.clientX/window.innerWidth) * 2 - 1; 
       mouse.y = - (event.clientY/window.innerHeight) * 2 + 1; 

       raycaster.setFromCamera(mouse, camera); 
       var intersects = raycaster.intersectObjects(scene.children); 
       if (intersects.length > 0) { 
        if (INTERSECTED != intersects[ 0 ].object) { 
         if (INTERSECTED) INTERSECTED.material.color.setHex(INTERSECTED.currentHex); 
         INTERSECTED = intersects[ 0 ].object; 
         INTERSECTED.currentHex = INTERSECTED.material.color.getHex(); 
         INTERSECTED.material.color.setHex(0xff0000); 
        } 
       } else { 
        if (INTERSECTED) INTERSECTED.material.color.setHex(INTERSECTED.currentHex); 
        INTERSECTED = null; 
       } 

     } 

Comment puis-je inclure des géométries Collada dans la matrice d'intersection?

Répondre

0

Cela a été résolu en ajoutant le code suivant après Colladaloader pour pousser tous les objets.

var ToIntersect = []; 
dae.traverse(function(child) { 
    if (child instanceof THREE.Mesh) { 
     ToIntersect.push(child); 
    } 
}); 


... 

var intersects = raycaster.intersectObjects(ToIntersect); 
0

je le même problème (dans mon cas j'importais un robot 6 axes puis chaque lien était un objet enfant du lien précédent) afin intersectObjects doivent être exécutées de manière récursive dans la scène en mettant le second paramètre true, comme indiqué dans la documentation: http://threejs.org/docs/#Reference/Core/Raycaster

vous pouvez essayer vous changer le code à:

var intersects = raycaster.intersectObjects(scene.children, true);