Was ich erreichen möchte, ist ein Laserstrahl, der 2 Punkte im Raum verbindet.ThreeJS Object 3d connect 2 Punkte
Ich dachte, dass vielleicht durch das Rendern einer lineGeometry
und das Anhängen von 6 auf der x-Achse gedrehten Ebenen den Trick machen, aber es scheint, dass es komplizierter ist. Diese
ist, wie ich den Laserstrahl erzeugen, so weit so gut
window.lazor = new THREE.Object3D();
var material = new THREE.MeshBasicMaterial({
blending : THREE.AdditiveBlending,
color : 0x4444aa,
side : THREE.DoubleSide,
depthWrite : false,
transparent : true
})
var geometry = new THREE.PlaneBufferGeometry(100, 0.1)
var nPlanes = 3;
for(var i = 0; i < nPlanes; i++){
var mesh = new THREE.Mesh(geometry, material)
mesh.rotation.x = i/nPlanes * Math.PI
lazor.add(mesh);
}
window.lazor.rotation.y = Math.PI/2
Was in ich suche ist an beiden Enden der object3D auf 2 Punkte (vec3) zu machen.
Liniengeometrie scheint den Trick zu machen (Länge wird immer gleich dem Abstand zwischen den 2 Punkten sein), durch Aktualisieren der zweiten Ecke zum Vector3
muss sie sich mit jedem Frame verbinden, aber ich bin nicht sicher was Ansatz sollte ich mit dem `Object3D 'machen (Ich bin mir nicht sicher, wie ich herausfinden soll, wo sich jedes Ende des Object3D befindet)
Tatsächlich zielen Kind Teil einer ist Gruppe, die leider nicht entfernt werden kann, da sie sich je nach der Zielposition des Spielers bewegen soll, dies soll Gleitkommafehler an riesigen Koordinaten beheben –
Denken Sie über meine Antwort für mehr als 5 Minuten nach, bevor Sie sie ablehnen. Das Ziel ist das Objekt, auf das der Laser zeigt. Außerdem hat three.js r85dev das Problem der großen Koordinaten gemildert. – WestLangley
Ich habe den Code implementiert und es geschafft, den Strahl genau dort auszurichten, wo ich es brauchte, indem ich die Matrixworld des Ziels erhielt. Wusste nicht über die Gleitkomma-Korrektur in R85 (was super ist). Aber alles funktioniert gut und glatt .. dachte, dass Vec3.lookAt (x, y, z) könnte eine teure Operation zu verwenden, aber bis jetzt funktioniert es wie ein Charme –