Ich habe ein kleines Problem beim Übersetzen und Drehen meiner Kamera im 3D-Raum. In Direct3D9 ist eine Kamera definiert als Position, Blick und Achse (als 3D-Vektoren). Also habe ich die Rotation und Position der Kamera gespeichert, und wenn ich die Kamera für einen neuen Rahmen definiert habe, habe ich den Blick auf den Vektor und die obere Achse gedreht und die Position festgelegt. Bei der Übersetzung der Kamera nahm ich die Übersetzung, rotierte sie bei der Rotation und übersetzte die Position der Kamera und den Blick auf den Vektor. Aber nach einiger Zeit ordnen sich der Suchvektor und die neue Übersetzung nicht an, dh die Kamera bewegt sich nicht mehr vorwärts, wenn der Translationsvektor ein gerades Vielfaches des ursprünglichen Blickvektors ist, der vorwärts definiert. Ich kann nicht verstehen, warum dies geschieht - irgendwelche Vorschläge?Kamera im 3D-Raum drehen und übersetzen
1
A
Antwort
1
Konnten Sie Gimbal Lock erfahren? Das ist mir schon mal aufgefallen und so habe ich Vektoren entwertet und bin zu Quaternions gewechselt.
Verwandte Themen
- 1. Drehen und übersetzen
- 2. Kamera drehen in Matter.js
- 3. Soll ich zuerst übersetzen oder zuerst drehen?
- 4. webgl Kamera um die X-Achse drehen
- 5. HTML 5 Canvas - Drehen, skalieren, übersetzen und zeichnenBild
- 6. CSS-Animation drehen und übersetzen funktioniert nicht zusammen
- 7. iPad - Verwenden der Kamera - Bilder drehen
- 8. Eine Kamera um eine Achse drehen?
- 9. Three.js Kamera um ein Objekt drehen (das sich bewegen kann)
- 10. Android: Kamera Vorschauausrichtung im Hochformat
- 11. Drehen UIImageView im Uhrzeigersinn
- 12. Korrekter Weg, um nach dem Drehen in einer 3D-Welt zu übersetzen?
- 13. Android Kamera im Hintergrund
- 14. Drehen Sie die Kamera in eigene Koord mit gluLookat und glMultMatrixf
- 15. Three.js So verwenden Sie quaternion zum Drehen der Kamera
- 16. Lokalisierung und Sprache übersetzen
- 17. Automatisches Drehen im Fragment deaktivieren
- 18. Drehen Sie die Kamera um ein Objekt mit Three.js
- 19. openGL: Drehen Sie die ganze Szene oder "orbiting" die Kamera
- 20. Drehen Svg Element im Uhrzeigersinn
- 21. Drehen eines Objekts, das gleiche wie die Kamera-Dreh
- 22. Wie eine Kamera bekommen um Objekt zu drehen
- 23. Cäsium-WebGL-Kamera drehen, wie man die Rotation stoppt
- 24. Css übersetzen und Zentrierelemente
- 25. Individuelle Kamera-Filter im Android
- 26. Wie kann man eine Matrix in C# gleichzeitig drehen, skalieren und übersetzen?
- 27. Was ist die richtige Reihenfolge zum Drehen und Übersetzen eines CALayers mit CATransform3D
- 28. Kamera im opengl funktioniert nicht
- 29. Drehen Sie die Etiketten im Säulendiagramm d3.JS
- 30. Kamera nicht im Vollbild anzeigen
Ich glaube nicht. Die D3DX-Funktion zum Erstellen der Ansichtsmatrix benötigt nur D3DXVECTOR3s. Ich kann nicht mit Quaternions arbeiten. – Puppy
@DeadMG, können Sie eine D3DXVECTOR3 durch eine D3DXQUATERNION multiplizieren, wenn das * das * Problem ist. Es klingt definitiv ähnlich. –
@ Moo-Juice: Warum hat der LookAt Vektor dann nicht den gleichen Gimbal Lock wie der Translationsvektor? Ich habe auch keine Funktionen gefunden, um einen D3DXVECTOR3 mit einem D3DXQUATERNION- zu multiplizieren und auch die Überlastung des Operators überprüft. – Puppy