2015-09-03 166 views
1

我有一個用THREE.CanvasRenderer()渲染的3D立方體,我試圖打開一個特定的網頁,取決於雙擊哪個面的多維數據集。但是,無論點擊哪張臉,都會打開相同的頁面。一些黑客調試(我不知道如何使用控制檯)顯示intersects [0] .faceIndex總是'11'。我怎樣才能得到它返回多維數據集的最近的臉。three.js raycaster.intersectObject()每次返回相同的faceIndex

這是我的js的部分處理這個;

document.addEventListener('dblclick', onDocumentMouseDblClick, false); 
 

 
function onDocumentMouseDblClick(event) { 
 

 
    event.preventDefault(); 
 

 
    mouse.x = (event.clientX/renderer.domElement.width) * 2 - 1; 
 
    mouse.y = -(event.clientY/renderer.domElement.height) * 2 + 1; 
 

 
    raycaster.setFromCamera(mouse, camera); 
 

 
    var intersects = raycaster.intersectObject(cube); 
 

 
    if (intersects.length > 0) { 
 
     if (intersects[0].faceIndex = 1 || 2) { 
 
     window.open("About.html", "_self") 
 
      //title.innerHTML = intersects[ 0 ].faceIndex; 
 
     } 
 
     if (intersects[0].faceIndex = 3 || 4) { 
 
     window.open("Mondrian.html", "_self") 
 
      //title.innerHTML = intersects[ 0 ].faceIndex; 
 
     } 
 
     if (intersects[0].faceIndex = 5 || 6) { 
 
     window.open("page3.html", "_self") 
 
      //title.innerHTML = intersects[ 0 ].faceIndex; 
 
     } 
 
     if (intersects[0].faceIndex = 7 || 8) { 
 
     window.open("page4.html", "_self") 
 
      //title.innerHTML = intersects[ 0 ].faceIndex; 
 
     } 
 
     if (intersects[0].faceIndex = 9 || 10) { 
 
     window.open("page5.html", "_self") 
 
      //title.innerHTML = intersects[ 0 ].faceIndex; 
 
     } 
 
     if (intersects[0].faceIndex = 11 || 12) { 
 
     window.open("page6.html", "_self") 
 
      //title.innerHTML = intersects[ 0 ].faceIndex; 
 
     }

我開始跟隨THREE.js interactive cubes example和讀取THREE.raycaster documentation揭示了十字路口應該由最近的距離進行排序。我已經閱讀了一些使用Vector3和SO的帖子,這些帖子或者不起作用,或者我誤解了它們。由於聲譽而無法鏈接它們。

+0

您可以隨時把鏈接在你的問題,有或無的聲譽...... –

+0

不超過兩個環節,沒有代表大於零 – dlseanan

+0

你不檢查平等,你在你的陳述中作出任務。 – gaitat

回答

0

最有可能的應該是:

if (intersects[0].faceIndex === 1 || intersects[0].faceIndex === 2) { 
相關問題