2012-11-18 33 views
0

我正在使用THREE.js在我的頁面上顯示一些對象。我可以點擊對象,但我注意到無論點擊哪個對象,intersects[0].object.position總是返回x=0, y=0, z=0,而對象的實際位置無疑是不同的。THREE.js相交[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作爲有效的屬性。儘管存在交叉點[0] .point.x – ZedBee

+1

對不起,它確實是點 – Gero3

+0

@ Gero3 ..我在做if(intersects.length> 0)的目的是改變相交的對象位置。相交[0] .object.position.z = 50;現在我不知道如何在不點擊時跟蹤對象的原始位置,以便我可以在點擊另一個對象時將其他點擊的對象移動到相同的舊位置。任何想法? – ZedBee