Ich habe eine Hauptszene mit einer Kugel und einem anderen Unterfenster (unten rechts), wo ich die (x, y, z) Achse der Hauptszene gezeichnet habe.Three.js - Label auf AxisHelper withTextGeometry und Rotationsproblem
In diesem Unterfenster möchte ich die Bezeichnungen "X", "Y" und "Z" auf jeder Achse (genauer gesagt am Ende jedes AxisHelper) zeichnen. Ich weiß, wie man TextGeometry benutzt, aber das Problem ist, dass ich diese Labels nicht rotieren lassen kann, damit sie immer im Gesicht des Benutzers erscheinen.
Sie können das Problem auf dem [folgenden Link] [1] sehen: Label "X" ist relativ zur Achse fixiert und dreht sich mit der Kamera, so dass es nicht immer vor dem Benutzer ist.
Aus diesen beiden Links link1 und link2 habe ich versucht, hinzuzufügen (in meinem Beispiel habe ich versucht, mit nur "X" label):
function addLabelAxes() {
// Axes label
var loader = new THREE.FontLoader();
loader.load('js/helvetiker_regular.typeface.js', function (font) {
var textGeo1 = new THREE.TextGeometry('X', {
font: font,
size: 5,
height: 0.1,
bevelThickness: 0.1,
bevelSize: 0.1,
bevelEnabled: true,
});
var color = new THREE.Color();
color.setRGB(255, 255, 255);
textMaterial = new THREE.MeshBasicMaterial({ color: color });
var meshText1 = new THREE.Mesh(textGeo1, textMaterial);
// Position of axes extremities
var positionEndAxes = axes2.geometry.attributes.position;
var label1X = positionEndAxes.getX(0);
meshText1.position.x = label1X + axisLength;
meshText1.position.y = 0;
meshText1.position.z = 0;
// Rotation of "X" label
//meshText1.rotation = zoomCamera.rotation;
meshText1.lookAt(zoomCamera.position);
// Add meshText to zoomScene
zoomScene.add(meshText1);
});
}
zoomCamera
ein PerspectiveCamera
darstellt, die die Kamera von Subwindow ist (dh zoomScene
), füge ich hinzu TextGeometry zu zoomScene
by doing:
zoomScene.add(meshText1);
Könnte jemand sehen, was in meinem Code falsch? Ich frage mich, ob ich das "X" -Label auf sich selbst drehen lassen kann, dh das "X" -Label dreht sich wie eine Achse, aber eine selbst (lokale) Ausrichtung wird als Funktion des Theta-Winkels angewendet, so dass das Etikett immer im Gesicht gehalten wird Benutzer während der Kamerarotation?
Danke für Ihre Hilfe.
Verwenden Sie 'THREE.Sprite'. Siehe http://stackoverflow.com/a/35433819/1461008 – WestLangley
Danke, das ist genau das, was ich gesucht habe – youpilat13