Ich versuche, THREE.Raycaster zu verwenden, um eine HTML-Label anzuzeigen, wenn der Benutzer ein Objekt schweben. Es funktioniert gut, wenn ich THREE.Mesh verwende, aber mit THREE.Sprite sieht es so aus, dass es einen Raum gibt, der mit der Skalierung des Objekts zunimmt.THREE.Raycaster funktioniert nicht richtig mit skalierten THREE.Sprite
Der Erstellungsprozess ist für beide Szenarien identisch, ich ändere nur den Typ basierend auf USE_SPRITE Variable.
if (USE_SPRITE) {
// using SpriteMaterial/Sprite
m = new THREE.SpriteMaterial({ color: 0xff0000 });
o = new THREE.Sprite(m);
} else {
// using MeshBasicMaterial/Material
m = new THREE.MeshBasicMaterial({ color: 0xff0000 });
o = new THREE.Mesh(new THREE.PlaneGeometry(1, 1, 1), m);
}
https://plnkr.co/edit/J0HHFMpDB5INYLSCTWHG?p=preview
Ich bin nicht sicher, ob es ein Fehler mit THREE.Sprite ist oder wenn ich etwas falsch tue. Vielen Dank im Voraus.
three.js R73
Tipp: Sie müssen die Z-Komponente Ihres Sprites nicht skalieren. 'sprite.scale.set (s, s, 1)'. Das Gleiche gilt für Ihr Flugzeug. – WestLangley
danke für den Tipp. Ich habe die Demo aktualisiert =) – mauricio