2016-08-06 25 views
0

Ich kann diesen Code verwenden, um die 3D-Position eines Mausklicks zu erhalten, aber wie man den Abstand zwischen zwei Mausklicks erhält. Bitte kann mir jemand helfen.Wie berechnet man den Abstand zwischen den beiden Mausklicks in three.js?

var vector = new THREE.Vector3(); 

vector.set(
    (event.clientX/window.innerWidth) * 2 - 1, 
    - (event.clientY/window.innerHeight) * 2 + 1, 
    0.5); 

vector.unproject(camera); 

var dir = vector.sub(camera.position).normalize(); 

var distance = - camera.position.z/dir.z; 

var pos = camera.position.clone().add(dir.multiplyScalar(distance)); 
+0

siehe http://threejs.org/docs/index.html?q=Vector#Reference/Math/Vector3 '.distanceTo (v)' – gaitat

+0

aber die Punkte sind keine, wo auf dem Bildschirm werden sie Mausklicks sein .wie man damit einhergeht ... auf dem Bildschirm habe ich nichts als Platz.und ein Mausklick zählt für den Startpunkt und der Klick zählt für den Endpunkt. Ich brauche Abstand zwischen den beiden. –

Antwort

2

Sie können nicht.

Sie können nicht einfach eine Bildschirmkoordinate (2D) zu Welt (3D) -Koordinaten mit einer Zauberformel unprojektieren.

Wenn Sie wirklich 3D-Koordinaten von Mausklicks benötigen, müssen Sie sicherstellen, dass diese Klicks mindestens eine Geometrie der Welt treffen und Sie einen Raytest durchführen, um genau herauszufinden, an welcher Stelle die Klicks auf Ihre Geometrien treffen.