2014-12-30 6 views
0


모두 안녕하세요, (COLLADA 파일) 아이 때 마우스 이상.
Raycaster 메서드를 사용해 보았지만 작동하지 않습니다.
this 샘플입니다.
하지만 색상을 변경하거나 모델 하위 마우스를 가져 가면 강조 표시하고 싶습니다.COLLADA 3D 개체의 마우스 이벤트

이것은 내 코드입니다.

   var oLoader = new THREE.ColladaLoader(); 
       oLoader.load('model/sample.dae', function (collada) { 

        var object = collada.scene; 
        var skin = collada.skins[0]; 

        object.rotation.x = -Math.PI/2; 
        object.rotation.z = Math.PI/2; 
        object.position.x = 0; 
        object.position.y = 0; 
        object.position.z = 0; 
        object.scale.set(0.025, 0.025, 0.025); 
        object.updateMatrix(); 
        scene.add(object); 

수행 방법을 알려주십시오.
감사합니다.

답변

0

우연히도, 나는 마우스 이벤트가 필요한 프로젝트에서 작업하고 있으며 작은 개체를 코딩하여 사용하고 있습니다. 지금 당신이 가지고

document.addEventListener('click', function(event){ 
    var intersectObj = mouse.getIntersects(camera, scene.children, event)[0]; 
    if(window.console){ 
     console.log(intersectObj); 
    } 
    else{ 
     alert(intersectObj); 
    } 
}); 

:

var mouse = { 
    getIntersects: function(camera, sceneChildren, event){ 
     event = event || window.event; 

     var mouseX = (event.clientX/window.innerWidth) * 2 - 1; 
     var mouseY = -(event.clientY/window.innerHeight) * 2 + 1; 

     var vector = new THREE.Vector3(mouseX, mouseY, camera.near); 
      vector.unproject(camera); 

     var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize()); 

     var intersects = raycaster.intersectObjects(sceneChildren); 

     if (intersects.length > 0) { 
      //console.log(intersects); 
      return intersects; 
     } 
     return false; 
    }, 

    Position3D: function(sceneChildren){ 
     var intersects = mouse.getIntersects(sceneChildren); 
     return intersects[0].point 
    } 
} 

내가 여기 당신이 뭔가를 직접 코드 자체에이 객체를 사용하거나 참조로 사용하려는 경우 알고 있지만, 그나마 당신이 그것을 사용하는 방법 클릭 한 개체를 모두 정렬하면 함수를 시작할 수 있습니다. 가장 간단한 방법은 메쉬에 추가하는 것입니다. 그래서 :

var mesh = new THREE.Mesh(geometry, material); 
    mesh.click = function(){ 
     alert('object was clicked'); 
    } 
+0

답해 주셔서 감사합니다. – Michelle