Three.js: Drehpunkt meines Objekts ändern?

Erstellt am 20. Feb. 2012  ·  10Kommentare  ·  Quelle: mrdoob/three.js

Ich bin sehr neu in diesem Bereich, also entschuldigen Sie, wenn es eine dumme Frage ist.

Mein Problem:

Ich möchte ein Prisma bauen (Polygon besteht aus 24 Ebenen). Ich habe also 24 Flugzeuge, jeder von ihnen ist 15 ° voneinander entfernt und gruppiert. Da es zu kompliziert ist, den x- und z-Abstand zu berechnen, ist es einfacher, wenn Sie beispielsweise den Drehpunkt unten rechts einstellen. Recht? aber wie? oder gibt es eine andere möglichkeit, einen kreis zu erstellen, der aus ebenen besteht?

Entschuldigung für mein schlechtes Englisch :-/

Question

Hilfreichster Kommentar

Sie haben zwei Möglichkeiten.

Versetzen Sie alle Eckpunkte in Ihrer Geometrie:

geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );

Erstellen Sie ein Objekt, das als Drehpunkt fungiert:

mesh.position.y = 10;

var pivot = new THREE.Object3D();
pivot.add( mesh );

scene.add( pivot );

Alle 10 Kommentare

Sie haben zwei Möglichkeiten.

Versetzen Sie alle Eckpunkte in Ihrer Geometrie:

geometry.applyMatrix( new THREE.Matrix4().setTranslation( 0, 10, 0 ) );

Erstellen Sie ein Objekt, das als Drehpunkt fungiert:

mesh.position.y = 10;

var pivot = new THREE.Object3D();
pivot.add( mesh );

scene.add( pivot );

Gibt es Vor- oder Nachteile bei diesen beiden Methoden?

geometr.applyMatrix (neue THREE.Matrix4 (). setTranslation (0, 10, 0));

ist jetzt

geometr.applyMatrix (neue THREE.Matrix4 (). makeTranslation (0, 10, 0));

https://github.com/mrdoob/three.js/commit/7f05ba167c522d1b9bac01677c2249b0f1b8c834

Die Sache applyMatrix makeTranslation funktioniert in meinem Fall nicht. Ich weiß nicht warum.
Das Pivot-Objekt funktioniert. und meiner Meinung nach ist es einfacher.
Hinweis:
benutze das

mesh.position.x = ###;
mesh.position.y = ###;
mesh.position.z = ###;

Anstatt von:

mesh.position.set(###,###,###);

Danke @placegraphichere , das hat geholfen.

So etwas sollte auch mit three.js v78 funktionieren, wenn Sie z. Drehen Sie stattdessen um die Kante Ihres Objekts, wenn dessen Mitte:

.js mesh.geometry.translate( -myObjectWidth/2, 0, 0 );

Beachten Sie jedoch, dass durch die Verwendung von geometry.translate() die Position aller Scheitelpunkte geändert wird. Dies ist eine gute Lösung, solange Sie nicht vorhaben, den Drehpunkt später erneut zu ändern.

Ich möchte meinen Netzursprung (3D-Box-Container) von der Mitte in die linke untere Ecke übersetzen. Wenn ich also eine andere kleine Netzbox in das Containernetz einfüge, sollte sie in der linken unteren Ecke platziert werden, anstatt in der Mitte.

mesh.geometry.translate (-myObjectWidth / 2, 0, 0);

Wenn ich dies verwende, ändert sich auch meine Netzposition

@imguccho bitte nutzen Sie das Forum für Hilfe.

Wie kann ich den Punkt für ArrowHelper übersetzen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen