2013-04-23 3 views
5

geladen ich das Modell OBJLoader verwenden, hier ist der Code die OBJ-Datei zum Laden:Wie bekomme ich die Mausklickposition auf eine OBJ-Datei, die von OBJLoader geladen wurde?

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

Und ich versuche Raycaster zu verwenden, um die Kreuzung zu finden. Ich habe meinen Code aus dem canvas_interactive_cubes-Beispiel (http://mrdoob.github.io/three.js/examples/canvas_interactive_cubes.html) in three.js implementiert. Hier ist der Code die Kreuzung zu finden:

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); 
    } 

Leider bin ich nicht in der Lage, die x, y, z-Koordinaten der Kreuzung zu bekommen, egal wo ich geklickt, es zeigte immer „Typeerror: intersects [0 ] ist nicht definiert".

Ich bleibe hier für mehrere Tage stecken. Kann mir jemand einen Weg geben, die Schnittmenge in einer geladenen Obj-Datei zu finden? Ich schätze Ihre Hilfe.

Antwort

8

Versuchen Sie, die rekursive Flag wie so hinzufügen:

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

three.js r.58

+0

WOW, es funktioniert ... das ist so einfach. Scheint so, als hätte ich eine dumme Frage gestellt. Und es dauert lange, bis eine Kreuzung in einer großen obj-Datei gefunden wird. Vielen Dank für Ihre Antwort !! – user2309002

+0

Ich habe 2 Stunden damit verbracht. Add ', true' und es funktioniert. Ich habe es nie an mehreren Beispielen gesehen, die ich studiert habe. Vielen Dank ! –

Verwandte Themen