Registriert: So Jun 12, 2016 13:05 Beiträge: 9
Programmiersprache: Lazarus 1.6.
Hallo,
wahrscheinlich wird jetzt jeder die Augen rollen und sich denken "Nein...nicht noch einer..."
Dank der Hilfe von Mathias bin ich aus den dunklen Spähren von depraceted OpenGl auferstanden und hantiere mit OGL 4.3 rum..
Ich steh mal wieder vor dem Problem was ich im alten OGL auch nicht wirklich lösen konnte. Ich versuch mir eine Kamera Klasse zu erstellen, welche diverese Kamera Modis hat. Zu Anfang würde mir eine FPS Kamera Steuerung reichen.
Bisher liegt meine View Matrix legdilich in der Identitätsmatrix vor. Ich behandel sämtliche Matrizen nicht in der OpenGL Variante, sondern so wie es im Mathebuch steht
Tutorials im Netz sind alle sehr C++ lastig und sind alle mit GLM verammelt. Gibts irgendwo nen Tutorial was man als Pascaler gebrauchen könnte als Anhalt..?
oder ist hier gar jemand bereit mich an die Hand zu nehmen und mir dabei zu helfen selbst eine zu schreiben?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wenn man Matrizen und Vektoren versteht ganz einfach. Ich nutze zwar auch GLM, aber eine simple Implementation einer (FPS)-Kamera (wie die für meine Vulkan-Beispiele) lässt sich auch ganz einfach ohne externe Mathelib nachbilden wenn man die grundlegenden Matrizen- und Vektorfunktionen implementiert hat:
Man benötigt: - 3 Rotationen (ein 3-Komponenten Vektor*) - Position (3 Komponenten, aka Translatioon) - Vorwärtsvektor der in Richtung der Kamerabewegung zeigt, damit man z.B. leicht auch Seitwärtsbewegungen implementieren kann
Die Funktionalität ist dann ganz einfach implementiert:
Rotationsvektoren z.B. mit der Maus manipulieren.
Für die Bewegung: Vorwärtsvektor berechnen:
Code:
camFront.x = -cos(rotation.x) * sin(rotation.y);
camFront.y = sin(rotation.x);
camFront.z = cos(rotation.x) * cos(rotation.y);
Diesen dann auf die Position addieren wenn man sich vorwärts bewegt:
Code:
position += camFront * moveSpeed;
Will man sich seitwärts bewegen, dann das Kreuzprodukt mit einem Vektor der zur Seite zeigt:
Code:
position += normalize(cross(camFront, vec3(0.0f, 1.0f, 0.0f))) * moveSpeed;
In wenigen Minuten implementiert. Weder schick, noch schnell, aber für die Anfänge ausreichend
(*)Im nächsten Schritt kann man für die Rotationen dann auf Quaternionen wechseln, um u.a. den Gimbal Lock zu vermeiden.
Wie Matrizen aufgebaut werden (Rotation, Skalierung, etc.) kann man z.B. hier nachlesen.
Wer was gedrucktes will, dem kann ich Essential Mathematics for Games and Interactive Applications empfehlen, dass steht hier in meinem Regal und erklärt häufig benötigte mathematische Dinge im 3D Bereich sehr schick
Mitglieder in diesem Forum: Bing [Bot] und 34 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.