2015-09-03 107 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) { 
相关问题