2013-04-23 64 views
5

我使用OBJLoader加載的模型,這裏是加載OBJ文件中的代碼:如何讓鼠標在從OBJLoader加載的obj文件上點擊位置?

 var loader = new THREE.OBJLoader(); 
     loader.load('obj/teeth/teeth4_5.obj', function(object) { 
      model = object; 
      scene.add(model); 
      objects.push(model); 
     }); 

而且我試圖用raycaster找到交集。我使用canvas.interactive_cubes示例(http://mrdoob.github.io/three.js/examples/canvas_interactive_cubes.html)在three.js中實現了我的代碼。這裏是找到交集的代碼:

function onDocumentMouseDown(event){ 
     event.preventDefault(); 
     var mouseX = (event.clientX/window.innerWidth)*2-1; 
     var mouseY = -(event.clientY /window.innerHeight)*2+1; 
     var vector = new THREE.Vector3(mouseX, mouseY, 0.5); 
     projector.unprojectVector(vector, camera); 
     var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize()); 
     var intersects = raycaster.intersectObjects(scene.children); 
     console.log(intersects[0].point); 
    } 

不幸的是,我沒能獲得在x,y,路口的Z座標,無論身在何處,我點擊,它總是顯示「類型錯誤:相交[0 ]未定義「。

我在這裏呆了好幾天。有人可以告訴我一種方法來獲得加載的obj文件的交集嗎?我感謝您的幫助。

回答

8

嘗試添加遞歸標誌,像這樣:

var intersects = raycaster.intersectObjects(objects, true); 

three.js所r.58

+0

WOW,它的工作原理...這是那麼容易。好像我問了一個愚蠢的問題。在一個大的obj文件上找到交點需要很長的時間。非常感謝您的回答! – user2309002 2013-04-23 04:17:52

+0

我已經在這上面花了2個小時。加',true'就行了。我從來沒有在我研究過的幾個例子中看到它。謝謝 ! – 2015-06-15 11:41:17

相關問題