Scenekit Pan 2D-Übersetzung in orthographische 3D nur horizontal

8

Ich habe ein bisschen mehr mathematisches Problem mit 3D-Programmierung und ich hoffe, Sie können mir helfen!

Ich versuche ein 3D-Spiel mit Scenekit mit einem isometrischen Winkel zu erstellen.

Dieser Code erstellt meine orthographische Kamera:

%Vor%

Jetzt möchte ich die Kamera mit einer Schwenkbewegung bewegen und ein Scroll-Gefühl erzeugen. Um dies zu ermöglichen, sollte sich die Kamera nicht vertikal, sondern nur horizontal bewegen. Der Touch-Standort auf dem Bildschirm und die nicht projizierte Position in der 3D-Welt sollten während der Bewegung gleich bleiben.

Ich habe darüber nachgedacht, die 2D-Übersetzung in 3D-Differenz zu berechnen und die vertikale Komponente zu ignorieren. Dieser Code funktioniert tatsächlich und erzeugt fast das gewünschte Ergebnis, aber die Geschwindigkeit ist nicht korrekt. Wenn ich schwenke, scheint die Kamera zu beschleunigen und reagiert nicht richtig:

%Vor%

Kennt jemand eine ausgeklügelte Art, eine Bildschirmübersetzung in eine horizontale 3D-Translation zu berechnen, ohne die vertikale Achse zu berücksichtigen?

Vielen Dank im Voraus:)

BEARBEITEN: Die Pfanne funktioniert jetzt für horizontale Übersetzung. Aber nicht für vertikal, weil ich die Differenz auf der z-Achse auf Null setze.

    
Techprimate Phil 07.12.2014, 19:18
quelle

2 Antworten

9

Ich habe meine eigene Lösung gefunden.!

Ich berechne einen Strahl am Startort der Geste (P1-P2) und einen Strahl am übersetzten Ort (Q1-Q2). Jetzt habe ich zwei Strahlen und ich lasse beide die XY-Ebene schneiden, um die Punkte P0 und Q0 zu erhalten

Die Differenz von P0 und Q0 ist die nicht projizierte Übersetzung.

Diese Technik sollte auch mit einer nicht orthogonalen Kamera funktionieren, aber ich habe das noch nicht getestet.

Es scheint mir, dass es funktioniert, aber wenn irgendjemand diese Annahme mathematisch bestätigen könnte, würde ich mich freuen, das zu lesen:)

Hier ist der Code:

%Vor%

    
Techprimate Phil 29.12.2014, 13:18
quelle
1

Ich habe die Gleichungen für das isometrische Schwenken berechnet, der Code ist unten.

%Vor%

Um die Skalierung zu korrigieren, müssen Sie die Bildschirmhöhe als Variable für orthographicScale verwenden. Die Skalierung, die ich hier verwendet habe, ist 30-fache Vergrößerung, beachten Sie, dass die 30 auch für die Konstante im obigen Code verwendet wird.

%Vor%     
user3204609 29.09.2016 02:41
quelle

Tags und Links