Spieleprogrammierung mit Delphi und GLScene: 3D-Modelle laden

Aus Wikibooks

3D-Modelle laden[Bearbeiten]

Haben Sie nun Ihr 3D-Modell erstellt, wie im Beispiel ein kleines Auto, so wollen Sie es nun auch endlich in Ihrer Szene sehen. Bis jetzt war es in diesem Buch größten Teils Theorie, jetzt wollen wir endlich mit unserem Beispiel anfangen. Es geht im Prinzip nur darum: Wir bewegen uns durch eine 3D-Welt mit einem kleinen Auto. Den Rest sollten Sie für sich erstellen. Dieses Buch ist schließlich keine Anleitung, aus der man den Code nimmt um daraus dann das eigene Spiel zu machen, sondern ein Lehrbuch über GLScene. Ich gebe Ihnen also lediglich die Grundsteine, der Rest ist nicht weiter schwer.

Ihr Modell ist natürlich fertig. Es ist als .3ds im Programmordner abgespeichert? Sehr gut! Erstellen Sie ein GLFreeForm in Ihrer Szene, Sie finden es unter 'Mesh'. Wenn Ihr Modell dem Beispiel gleicht, skalieren Sie es bitte in X, Y und Z um 0,1. Stellen Sie PitchAngle und RollAngle auf 90°. Warum? Weil Blender ein anderes Koordinatensystem als GLScene hat.

Nun schreiben Sie ins OnCreate-Ereignis des Formulars folgende Zeile Code:

  GLFreeForm1.LoadFromFile(ExtractFilePath(Application.ExeName) + 'car1.3ds');

Sollte Ihr Objekt nicht car1.3ds heißen, ändern Sie es gegebenenfalls. Speichern Sie Ihr Projekt mit 'Alles Speichern' in denselben Ordner wie Ihr Modell. Drücken Sie F9, um es zu testen. Jetzt sollten Sie eigentlich Ihr Modell in der Szene wiedererkennen (natürlich müssen Sie die Kamera noch zu positionieren, dass Ihre Position nicht dieselbe wie die des Objektes ist; Und die gewohnten Schritte: der Kamera TargetObject und dem Scene-Viewer Camera zuweisen). So laden Sie Ihr Objekt, in der Praxis müssen wir unsere Szene etwas anders strukturieren:

GLDummyCube
  |
  |_ GLLightSource
  |
  |_ GLCamera
  |
  |_ GLFreeForm


Sie erstellen also einen GLDummyCube. Stellen Sie Scale in alle Richtungen auf 2.

Was bringt uns der DummyCube? Das soll folgende Grafik verdeutlichen:

Das hat den Grund, dass die Koordinaten derer Objekte, die dem DummyCube untergeordnet sind, relativ zu seinen eigenen Koordinaten sind. Genau deshalb gibt es den DummyCube. Das heißt, wir müssen immer den DummyCube bewegen, der Rest geschieht alleine.