2016-04-27 20 views
0

交差点を実装するために次のコードを使用しました。コード内の定義済みのジオメトリに対しては正常に動作します。しかし、Colladaオブジェクトとの交差点は検出されません。交差点と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; 
       } 

     } 

どのようにして、交差点マトリックスにColladaジオメトリを含めることができますか?

答えて

0

これは、Colladaloaderの後に次のコードを追加してすべてのオブジェクトをプッシュすることで解決しました。私は同じ問題を抱えていた(私の場合は、6軸ロボットをインポートした後、各リンクは前のリンクの子オブジェクトだった)のでintersectObjects 2番目のパラメータを置くことによって、シーンに再帰的に実行されなければならない

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


... 

var intersects = raycaster.intersectObjects(ToIntersect); 
0

trueに、ドキュメントに記載されているように:

var intersects = raycaster.intersectObjects(scene.children, true); 
http://threejs.org/docs/#Reference/Core/Raycaster

あなたがにあなたのコードを変更してみてください