Three.js R85Drei JS Raycasting - Finden Punkt am nächsten
Wenn Raycastings mit drei JS, eine Reihe von Punkten Cursor zurückgegeben wird, und ich möchte den Punkt finden, die am nächsten an der Cursor befindet. Der erste zurückgegebene Punkt scheint der Punkt zu sein, der der Kamera am nächsten ist.
Gibt es eine Möglichkeit, den Abstand zwischen der Cursorposition und einem Punkt zu finden?
Hier ist der Code, den ich jetzt mit diesem Recht zu debuggen:
var raygun = new THREE.Raycaster();
raygun.setFromCamera(mouse, camera);
var hits = raygun.intersectObjects([plotpoints]);
if (hits.length > 0) {
scope.remove(dotPlot);
scope.remove(dotPlot2);
// All points except the first one - Grey
dotGeo = new THREE.Geometry();
for (var i=1; i < hits.length; i++) {
dotGeo.vertices.push(plotpoints.geometry.vertices[hits[i].index]);
}
dotPlot = new THREE.Points(dotGeo, dotMat);
scope.add(dotPlot);
// First point - Orange
var geo2 = new THREE.Geometry();
geo2.vertices.push(plotpoints.geometry.vertices[hits[0].index]);
dotPlot2 = new THREE.Points(geo2, dotMat2);
scope.add(dotPlot2);
scope.render();
}
Und hier ist, was ich sehe:
Wie viele 'Vector3's Instanziieren Sie? Erstellen Sie einen und verwenden Sie ihn erneut, insbesondere wenn Sie diesen Code in einer engen Schleife aufrufen. – WestLangley
@WestLangley richtig, das ist nicht optimiert, aber es ist funktional. Ich komme später zurück und bearbeite es mit besserem Code. –