2012-11-18 4 views
0

THREE.js를 사용하여 내 페이지에 일부 개체를 표시하고 있습니다. 개체를 클릭 할 수는 있지만 어떤 개체를 클릭해도 intersects[0].object.position은 항상 x=0, y=0, z=0을 반환하는 반면 개체의 실제 위치는 틀림 없음을 알았습니다.THREE.js intersects [0] .object.position은 항상 (0,0,0)을 반환합니다.

다음 코드를 검토하고 내가 뭘 잘못하고 있는지 논평 할 수 있습니까?

function onDocumentMouseDown(event) { 
    event.preventDefault(); 
    var vector = new THREE.Vector3((event.clientX/window.innerWidth)*2-1, -(event.clientY/window.innerHeight)*2+1, 0.5); 
    projector.unprojectVector(vector, camera); 
    var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize()); 
    var intersects = ray.intersectObjects(teeth, true); 
    if (intersects.length > 0) { 
    //not working 
    camera.position.x=intersects[0].object.position.x; 
    //not working 
    camera.position.y=intersects[0].object.postion.y; 
    //working 
    intersects[0].object.material.color.setHex(Math.random()*0xffffff); 
    } 
} 

답변

2

객체 위치 : 교차 [0] .object.position

인터 섹트 위치 : 교차 [0] .position

function onDocumentMouseDown(event) { 
    event.preventDefault(); 
    var vector = new THREE.Vector3((event.clientX/window.innerWidth)*2-1, -(event.clientY/window.innerHeight)*2+1, 0.5); 
    projector.unprojectVector(vector, camera); 
    var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize()); 
    var intersects = ray.intersectObjects(teeth, true); 
    if (intersects.length > 0) { 
    //not working 
    camera.position.x=intersects[0].point.x; 
    //not working 
    camera.position.y=intersects[0].point.y; 
    //working 
    intersects[0].object.material.color.setHex(Math.random()*0xffffff); 
    } 
} 
+1

내가 교차 [0] .position을 찾을 수 없습니다 .x를 유효한 등록 정보로 사용하십시오. 비록 intersects [0] .point.x가 있지만 – ZedBee

+1

미안하지만 실제로는 – Gero3

+0

@ Gero3입니다. if (intersects.length> 0)는 교차 된 오브젝트 위치도 변경하는 것입니다. intersects [0] .object.position.z = 50; 이제 클릭하지 않을 때 개체의 원래 위치를 추적하는 방법을 모르므로 다른 개체를 클릭하면 다른 클릭 한 개체를 이전 위치로 이동할 수 있습니다. 어떤 생각? – ZedBee

관련 문제