13.08.2013 Aufrufe

Entwicklung eines Flugsimulators basierend auf einem ...

Entwicklung eines Flugsimulators basierend auf einem ...

Entwicklung eines Flugsimulators basierend auf einem ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Kapitel 4. Umsetzung in eine Software<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

< f i l e name=" Scene . m a t e r i a l " /><br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Update-Skript<br />

Das Update-Script ist in der Sprache Lua verfasst. Der Simulator stellt dem Skript<br />

Funktionen bereit, um <strong>auf</strong> 3D-Objekte (über die PlaneElement) und simulationsrelevante<br />

Daten zuzugreifen. Mit CairoCanvas besteht zudem die Möglichkeit dynamisch <strong>auf</strong> eine<br />

Textur zu zeichnen. Hier ein Auszug <strong>eines</strong> solchen Skripts, das jedoch stark gekürzt<br />

ist. In diesem Beispiel wird das 3D-Objekt rudder (Seitenruder) um den Anstellwinkel<br />

rotiert.<br />

rudder = {}<br />

rudder . e = plane:getPlaneElement ( " rudder " )<br />

rudder . f = castForceWing ( ( plane:getForce ( " rudder " ) ) )<br />

function update ( timeSinceLastFrame )<br />

rudder . e:resetRotation ( )<br />

rudder . f:yaw ( rudder . f:getAngleDegree ( ) )<br />

end<br />

4.3.4 Recorder Module<br />

Mit der Zeit wollte ich meine Flugkünste aus anderer Perspektive sehen und beschloss<br />

das Programm um eine Aufnahmefunktion zu erweitern. Der grundlegende Gedanke ist,<br />

dass ich alle relevanten Informationen der Simulation abspeichere. Mein Anliegen war,<br />

dass möglichst wenig Daten gesammelt und abgespielt werden mussten, da ich im Sinn<br />

hatte, dieses Modul auch in Verbindung mit einer Multiplayerspielfunktion zu verwenden.<br />

In meiner Implementierung werden zunächst nur InputChannels gesammelt und beim<br />

Abspielen in das Modell injiziiert. Ich nenne diese Datensätze ein Update Record, da sie<br />

nicht den Status widerspiegeln, sondern nur seine Manipulation. Es ergab sich nun aber<br />

ein Problem: Die Wiedergabe <strong>auf</strong> <strong>einem</strong> anderen PC driftete ab. Das heisst, dass sie mit<br />

der Aufnahme nicht mehr übereinstimmt. Dies kommt daher, dass der Computer nicht<br />

mit der exakt gleichen Genauigkeit rechnen konnte. Selbst <strong>auf</strong> demselben PC liessen<br />

sich drifts feststellen, je nach Hintergrundlast in der sich der PC dabei befand. Darum<br />

<strong>Entwicklung</strong> <strong>eines</strong> <strong>Flugsimulators</strong> <strong>basierend</strong> <strong>auf</strong> <strong>einem</strong> physikalischen Modell 43

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!