ackerman geometrisi diplomarbeit

159
Ein 3-dimensionales Modell zur Simulation von Kraftfahrzeugen in Echtzeitanwendungen DIPLOMARBEIT zur Erlangung des akademischen Grades DIPLOMINGENIEUR in der Studienrichtung INFORMATIK Angefertigt an der Abteilung für Graphische und Parallele Datenverarbeitung des Instituts für Technische Informatik und Telematik Betreuung: o. Univ.-Prof. Dr. Jens Volkert Dipl.-Ing. Dr. Gerhard Kurka Eingereicht von: Stephan Gsöllpointner Linz, September 2002 JOHANNES KEPLER UNIVERSITÄT LINZ Netzwerk für Forschung, Lehre und Praxis Johannes Kepler Universität A-4040 Linz · Altenbergerstraße 69 · Internet: http://www.uni-linz.ac.at · DVR 0093696

Upload: buraq77

Post on 13-Jun-2015

593 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Ackerman Geometrisi Diplomarbeit

Ein 3-dimensionales Modell zur Simulation von Kraftfahrzeugen in Echtzeitanwendungen

DIPLOMARBEIT

zur Erlangung des akademischen Grades

DIPLOMINGENIEUR

in der Studienrichtung

INFORMATIK

Angefertigt an der Abteilung für Graphische und Parallele Datenverarbeitung des Instituts fürTechnische Informatik und Telematik

Betreuung:

o. Univ.-Prof. Dr. Jens VolkertDipl.-Ing. Dr. Gerhard Kurka

Eingereicht von:

Stephan Gsöllpointner

Linz, September 2002

JOHANNES KEPLERUNIVERSITÄT LINZ

Netzwerk für Forschung, Lehre und Praxis

Johannes Kepler UniversitätA-4040 Linz · Altenbergerstraße 69 · Internet: http://www.uni-linz.ac.at · DVR 0093696

Page 2: Ackerman Geometrisi Diplomarbeit

i

Kurzfassung

Die physikalische Modellierung beweglicher Objekte spielt in vielen Anwendungsgebie-ten eine wichtige Rolle. Im Maschinen- und Fahrzeugbau können durch die Simulationvon komplexen mechanischen Systemen Messdaten gewonnen, und dadurch Rück-schlüße auf das Laufzeitverhalten von Realsystemen gezogen werden. In der Simulationund in der Darstellung virtueller Welten wird durch eine angemessene physikalischeModellierung beim Benutzer ein Gefühl der Vertrautheit geschaffen: Die Szenenobjekteverhalten sich bei der Interaktion mit ihrer virtuellen Umgebung so, wie man es vonihnen in der Realität erwarten würde.

Ziel dieser Arbeit ist es, ein Modell für die Simulation eines Fahrzeuges zu finden, dasdurch sein realistisches, physikalisches Laufzeitverhalten überzeugt, ohne dabei denAnspruch auf eine technisch exakte Modellbildung zu erheben. Primäres Anwendungs-gebiet ist der Einsatz in Computerspielen. Es sind aber auch andere Anwendungsgebietefür das Fahrzeugmodell denkbar.Da in der Literatur nur sehr komplexe oder nur sehr triviale Modellierungsansätze fürFahrzeuge zu finden sind, habe ich versucht, bestehende Beschreibungen von Mehrkör-permodellen in mehreren Punkten zu vereinfachen. Das Ergebnis ist ein Modell in 14Freiheitsgraden. Neben der rein mechanischen Umsetzung des Fahrzeugkörpers, wirdaber auch auf die Modellierung des Reifen-Boden Kontaktes, auf die Modellierung desAntriebes, und auf die Findung geeigneter Simulationsparameter eingegangen.

Ein weiterer Aspekt der Arbeit ist die Visualisierung des Fahrzeuges und des umgeben-den Terrains. Es werden unterschiedliche Ansätze in der Terrainvisualisierung vorge-stellt. Besonderes Augenmerk erfährt dabei die Visualisierungsgeschwindigkeit: Aufheute üblicher Hardware (P3-800, 3D-Graphikkarte) sollen Frameraten von 50 Hz undmehr erzielt werden.

Page 3: Ackerman Geometrisi Diplomarbeit

ii

Abstract

Physical modelling of moving objects is a crucial task in many application areas. Thesimulation of the complex behaviour of mechanical systems is often an inevitable part ofthe whole construction process. Another example is the simulation of virtual environ-ments. To provide confidence in the simulation, the objectcs within the scene are expec-ted to behave in a realistic way. This goal can only be achieved by using an appropriatephysical modeling.

The primary objective of this work is to find a model for the simulation of a vehicle ableto convincingly simulate the dynamical behavior of the vehicle without the claim forphysical correctness. The system mainly aims on support for computer games, but canalso be used for other areas with similar requirements. Contrary to the literature, thiswork focuses on the simplification of multi-body systems by replacing them with a set ofmass-points. As a result we get a model that shows 14 degrees of freedom. In addition,apart from the purely mechanical conversion of the the vehicle body, this work deals alsowith the simulation of the tires and the identification of suitable simulation parametersfor the vehicle’s drive train.

A further aspect of the work is the visualization of the vehicle on a height-field basedfully textured terrain. Various approaches to terrain visualization appropriate for this pur-pose are described and evaluated. Special attention is paid to the achieveable renderingspeed. Taking into account commodity hardware (P3-800Mhz, 3D-Accelerator) the ter-rain engine aims on a minimum framerate of about 50 frames per second.

Page 4: Ackerman Geometrisi Diplomarbeit

iii

Danksagung

An dieser Stelle möchte ich all jenen danken, die mir durch ihre Unterstützung dasSchreiben dieser Diplomarbeit ermöglicht haben. Mein besonderer Dank geht an o.Univ.-Prof. Dr. Jens Volkert und an Dipl.-Ing. Dr. Gerhard Kurka für die Betreuung mei-ner Diplomarbeit.

Page 5: Ackerman Geometrisi Diplomarbeit

iv

Lebenslauf

Geboren am 12.10.1976 in Ried i. I.

1995: Abschluß des Bundesrealgymnasiums Ried

1995-1997: Colleg für Graphik Design (Kommunikationsdesign) in Linz

1997: Beginn des Informatik Studiums an der Johannes Kepler Universität in Linz

Page 6: Ackerman Geometrisi Diplomarbeit

v

Eidesstattliche Erklärung

Ich erkläre an Eides statt, dass ich die vorliegende Diplomarbeit selbstständig und ohnefremde Hilfe verfasst, andere als die angegebenen Quellen und Hilfsmittel nicht benutztbzw. die wörtlich oder sinngemäß entnommenen Stellen als solche kenntlich gemachthabe.

Linz, Oktober 2002 Gsöllpointner Stephan

Page 7: Ackerman Geometrisi Diplomarbeit

vi

Verwendete Formelzeichen

[–] = Reibkoeffizient

[–] = kinetischer Reibkoeffizient

[–] = statischer Reibkoeffizient

[Nm] = Drehmoment

[rad/s] = Winkelgeschwindigkeit

[m/ ] = Beschleunigung

[Ns/m] = Dämpferkonstante

[N] = statische Reibkraft

[N] = kinetische Reibkraft

[N] = Kraft

[–] = Trägheitstensor

[–] = Trägheitstensor des Starrkörpers in Normallage

[Ns] = Stoß

[N/m] = Federkonstante

[Ns/m] = Drehimpuls

[kg] = Masse

[Ns] = Impuls

[–] = Orientierung des Starrkörpers

[m/s] = Geschwindigkeit

[m] = Position

Für die erste Ableitung einer Größe verwende ich die Schreibweise , für die zweite

Ableitung die Schreibweise .

µµk

µs

τω

a s2

d

fs

fk

F

I

Ibody

J

k

L

m M,P

R

v

x

x x·

x··

Page 8: Ackerman Geometrisi Diplomarbeit

Inhaltsverzeichnis

1 Einführung 1

1.1 Motivation und Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Aufbau der Arbeit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.3 Koordinatensysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Physikalische Grundlagen 5

2.1 Diskret-kontinuierliche Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.1 Kontinuierliche Simulation von physikalischen Systemen. . . . . . . . . . . . 62.1.2 Integrationsverfahren nach Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2 Masse-Feder-Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 Drall (Impulsmoment) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.4 Starrkörperdynamik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4.1 Position und Orientierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4.2 Lineare und angulare Geschwindigkeit . . . . . . . . . . . . . . . . . . . . . . . . . 112.4.3 Kraft und Moment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4.4 Trägheitsmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4.5 Bewegungsgleichungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.4.6 Quaternions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.5 Verteilung der Auflagekräfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5.1 Herleitung der statischen Verteilung. . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5.2 Geometrische Interpretation und Anwendung . . . . . . . . . . . . . . . . . . . . 18

2.6 Übertragung der Horizontalkräfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.7 Stoßübertragung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7.1 Stoßberechnung für den Starrkörper . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.7.2 Kollisionsabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.8 Reibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

vii

Page 9: Ackerman Geometrisi Diplomarbeit

viii

3 Das Fahrzeugmodell 29

3.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.3 Kopplung der Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.1 Kraftübertragungszyklus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.3.2 Bodenkontakt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.3.3 Kollisionsabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.3.4 Starrkörper-Feder-Kopplung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.4 Rad-Straße-Verhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.4.1 Bodenhaftung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.4.2 Rollwiderstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.5 Lenkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.5.1 Ackerman-Lenkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.5.2 Lenkkräfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.6 Antrieb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.6.1 Drehmomentkurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.6.2 Getriebe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.6.3 Rückkopplung von Motor und Antriebsreifen . . . . . . . . . . . . . . . . . . . . 42

3.7 Bremse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.8 Simulationszyklus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.9 Physikalisches Modell und Geometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4 Visualisierung des Terrains 47

4.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.2 Quadtree-Verfahren nach Röttger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.3 Geometrical Mipmapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.3.1 Das Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.3.2 Repräsentation der Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.3.3 Erzeugung des Quadtrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.3.4 Auswahl der Detailstufe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.3.5 Realisierung von Detailstufen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.4 Texturierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.4.1 Texturkacheln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.4.2 Distanzbasierte Detailüberblendungen . . . . . . . . . . . . . . . . . . . . . . . . . . 614.4.3 Maskierungsverfahren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.4.4 Polygonale Repräsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.4.5 Polygonale Zuordnung mit Maskierung in den Übergängen . . . . . . . . . 624.4.6 Multitexturing: Überblendungsmechanismen. . . . . . . . . . . . . . . . . . . . . 63

Page 10: Ackerman Geometrisi Diplomarbeit

ix

5 Systemarchitektur 65

5.1 Konzeptuelle Überlegungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.2 Verwendete Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.2.1 Eindimensionale, gerichtete Größen. . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.2.2 Orientierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.2.3 Masseträgheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.3 Überblick über die verwendeten Klassen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.3.1 Implementierung des Fahrzeuges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.3.2 Graphikschnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.3.3 Terrainvisualisierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.4 Die Klassen im Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.4.1 Relevante Klassen für den Entwickler . . . . . . . . . . . . . . . . . . . . . . . . . . 695.4.2 Intern verwendete Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.4.3 Weitere Klassen und Include-Dateien. . . . . . . . . . . . . . . . . . . . . . . . . . . 73

6 Implementierungsaspekte 75

6.1 Physikalisches Fahrzeugmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.1.1 Kräfteberechnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.1.2 Stoßberechnungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776.1.3 Abstimmung der Radaufhängung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786.1.4 Berechnung der Teillastkurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806.1.5 Getriebeabstimmung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.1.6 Luftwiderstand und Rollwiderstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.1.7 Rückkopplung von Motor und Antriebsrädern. . . . . . . . . . . . . . . . . . . . 856.1.8 Bremse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.1.9 Lenkgeometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.1.10 Fahrzeugkontrollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.2 Graphik Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906.2.1 Matritzenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.2.2 Das DirectX Dateiformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.2.3 Beleuchtung und Nebel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

6.3 Terrain Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936.3.1 Repräsentation der Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936.3.2 Bestimmung des Höhenwertes für einen beliebigen Geländepunkt . . . . 946.3.3 Reifen-Boden Kollision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956.3.4 Initialisierung des Quadtrees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976.3.5 Der Render-Durchlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986.3.6 Texturierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996.3.7 Wahl der Parameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Page 11: Ackerman Geometrisi Diplomarbeit

x

6.4 Szenenaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

7 Laufzeitmessungen 103

7.1 Fall aus einem Meter Höhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

7.2 Beschleunigung auf der Geraden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

7.3 Kurvenverhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

7.4 Freie Fahrt im Gelände. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

A Quaternions 121

A.1 Rechenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122A.1.1 Addition und Subtraktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122A.1.2 Multiplikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

A.2 Umrechnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123A.2.1 Rotationsmatrix in Quaternion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123A.2.2 Quaternion in Rotationsmatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123A.2.3 Rotationsachse und -winkel in Quaternion . . . . . . . . . . . . . . . . . . . . . . 124A.2.4 Quaternion in Rotationsachse und -winkel . . . . . . . . . . . . . . . . . . . . . . 124

B Frustum Culling 125

C DirectX Render-Framework 129

C.1 Das Nachrichtenkonzept unter Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129C.1.1 Hauptnachrichtenschleife (Windows Message Loop) . . . . . . . . . . . . . 129C.1.2 Nachrichtenverarbeitung des Hauptfensters . . . . . . . . . . . . . . . . . . . . . 130

C.2 Einbindung der Graphikausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130C.2.1 Nachrichten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131C.2.2 Graphikausgabe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

D Blit Funktion 133

E Das Terrain Dateiformat 137

F Tastaturbelegung 139

Page 12: Ackerman Geometrisi Diplomarbeit

Abbildungsverzeichnis

1.1 Bezugskoordinatensysteme des Fahrzeuges. . . . . . . . . . . . . . . . . . . . . . . . 32.1 Kräftediagramm: 2-Weg-Federsystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Blockschaltbild für das Masse-Feder-System . . . . . . . . . . . . . . . . . . . . . . 92.3 Transformation eines Punktes vom Objektkoordinatensystem ins Weltkoor-

dinatensystem112.4 Geschwindigkeit des i-ten Partikels im Strarrkörper . . . . . . . . . . . . . . . . 132.5 Herleitung der vertikalen Kräfteverteilung über Momente . . . . . . . . . . . 182.6 Geometrische Interpretation der vertikalten Kräfteverteilung: Tragkraft und

Drehmoment192.7 Rückführung der Antriebs- und der Seitenkräfte auf den Schwerpunkt des

Starrkörpers202.8 Position der Starrkörper A und B vor dem Zeitpunkt der Kollision (links),

und zum Kollisionszeitpunkt (rechts)222.9 Annäherungsgeschwindigkeit der Starrkörper A und B (Punkt-Fläche-Kon-

takt)232.10 Anwendung des Stoßes auf die Körper A und B . . . . . . . . . . . . . . . . . . . 242.11 Reibkraft in der Kontaktfläche eines Quaders . . . . . . . . . . . . . . . . . . . . . 252.12 Zusammenhang zwischen horizontaler Kraft und Reibkraft . . . . . . . . . . 263.1 Frhrzeugmodell schematisch (Seitenansicht). . . . . . . . . . . . . . . . . . . . . . 313.2 Kräfteentwicklung durch Boden-Reifen-Kontakt . . . . . . . . . . . . . . . . . . 333.3 Kamm’scher Kreis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.4 Lenkprinzip nach Ackerman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.5 Aufspaltung des Geschwindigkeitsvektors am Reifen. . . . . . . . . . . . . . . 383.6 Beispiel für eine Drehmomentkurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.7 Skalierung der Drehmomentkurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.8 Simulationszyklus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.9 Verwendung des Starrkörpers im Fahrzeugmodell . . . . . . . . . . . . . . . . . 454.1 Gelände-Triangulierung unter Verwendung des Quadtree Algorithmus mit

Distanz-basiertem LOD494.2 Exemplarische Flächenaufteilung mit Hilfe des Quadtree-Algorithmus . 524.3 Höhenprofil in unterschiedlichen Detailstufen . . . . . . . . . . . . . . . . . . . . 544.4 Höhenfehler (durch Detailreduktion bedingt) . . . . . . . . . . . . . . . . . . . . . 544.5 Messung des Höhenfehlers in einem Polygon . . . . . . . . . . . . . . . . . . . . . 55

xi

Page 13: Ackerman Geometrisi Diplomarbeit

xii

4.6 Gitterstruktur eines Terrainblocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.7 Enstehung von Löchern in bei Detailübergängen . . . . . . . . . . . . . . . . . . 574.8 Realisierung der T-Verbindungen zwischen Terrainblöcken unterschiedli-

cher Auflösung584.9 Gelände-Triangulierung unter Verwendung des Geometrical Mipmapping

584.10 Zuordnung der Daten aus der Featuremap . . . . . . . . . . . . . . . . . . . . . . . . 604.11 Bestimmung des Übergangsbereiches zwischen den Landschaftsregionen.

624.12 Texturstufen unter DirectX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.1 UML Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686.1 Bestimmung des Kraftanteiles, der in die Radaufhängung überführt wird .

766.2 Aufspaltung der Gewichtskraft in Normalkraft und Hangabtriebskraft. . 766.3 Drei Formen eines gedämpften Schwingungsverlaufes . . . . . . . . . . . . . . 796.4 Skalierung der Vollastkurve am Beispiel eines Kurvenpunktes . . . . . . . 806.5 Berechnete Teillastkurven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.6 Vollastkurve bei unterschiedlichen Getriebeübersetzungen . . . . . . . . . . 836.7 Traktions- und Fahrtwiderstandskräfte . . . . . . . . . . . . . . . . . . . . . . . . . . 846.8 Bestimmung der Lenkwinkel nach Ackerman . . . . . . . . . . . . . . . . . . . . . 886.9 Eingriffsmöglichkeiten des Fahreres auf die Steuerung des Fahrzeuges. 896.10 Modellierung des von Gas und Kupplung beim Schaltvorgang . . . . . . . 896.11 Interpolation eines Höhenwertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956.12 Auswahl der Polygone für die Schnittberechnung mit dem Reifen . . . . . 966.13 Bestimmung der Laufrichtung des Reifens . . . . . . . . . . . . . . . . . . . . . . . 976.14 Zuordnung der Texturkoordinaten auf ein qudratisches Polygon . . . . . 1016.15 Szenengraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027.1 Starrkörpergeschwindigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047.2 Auflagekräfte in den Reifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047.3 Radaufhängung vorne links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.4 Radaufhängung vorne rechts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.5 Radaufhängung hinten links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.6 Radaufhängung hinten rechts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.7 Drehmomentkurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077.8 Antriebs- und Widerstandskräfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087.9 Fahrzeuggeschwindigkeit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087.10 Auflagekräfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097.11 Fahrzeug in Kurvenlage (Linkskurve) . . . . . . . . . . . . . . . . . . . . . . . . . . 1107.12 Fahrspur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117.13 Geschwindigkeitsmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117.14 Auflagekräfte in den Reifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127.15 Radaufhängung vorne links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137.16 Radaufhängung vorne rechts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1137.17 Radaufhängung hinten links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147.18 Radaufhängung hinten rechts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147.19 Fahrspur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157.20 Fahrzeug im Gelände (erste Rechtskurve) . . . . . . . . . . . . . . . . . . . . . . . 1167.21 Geschwindigkeitsmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

Page 14: Ackerman Geometrisi Diplomarbeit

xiii

7.22 Auflagekräfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177.23 Radaufhängung vorne links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187.24 Radaufhängung vorne rechts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187.25 Radaufhängung hinten links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197.26 Radaufhängung hinten rechts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119B.1 Mögliche Fehlentscheidung beim Frustum Culling . . . . . . . . . . . . . . . . 130D.1 Darstellung eines rechteckigen Bildes mit Hilfe der Blit-Funktion. . . . 137

Page 15: Ackerman Geometrisi Diplomarbeit

Kapitel 1

Einführung

1.1 Motivation und Zielsetzung

Die Simulation von physikalischen Vorgängen spielt in vielen Anwendungsgebieten einewichtige Rolle. Bei einigen technischen Berufen ist sie nicht mehr wegzudenken. ImMaschinen- und Fahrzeugbau können durch die Simulation von komplexen mechani-schen Systemen Messdaten gewonnen, und dadurch Rückschlüße auf das Laufzeitver-halten von Realsystemen gezogen werden.

Auch in der Unterhaltungsindustrie, insbesondere bei der Erstellung von Filmen undComputerspielen, wird dem Bedürfnis nach realistischer 3D-Graphik nicht nur in Formvon möglichst fotorealistischen Darstellungen genüge getan. In bewegten Szenen trägtzu einem großen Teil die Qualität einer Animation zum Realismus der Darstellung bei.Um möglichst realistische Bewegungsabläufe zu erzeugen, werden deshalb vielfach phy-sikalische Modelle verwendet. Vernachlässigt man die Gesetzte der Physik, so wirkendie Bewegungsabläufe oft künstlich und unecht.

Da ein physikalisches Modell in Abhängigkeit von seinem Detaillierungsgrad schnellsehr komplex werden kann, ist es sinnvoll, sich im Vorfeld genau zu überlegen, welcheAspekte für die Simluation von beweglichen Szenenobjekten relevant sind. Es stellensich folgende Fragen:

1. Durch welche externen Kräfte wird das Modell beeinflußt?

2. Welche Kräfte treten im inneren des Modelles auf und wie hoch ist ihr Einfluß auf dasLaufzeitverhalten des Systems?

Wiegt man den Einfluß des Detaillierungsgrades gegen die Auswirkungen auf das Lauf-zeitverhalten ab, so kann das Modell den Bedürfnissen und Anforderungen der Anwen-

1

Page 16: Ackerman Geometrisi Diplomarbeit

Aufbau der Arbeit 2

dung möglichst gut angepasst werden. Im Speziellen bei Echtzeitanwendungen wirddadurch kostbare Rechenzeit eingespart.

Im Rahmen der hier vorliegenden Arbeit wird ein physikalisches Modell beschrieben,das für die Echtzeitsimulation von Fahrzeugen verwendet werden kann. Als Anwen-dungsgebiet ist der Einsatz in Computerspielen und vergleichbaren Anwendungen vor-gesehen. Dh., bei der Umstezung des Modells steht nicht so sehr die technisch exakteModelierung im Vordergrund, als weitmehr eine möglichst gute Annäherung an dasRealverhalten eines Fahrzeuges. Das Ergebnis ist ein Modell in 14 Freiheitsgraden, dasin erster Linie durch sein Laufzeitverhalten überzeugen soll. Neben der rein mechani-schen Umsetzung des Fahrzeugkörpers, wird zudem auf die Modellierung des Reifen-Boden Kontaktes eingegangen, auf die Modellierung des Antriebes, und auf die Findunggeeigneter Simulations-parameter.

Ein weiterer Aspekt der Arbeit ist die Visualisierung des Fahrzeuges und des umgeben-den Terrains. Es werden unterschiedliche Ansätze in der Terrainvisualisierung vorge-stellt. Besonderes Augenmerk erfährt dabei die Visualisierungsgeschwindigkeit: Aufheute üblicher Hardware (P3-800, 3D-Graphikkarte) sollen Frameraten von 50 Hz undmehr erzielt werden. Die Graphikausgabe basiert auf der Schnitstelle DirectX 8.1[DX8 00].

1.2 Aufbau der Arbeit

In den Kapiteln werden folgende Themen besprochen:

• Kapitel 2, „Physikalische Grundlagen“, stellt die physikalischen und mathematischenModelle vor, auf denen die Umsetzung des Fahrzeugmodelles beruht. Außerdem wer-den wichtige Begriffe erklärt, die im Zusammenhang mit physikalischen Simulatio-nen gebräuchlich sind.

• Kapitel 3, „Das Fahrzeugmodell“, beschreibt den Aufbau des Fahrzeuges und seinerKomponenten. Dazu werden die in Kapitel 2 vorgestellten Konzepte herangezogen.Zusätzlich wird auf die Modellierung des Reifen-Boden-Kontaktes, auf die Modellie-rung des Antriebes, und auf die Übertragung von Kräften und Stößen zwischen denKomponenten eingegangen. Der Simulationszyklus wird erläutert.

• Kapitel 4, „Visualisierung des Terrains“, beschäftigt sich mit der Darstellung derLandschaft, die als Umgebung für das Fahrzeug dienen soll. Dabei wird ein Visuali-sierungsverfahren näher vorgestellt. Weitere Ansätze in der Triangulierung und in derTexturierung werden kurz beschrieben.

• Kapitel 5, „Systemarchitektur“, gibt einen Überblick über die vorliegende Implemen-tierung. Es handelt sich dabei im Wesentlichen um eine Auflistung der Klassen, undeine Beschreibung von deren Funktionalität. Einleitend wird auf allgemeine Design-kriterien eingegangen.

Page 17: Ackerman Geometrisi Diplomarbeit

3 Einführung

• Kapitel 6, „Implementierungsaspekte“, behandelt wichtige Aspekte in der Umsetzungder Simulation. Gemeint sind jene Aspekte, die für die Umsetzung des Fahrzeugmo-delles relevant sind, aber auch solche, die zum Verständnis des Quellcodes beitragensollen.

• Kapitel 7, „Laufzeitmessungen“, präsentiert die Ergebnisse, die in der Simulationerzielt werden konnten. Es wurden jene Daten ausgewertet, die dem Modell zur Lauf-zeit entnommen und aufgezeichnet wurden.

1.3 Koordinatensysteme

Für die Berechnung und Zuführung von Kräften werden drei unterschiedliche Koordina-tensysteme betrachtet:

1. Das Weltkoordinatensystem

2. Das Objektkoordinatensystem des Fahrzeuges

3. Die Objektkoordinatensysteme der Räder

Wird in den folgenden Kapiteln von Longitudinal- oder Lateralkräften gesprochen, sobeziehen sich diese auf das jeweilige Koordinatensystem. Die Longitudinalkräfte derReifen sind in X-Richtung des Objektkoordinatensystems „Reifen“ abzutragen. Ist die

Abbildung 1.1: Bezugskoordinatensysteme des Fahrzeuges

Page 18: Ackerman Geometrisi Diplomarbeit

Koordinatensysteme 4

Rede von Lateralkräften auf das Fahrzeug, so sind jene Kräfte gemeint, die in X-Rich-tung des Objektkoordinatensystems „Fahrzeug“ verlaufen (siehe Abb. 1.1).

Die Y-Achse verläuft normal zur X- und zur Z-Achse. Positive Werte werden „oberhalb“der XZ-Ebene aufgetragen.

Page 19: Ackerman Geometrisi Diplomarbeit

Kapitel 2

Physikalische Grundlagen

In weiterer Folge wird an manchen Stellen von der Kinematik oder von der Kinetikgesprochen. Deshalb möchte ich dem Kapitel folgende Begriffsdefinitionen voranstellen.Sie wurden aus [Dubb 90] entnommen.

Kinematik (Kinematics)

Die Kinematik ist die Lehre von der geometrischen und analytischen Beschreibung derBewegungszustände von Punkten und Körpern. Sie berücksichtigt nicht die Kräfte undMomente als Ursachen für die Bewegung.

Kinetik (Dynamics)

Die Kinetik untersucht die Bewegung von Massepunkten, Massepunktsystemen, Kör-pern und Körpersystemen als Folge der auf sie wirkenden Kräfte und Momente unterBerücksichtigung der Gesetze der Kinematik

2.1 Diskret-kontinuierliche Simulation

Unter kontinuierlicher Simulation versteht man die Nachbildung und schrittweiseBerechnung von kontinuierlichen Prozessen durch Systeme von Differentialgleichungen.Um die Kinetik eines Fahrzeuges nachzubilden, müssen Differntialgleichungen gefun-den werden, die das Verhalten von Massekörper, Federelementen, Dämpfern und Rädernbeschreiben. Die Mechanik bietet hierfür eine Reihe von mathematischen Gleichungen.In Abschnitt 2.2 bis Abschnitt 2.4 wird darauf näher eingegangen. Außerdem wird eingeeignetes numerisches Integrationsverfahren benötigt, um die Zustandsänderung desSystems in Abhängigkeit von der Zeit beschreiben zu können. Der Systemzustand wird

5

Page 20: Ackerman Geometrisi Diplomarbeit

Diskret-kontinuierliche Simulation 6

durch schrittweise Integration der abgeleiteten Systemgrößen über die Simulationszeitbestimmt.

Da der kontinuierliche Prozess von diskreten Ereignissen unterbrochen werden kann,spricht man von einer kombiniert diskret-kontinuierlichen Simulation. Die unterbrechen-den Ereignisse nennt man Kollisionen. Durch das Auftreten von Kollisionen können sichdie Simulationsvariable sprunghaft ändern und die Integration der Systemgrößen muß abdiesem Zeitpunkt neu angesetzt werden. Das passiert dann, wenn Stöße auf Karosserieoder Räder übertragen werden. Die eigentliche Simulation liegt allerdings in derBeschreibung der kontinuierlichen Prozesse. Durch das Eintreten eines Ereignissesändern sich nur die Zustandsgrößen innerhalb des Systems. Auf die Berechnung von Stö-ßen und deren Auswirkung auf die Kontinuität der Simulation wird in Abschnitt 2.7näher eingegangen. Vorerst ist es notwendig, die Grundlagen der kontinuierlichen Simu-lation zu erläutern.

2.1.1 Kontinuierliche Simulation von physikalischen Systemen

In physikalischen Systemen werden Objekte durch kennzeichnende physikalische Grö-ßen wie Geschwindigkeit, Beschleunigung, Energie, Impuls, usw. beschrieben. Manchedieser Größen sind mittels Gleichung aus den bekannten Werten anderer Größen unmit-telbar errechenbar – man nennt solche Größen funktionale Größen. Andere Größen las-sen sich durch Hinzukommen eines kleinen Teilbetrages zu ihrem aktuellen Wert inner-halb eines gewissen Zeitintervalls ermitteln – solche Größen nennt man Zustandsgrößen.Ziel der kontinuierlichen Simulation ist es, den Funktionsverlauf der veränderlichenZustandsgrößen über die Zeit möglichst exakt zu beschreiben. Sie werden durch Ände-rungsgrößen (wie beispielsweise durch die Erdbeschleunigung) beeinflußt. [Gold 99]

Da der Funktionsverlauf nur an bestimmten Stützpunkten exakt gegeben ist, muß er inden dazwischenliegenden Zeitspannen durch eine Funktion angenähert werden. DieseFunktion erlaubt es, kontinuierlich über die Systemgrößen zu integrieren und damit denZustand des Systems, ausgehend von einem definierten Startzustand, für jeden Folgezeit-punkt zu beschreiben. Die Änderungsgrößen (äußere und innere Kräfe), auf denen dieVeränderung des Systemzustandes basiert, werden jeweils für einen Zeitschritt konstantangenommen. Zumeist lassen sie sich nicht genauer bestimmten.

2.1.2 Integrationsverfahren nach Euler

Das einfachste numerische Integrationsverfahren ist das Euler-Verfahren. Dabei wird,von den vorhandenen Startwerten ausgehend, mit Hilfe der bekannten zeitlichen Verzö-gerung über ein hinreichend kleines Zeitintervall linear hochgerechnet [Gold 99]. Soerhält man neue Werte für die Systemgrößen. Diese neuen Werte sind zwar nur Näherun-gen. Bei ausreichend kleiner Schrittweite liegen sie jedoch sehr nahe an den Werten desnachgebildeten Realsystems.

Page 21: Ackerman Geometrisi Diplomarbeit

7 Physikalische Grundlagen

Beispiel:

Einem Partikel mit Masse m, Position x(t) und Geschwindigkeit v(t) wird eine Kraft F(t)zugeführt. Das bewirkt eine Beschleunigung des Partikels von a(t) = F(t) / m. In Abhän-gigkeit von der Geschwindigkeit v(t) und der Beschleunigung a(t) ist die Geschwindig-keit des Partikels zum Simultaionszeitpunkt exakt durch die Gleichung (2.1)bestimmt. Ebenso läßt sich die Position des Partikels zum Zeitpunkt durch dieGleichung (2.2) ausdrücken.

Da der Funktionsverlauf von a(t) über den Simulationszeitschritt ist nicht bekannt ist,lassen sich diese Integrale meistens nicht exakt bestimmen. Der Wert von a(t) ist ledig-lich im Simulationszeitpunkt t (und in den zuvor berechneten Stützpunkten) bekannt.Ziel des Integrationsverfahrens ist es, den „realen“ Verlauf von a(t) möglichst gut anzu-nähern. Dazu gibt es einige numerische Verfahren. Das einfachste davon ist das Euler-Verfahren. Dabei wird ein durch eine Differentialgleichung gegebenes Modell durch eineDifferenzengleichung angenähert. Im Grunde bedeutet das nichts anderes, als daß derVerlauf von a(t) linear interpoliert wird. Siehe Gleichungen (2.3) und (2.4).

Die Qualität der Simulationsergebnisse hängt vom Modell und von der gewähltenSchrittweite ab.

t ∆t+t ∆t+

v t t∆+( ) v t( ) a t( ) td

t

t t∆+

∫+= (2.1)

x t t∆+( ) x t( ) v t( ) td

t

t t∆+

∫+= (2.2)

∆t

v t t∆+( ) v t( )a t( ) a t t∆+( ) a t( )–

2-------------------------------------+

∆t------------------------------------------------------+= (2.3)

x t t∆+( ) x t( )v t( ) v t t∆+( ) v t( )–

2------------------------------------+

∆t-----------------------------------------------------+= (2.4)

∆t

Page 22: Ackerman Geometrisi Diplomarbeit

Masse-Feder-Systeme 8

2.2 Masse-Feder-Systeme

Für die Radaufhängungen des Fahrzeuges werden Masse-Feder-Systeme benötigt. Diesebestehen aus einem Massepunkt und einer Feder-Dämpfer-Einheit. Ein weiteres Feder-element befindet sich zwischen Radaufhängung und Straße (siehe Abb. 2.1). Die Feder-kraft F ergibt sich durch Multiplikation der Federkonstante k mit der Auslenkung derFeder x, . Der Dämpfer wird durch die Gleichung beschrieben,wobei der Dämpfungskoeffizient d die Stärke der Dämpfung angibt. Auf die Masse inder Position x – ich nenne sie M – wirken folgende Kräfte:

1. Erdanziehungskraft (Gravitation) – Die Gravitationskraft F ist gleich dem Produkt

aus Masse m und der Erdbeschleunigung g, .

2. Federkraft

3. Dämpferkraft

Aus den Kräften lassen sich mit Hilfe des d’Alembertschen Prinzips die Systemglei-chungen aufstellen. Das Prinzip von d’Alembert [StSG 88] besagt, daß die äußerenKräfte und die Trägheitskraft (negative Massebeschleunigung) in einem Massepunkteinen Gleichgewichtszustand bilden. Die Summe der im Punkt M wirkenden Kräfte kanngleich Null gesetzt werden. Das führt zu der Gleichung (2.5). bezeichnet die Feder-kraft aus dem Reifen.

F k x⋅–= F d v⋅–=

F m g⋅=

Abbildung 2.1: Kräftediagramm: 2-Weg-Federsystem

Fkr

md

2x

dt2

--------- m g⋅( ) k ∆x⋅( ) dd∆xdt

----------⋅ Fkr–+ +–= (2.5)

Page 23: Ackerman Geometrisi Diplomarbeit

9 Physikalische Grundlagen

Durch Umformung (Division durch die Masse) erhält man die Beschleunigung des Mas-sepunktes. Das Integral der Beschleunigung über die Zeit ergibt die Geschwindigkeit.Das Integral der Geschwindigkeit über die Zeit ergibt die Auslenkung des Punktes.

In dem Blockschaltbild (siehe Abb. 2.2) läßt sich die Rückkopplung des Systems durchdie Positionsdifferenz und die Geschwindigkeitsdifferenz zwischen Massepunkt undBefestigungspunkt erkennen.

2.3 Drall (Impulsmoment)

Der Drehimpuls eines Reifens ist durch die Winkelgeschwindigkeit und das Träg-heitsmoment I charakterisiert. Siehe Gleichung (2.6). Für den Autoreifen kann I durch

genähert werden. m ist die Masse des Reifens, r sein Radius. Dieser Aus-druck beschreibt die Masseträgheit eines Zylinders mit gleicher Masseverteilung (kon-stante Dichte in jedem Punkt des Zylinders). In Gleichung (2.7) wurde I durch den ent-sprechenden Ausdruck ersetzt.

Das Anlegen eines Momentes bewirkt eine Änderung im Drall. Der Zusammenhang zwi-schen dem Moment und dem Drehimpuls ist wie folgt:

Abbildung 2.2: Blockschaltbild für das Masse-Feder-System

ω

1 2⁄ m r2⋅ ⋅

L I ω⋅= (2.6)

L12--- m r

2 ω⋅ ⋅ ⋅= (2.7)

Page 24: Ackerman Geometrisi Diplomarbeit

Starrkörperdynamik 10

Die Ableitung von L nach der Zeit entspricht dem Moment.

2.4 Starrkörperdynamik

Unter einem Starrkörper versteht man einen Körper, der eine räumliche Ausdehnungbesitzt aber nicht deformierbar ist. Er wird in dem später vorgestellten Automodell fürdie Beschreibung des „Fahrzeugkörpers“ verwendet.

In diesem Abschnitt möchte ich grob auf die Konzepte der Starrkörperdynamik einge-hen. Die Beschreibungen bauen auf den Unterlagen und auf den Skizzen aus [BWAK 99]auf.

2.4.1 Position und Orientierung

Die geometrische Beschreibung des Körpers erfolgt in einem relativ zum Körper fixgelagerten Koordinatensystem, dem Objektkoordinatensystem. Innerhalb dieses Koordi-natensystems behalten alle nicht beweglichen Teile ihre Lage und Orientierung über dieSimulationszeit hinweg bei. Was sich im Laufe der Simulation ändert, ist die Lage desKörpers innerhalb des Weltkoordinatensystems. Um Position und Orientierung zumSimulationszeitpunkt t zu beschreiben, werden der Positionsvektor x(t) und die Rotati-onsmatrix R(t) verwendet. Als Bezugspunkt für Rotation und Translation dient derSchwerpunkt des Körpers. Da sich die meisten Starrkörper-Berechnungen damit wesent-lich vereinfachen lassen, wird der Schwerpunkt im Nullpunkt des Objektkoordinatensy-stemes angenommen.

Um die Position eines Punktes von Objektkoordinaten in Weltkoordinaten zu transfor-mieren, wird die Gleichung (2.9) verwendet (siehe dazu auch Abb. 2.3). Die Rotations-matrix R(t) gibt die Orientierung des Körpers an, x(t) seine Position. ist ein Punktinnerhalb des Objektkoordinatensystems.

Aus der Rotationsmatrix R(t) läßt sich ein sehr nützlicher Zusammenhang zwischenObjektkoordinatensystem und Weltkoordinatensystem entnehmen: Die Spaltenvektorender Rotationsmatrix (2.10) entsprechen den vom Objektkoordinatensystem ins Weltkoor-dinatensystem transformierten Koordinatenachsen des Starrkörpers. Der erste Spalten-

L t t∆+( ) L t( ) τ t( ) td

t

t ∆t+

∫+= (2.8)

p0

p t( ) R t( ) p0⋅ x t( )+= (2.9)

Page 25: Ackerman Geometrisi Diplomarbeit

11 Physikalische Grundlagen

vektor verläuft in Richtung der transformierten x-Achse (x’), der zweite Spaltenvektor inRichtung der transformierten y-Achse (y’) und der dritte Spaltenvektor in Richtung dertransformierten z-Achse (z’). Diese Achsen werden in Abb. 2.3 dargestellt.

2.4.2 Lineare und angulare Geschwindigkeit

Unter linearer und angularer Geschwindigkeit versteht man die Änderung von Positionund Orientierung des Körpers mit der Zeit. Die lineare Geschwindigkeit beschreibt eineTranslation des Körpers und wird wie folgt definiert:

Die angulare Geschwindigkeit beschreibt die Änderung der Orientierung, . DieRotation wird um den Masseschwerpunkt des Körpers durchgeführt. (Ansonsten würdesich der Schwerpunkt selbst bewegen). Die Rotationsachse verläuft immer durch denKoordinatenursprung.

R t( )rxx ryx rzx

rxy ryy rzy

rxz ryz rzz

= (2.10)

Abbildung 2.3: Transformation eines Punktes vom Objektkoordinatensystem ins Weltkoordinatensystem

v t( ) ddt----- x t( ) x· t( )= = (2.11)

R· t( )

Page 26: Ackerman Geometrisi Diplomarbeit

Starrkörperdynamik 12

Die Rotation des Körpers ist durch den Vektor gegeben. Die Richtung von liefert die Richtung der Rotationsachse. Die Länge des Vektors gibt seine Winkelge-

schwindigkeit an. Für die Simulation ist der Zusammenhang zwischen und gesucht. Er wird durch die Gleichungen (2.12) beschrieben.

* bezeichnet eine Operation auf den Vektor . Diese Operation ist in (2.13) definiert.Bei gegebenem a erhält man durch Anwendung von * die folgende Matrix:

Löst man Gleichung (2.12) auf, so erkennt man, daß es sich dabei um die Bildung desKreuzproduktes von mit den drei Spaltenvektoren aus R(t) handelt. Die drei Ergeb-

nisvektoren bilden die Spalten der Matrix .

2.4.2.1 Geschwindigkeit eines Partikels im Starrkörper

Baraff et al. [BWAK 99] verwendet für die Herleitung einiger Gleichungen ein konzep-tuelles Modell, nachdem man sich einen Starrkörper aus vielen einzelnen, dicht gepack-ten Partikeln vorstellen kann. Für die Berechnung von Stößen ist es wichtig, dieGeschwindigkeit eines dieser Partikel berechnen zu können. Die Position des i-ten Parti-kels im Starrkörper wird als bezeichnet. Sie ist in Weltkoordinaten gegeben. DieVerwendung von Weltkoordinaten liegt hier nahe, da die Geschwindigkeitsberechnungenmeist auf Kollisionen zurückzuführen sind. Diese werden üblicherweise in Weltkoordi-naten berechnet. Die Geschwindigkeit des Partikels wird durch Gleichgung (2.14)beschrieben.

Man beachte, daß die Geschwindigkeit in zwei Komponenten aufgespalten ist: einelineare Komponente v(t) und eine angulare Komponente . Siehedazu auch Abb. 2.4.

ω t( ) ω t( )

ω t( ) R· t( )

R· t( ) ω t( )* R t( )⋅= (2.12)

ω t( )

a

ax

ay

az

a*⇒0 az– ay

az 0 ax–

ay– ax 0

= = (2.13)

ω t( )R· t( )

ri t( )

ri t( )

r· i t( ) ω t( ) ri t( ) x t( )–( )× v t( )+= (2.14)

ω t( ) ri t( ) x t( )–( )×

Page 27: Ackerman Geometrisi Diplomarbeit

13 Physikalische Grundlagen

2.4.3 Kraft und Moment

Das im vorangegangenen Abschnitt beschriebene Partikelmodell läßt sich auch für dieBerechnung der Kräfte verwenden, die auf den Schwerpunkt des Körper wirken. Ist derKörper Feldkräften ausgesetzt (wie z.B. Gravitation oder Wind), so wirken diese Kräftezu gleichen Maßen auf alle Partikel des Körpers. Greift die Kraft in einem bestimmtenPunkt des Körpers an, so wird die Kraft auf ein einziges Partikel ausgeübt. Sei dieKraft, die zum Zeitpunkt t auf das i-te Partikel einwirkt, so kann das externe Moment aufdieses Partikel mit Hilfe der Gleichung (2.15) bestimmt werden. Das Moment ist vonvon der Position des Partikels relativ zum Masseschwerpunkt x(t) abhängig.

Das gesamte äußere Moment ist gleich der Summe der Momente auf die Partikel. Ebensoist die gesamte äußere Kraft auf den Körper gleich der Summe aller Kräfte, die auf diePartikel des Körpers ausgeübt werden. Siehe dazu Gleichungen (2.16) und (2.17). Wäh-rend F(t) keinerlei Information darüber enthält, an welcher Stelle eine Kraft auf den Kör-per ausgeübt wird, gibt das Moment Aufschluß über die Verteilung der Kräfte überden Körper.

Abbildung 2.4: Geschwindigkeit des i-ten Partikels im Strarrkörper

Fi t( )

ri t( )

τ i t( ) ri t( ) x t( )–( ) Fi t( )×= (2.15)

τ t( )

F t( ) Fi t( )∑= (2.16)

Page 28: Ackerman Geometrisi Diplomarbeit

Starrkörperdynamik 14

Für die Simulation bedeutet das, daß alle angreifende Feldkräfte aufsummiert werdenkönnen. Ebenso die Momente, die aus den Kräften in den Angriffspunkten resultieren.Feldkräfte wie die Gravitation bewirken keinen Drall. Sie wirken direkt auf den Masse-schwerpunkt des Körpers.

In dieser Betrachtung von [BWAK 99] wird allerdings eines vernachlässigt: Währenddas i-te Partikel die gesamte Kraft zugeführt bekommt, kann auf den Schwerpunkt nurein bestimmter Anteil der Kraft übertragen werden. Dieser Anteil ist vom Angriffspunktund von der Richtung der einwirkenden Kraft abhängig. Verläuft der Kraftvektor durchden Schwerpunkt des Körpers, so wird die gesamte Kraft auf den Schwerpunkt des Kör-pers ausgeübt. Andernfalls muß jener Anteil abgespalten werden, der in Richtung desSchwerpunktes verläuft. Nur dieser Anteil wird tatsächlich an den Schwerpunkt übertra-gen. Er kann mit Hilfe der Gleichung (2.18) berechnet werden. Ich bezeichne den Kraft-anteil, der vom i-ten Partikel auf den Schwerpunkt ausgeübt wird, als .

2.4.3.1 Linearer Impuls

Aus mehreren Gründen verwendet Baraff als Zustandsvariable anstatt der Geschwindig-keit den sogenannten linearen Impuls (engl. linear momentum) des Körpers. P(t) ist imGrunde nichts anderes als die Masse des Körpers M mal dessen Geschwindigkeit v(t).

2.4.3.2 Angularer Impuls

Der totale angulare Impuls des Körpers ist . I(t) ist eine 3x3-Matrix,der Trägheitstensor. Dazu aber mehr im nächsten Abschnitt. Der Zusammenhang zwi-schen L(t) und wird durch die Gleichung (2.19) beschrieben (siehe dazu auchAbschnitt 2.3).

τ t( ) τi t( )∑ ri t( ) x t( )–( ) Fi t( )×∑= = (2.17)

Fxi

Fx iFi t( )

x t( ) ri t( )–( )x t( ) ri t( )–( )

----------------------------------⋅= (2.18)

L t( ) I t( ) ω t( )⋅=

τ t( )

L· t( ) τ t( )= (2.19)

Page 29: Ackerman Geometrisi Diplomarbeit

15 Physikalische Grundlagen

2.4.4 Trägheitsmatrix

Die Trägheitsmatrix beschreibt das Trägheitsverhalten des Körpers. Sie ist ein Skalie-rungsfaktor zwischen angularem Impuls und Winkelgeschwindigkeit. Die Herleitung derTrägheitsmatrix wird in [BWAK 99] näher beschrieben. Damit möchte ich mich hiernicht auseinandersetzen. Wichtig hingegen erscheint mir die Bildung der Matrix füreinen symmetrischen Quader mit gleicher Dichteverteilung. Mit einem solchen Quaderläßt sich das Trägheitsverhalten des Fahrzeuges ausreichend genau annähern.

Der Trägheitstensor I(t) ist eine symmetrische 3x3-Matrix. Er bildet sich aus dem Inte-gral über das Körpervolumen mit Hilfe einer Dichtefunktion . Da sich dieTrägheitsmatrix zur Simulationszeit mit der Orientierung R(t) des Körpers ändert, mußsie in jedem Simulationsschritt neu berechnet werden. Dies wäre relativ rechenaufwen-dig, könnte man die Trägheitsmatrix nicht zumindest für das Objektkoordinatensystemvorberechnen. Siehe dazu Gleichung (2.20). Diese Matrix bleibt zur Laufzeit konstant.Mit Hilfe der Gleichung (2.21) kann daraus zur Laufzeit effizient I(t) berechnet werden.M ist die Masse des Quaders. , und sind seine Abmessungen.

2.4.5 Bewegungsgleichungen

Der Zustand des Starrkörpers zum Zeitpunkt t wird durch räumliche Information (Posi-tion und Orientierung) und durch Geschwindigkeitsinformation (linearer Impuls undangularer Impuls) wiedergegeben. Der Zustandsvektors Y(t) sei definiert als (2.22).

Die Masse des Körpers und der Trägheitstensor sind Konstante. Sie sind zu Simu-lationsbeginn bekannt. Die Hilfsvariable I(t), und v(t) können mit Hilfe der Glei-chungen (2.23) bis (2.25) aus den Zustandsgrößen berechnet werden.

ρ x y z, ,( )

x0 y0 z0

IbodyM12------

y02

z02

+ 0 0

0 x02

z02

+ 0

0 0 x02

y02

+

⋅= (2.20)

I t( ) R t( ) Ibody R t( )T⋅ ⋅= (2.21)

Ibody

ω t( )

v t( ) P t( )M

----------= (2.23)

Page 30: Ackerman Geometrisi Diplomarbeit

Starrkörperdynamik 16

Zur Bestimmung des neuen Systemzustandes wird die Ableitung von Y(t) nach dt benö-tigt. Das numerische Integrationsverfahren berechnet – ausgehend von einem definiertenStartzustand Y(0) – mit Hilfe der abgeleiteten Systemgrößen die neuen Systemzustände.Diese Ableitung kann der Gleichung (2.26) entnommen werden.

2.4.6 Quaternions

Wenn die Rotationsmatrix R(t) im Laufe der Simulation unter Verwendung der Formel(2.12) immer wieder erhöht wird, machen sich nach mehreren SimulationsschrittenRechenungenauigkeiten bemerkbar. In den Koeffizienten von R(t) baut sich unwiderruf-lich ein numerischer Fehler auf, sodaß R(t) keine präzise Rotationsmatrix mehr darstellt.Graphisch führt die Anwendung dieser Matrix zu einer zunehmenden Verzerrung desKörpers (skewing effect). Diese Verzerrung ist bereits nach einigen Hunderten Simulati-onsschritten so stark, daß die Simulation nicht mehr sinnvoll fortgesetzt werden kann.

Y t( )

x t( )R t( )P t( )L t( )

= (2.22)

I t( ) R t( ) Ibody R t( )T⋅ ⋅= (2.24)

ω t( ) I t( ) 1– L t( )⋅= (2.25)

ddt-----Y t( ) d

dt-----

x t( )R t( )P t( )L t( )

v t( )

ω t( ) R t( )⋅F t( )τ t( )

= = (2.26)

Page 31: Ackerman Geometrisi Diplomarbeit

17 Physikalische Grundlagen

Anstelle der 3x3-Rotationsmatrix gibt es eine andere Darstellungsform für die Orientie-rung des Starrkörpers. Und zwar Quaternions [PeWe 82]. Für ihre Darstellung reicht einVektor mit vier Elementen. Dh., im Vergleich zur Orientierungsmatrix wird nur einzusätzlicher Parameter für die Beschreibung der drei Freiheitsgrade einer Rotation benö-tigt. Diese geringe Redundanz in der Repräsentation führt dazu, daß der numerische Feh-ler fast zur Gänze verschwindet. Die geringfügigen Abweichungen werden durch regel-mäßiges Normalisieren des Quaternions ausgeglichen.

Die Darstellung der angularen Geschwindigkeit durch den Vektor wird trotz Ver-wendung der Quaternions beibehalten. Die Orientierungsmatrix R(t) wird allerdings nurnoch zu Hilfszwecken aus q(t) berechnet. Die Aktualisierung der Starrkörperorientierungerfolgt mit Hilfe der Quaternions. Gleichung (2.27) zeigt die Ableitung eines Quaterni-ons nach der Zeit. Die Multiplikation entspricht einer Multiplikation derQuaternions [0, ] und q(t). Die Definition dieser Rechenoperation ist in Anhang Azu finden.

2.5 Verteilung der Auflagekräfte

Liegt der Starrkörper am Boden auf, so verteilt sich seine Gewichtskraft auf die Auflage-fläche. Da der Körper auf vier Radaufhängungen gelagert ist, sind es vier Punkte, die dasGewicht des Körpers tragen (oder auch weniger, wenn das Fahrzeug nicht mit allenRädern am Boden aufliegt). Die Punkte entsprechen den Befestigunspunkten der Rad-aufhängung. In den Radaufhängungen werden dem Körper jene Kräfte entgegengesetzt,die ihn am Eindringen in den Boden hindern (Tragkräfte). Sie verlaufen vertikal zumFahrzeug (vertikal in Objektkoordinaten), und stehen im Wechselspiel mit den Feder-und Dämpferelementen der Radaufhängung.

2.5.1 Herleitung der statischen Verteilung

Die Verteilung der Gewichtskraft erfolgt über Momente. Unter Kenntnis der Geometrie(Radstand, Spurweite), des Gewichtes, und der Auflagepunkte des Körpers, kann mandie Momente um den Masseschwerpunkt (bzw. um eventuell benötigte Hilfspunkte)ansetzen. Daraus ergeben sich in weiterer Folge die Kräfte in den Auflagepunkten. Diesfunktioniert jedoch nur, wenn sich der Schwerpunkt innerhalb des von den Auflagepunk-ten aufgespannten Polygons befindet. Andernfalls wird sein Gewicht nicht vollständiggetragen und der Körper kippt zur Seite. Für diese speziellen Fälle (eigentlich ist dies inden meisten Auflagekonfigurationen der Fall) nähere ich die Gewichtskraft, die in derFederung getragen wird.

ω t( )

ω t( ) q t( )⋅ω t( )

q· t( ) 12---ω t( ) q t( )⋅= (2.27)

Page 32: Ackerman Geometrisi Diplomarbeit

Verteilung der Auflagekräfte 18

Abb. 2.5 zeigt eine Konfiguration, in der der Körper getragen wird und nicht zur Seitekippt. Die Punkte P0, P2 und P3 liegen am Boden auf. Der Punkt P1 hängt in der Luft.Man beachte, daß der Schwerpunkt CG innerhalb des Dreiecks P0-P2-P3 liegt. CG stehtfür center of gravity.

Es werden folgende Momente angesetzt:

bis sind die Vertikalkräfte in den Punkten P0 bis P3, ist die Gravitationskraft

im Masseschwerpunkt CG und ist die Vertikalkraft im Hilfspunkt X. So lassen sichschrittweise alle Kräfteanteile in den Auflagepunkten berechnen.

Da sich die Lage der Radaufhängungen nicht ändert, bleiben die Gewichtsverteilungenzur Laufzeit konstant. Sie können vor Simulationsbeginn für alle möglichen Auflage-Konfigurationen vorberechnet und in einer Tabelle abgelegt werden. So spart man sichdie Berechnungen während der Simulation. Für die Fälle, in denen der Körper getragenwird (und nicht zur Seite kippt), müssen sich die Anteile auf 100% ergänzen. Für alleanderen Fälle habe ich geometrisch plausible Gewichtsanteile verwendet.

2.5.2 Geometrische Interpretation und Anwendung

Im Simulationszyklus müssen nicht die Auflagekräfte berechnet werden, die sich aus derGewichtskraft des Körpers in den Auflagepunkten ergeben. Stattdessen muß aus denKräften in den Federbeinen auf eine maximale Tragkraft im Schwerpunkt des Körpers

Abbildung 2.5: Herleitung der vertikalen Kräfteverteilung über Momente

u Fg⋅( )– d2 u+( ) F2⋅=

d2 Fg⋅( )– d2 u+( ) Fx⋅=

x3 Fx⋅( )– x0 x3+( ) F0⋅=

x0 F⋅ x( )– x0 x3+( ) F3⋅= (2.28)

F0 F3 Fg

Fx

Page 33: Ackerman Geometrisi Diplomarbeit

19 Physikalische Grundlagen

rückgeschlossen werden. Diese maximale Tragkraft kann mit Hilfe der berechnetenGewichtsverteilung bestimmt werden.

Angenommen, in jedem der Federbeine liegt genau jene Kraft an, die sich aus derberechneten Verteilung ergibt (siehe Abb. 2.6, links), so wird der Körper zur Gänzegetragen. Die Summe der Momente um den Masseschwerpunkt ist gleich Null( ). Der Körper befindet sich im Gleichgewicht.

Liegt an nur an einer (oder mehreren) der Aufhängungen eine größere Kraft an, als jene,die dem berechneten Anteil entspricht, so resultiert daraus ein Drehmoment um denSchwerpunkt des Körpers (siehe Abb. 2.6, rechts). Die Tragkraft im Schwerpunkt erhöhtsich nur, wenn die Kraft in allen(!) Auflagepunkten verstärkt wird.

Um die maximale Tragkraft zu ermitteln, muß zunächst die Kraft in jedem der vier Auf-lagepunkte ermittlet werden. Sie kann aus den Feder- und Dämpferelementen der Rad-aufhängung ausgelesen werden. Betrachtet man einen der Auflagepunkte, so kann dieKraft in diesem Punkt auf eine theoretische Gewichtskraft im Schwerpunkt des Starrkör-pers zurückgeführt werden. Dazu wird die Auflagekraft durch den jeweiligen Anteil derGewichtsverteilung dividiert. Als Ergebnis erhält man einen theoretischen Wert, der alsUrsache für die Kraft in dem Federbein betrachtet werden kann. Liegt der Körper an vierPunkten auf, werden auf diese Weise vier unterschiedliche Werte ermittelt.Da für jeden der Punkte die selbe Gewichtsverteilung gilt, kann sichergestellt werden,daß das Minimum der ermittelten Gewichtskräfte in jedem der aufliegenden Punktegetragen wird. Dh., die Tragkraft, die aus den Anteilen in den Auflagepunkten resultiert,ist gleich dem Minimum aller , wobei gleich , dividiert durch den vorberechne-

ten Kraftanteil im Aufhängungspunkt . .

Da der Körper auf Federn gelagert ist, und die Federbeine während der Fahrt nicht gleichweit einfedern (Bodenunebenheiten, Beschleunigung durch Antrib/Bremse/Kurvenlage,etc.), wird üblicherweise in jedem Simulationsschritt ein Drall erzeugt. Ohne äußereKrafteinwirkung sollte sich der Drall – aufgrund der Dämpfungseigenschaften der Rad-aufhängung – auf Null einpendeln.

di Fi×∑ 0=

Abbildung 2.6: Geometrische Interpretation der vertikalten Kräfteverteilung: Tragkraft und Drehmoment

FgiFgi

Fi

Pi i 0 1 2 3, , ,{ }∈

Page 34: Ackerman Geometrisi Diplomarbeit

Übertragung der Horizontalkräfte 20

2.6 Übertragung der Horizontalkräfte

So, wie die Rückführung der Auflagekräfte, ist auch die Rückführung der horizontalenKräfte von der Geometrie des Fahrzeuges abhängig. Die horizontalen Kräfte können nurzu jenen Teilen an den Schwerpunkt übertragen werden, die durch die geometrischeAnordnung der Räder vorgegeben sind.

Für die Berechnung der Kraft auf den Schwerpunkt werden je zwei Geraden betrachtet:zwei in Längsrichtung des Fahrzeuges, und zwei in Querrichtung des Fahrzeuges. InLängsrichtung werden die Longitudinalkräfte der beiden linken und der beiden rechtenReifen aufsummiert. In Querrichtung sind es die Lateralkräfte der beiden Vorderreifenund der beiden Hinterreifen (siehe Abb. 2.7). Die Kräfteverteilung ergibt sich aus demTeilungsverhältnis, in dem der Schwerpunkt das Fahrzeug in Längsrichtung und in Quer-richtung teilt. Der Kraftanteil im Schwerpunkt des Fahrzeuges wird analog zuAbschnitt 2.5.2 ermittelt.

Liegt der Schwerpunkt auf halber Breite des Fahrzeuges, so resultiert eine Kraft von= = 1000 N in einer Längskraft von 2000 N auf den Schwerpunkt des Fahrzeuges.

Sind es auf der rechten Seite 1100 N, so ist die Gesamtkraft ebenfalls nur 2000 N. Die„überschüssigen“ 100 N bewirken einen Drehimpuls des Fahrzeuges.

Zur Bestimmung der Kräfteverteilung werden folgende Momente angesetzt:

Die Lage (die Höhe) des Schwerpunktes wird aufgrund der geringen Höhendifferenz inder Übertragung der Horizontalkräfte der Einfachheit halber vernachlässigt.

Fl Fr

Abbildung 2.7: Rückführung der Antriebs- und der Seitenkräfte auf den Schwerpunkt des Starrkörpers

lb Flong⋅( )– lb lf+( ) Ff⋅=

bl Flat⋅( )– bl br+( ) Fr⋅= (2.29)

Page 35: Ackerman Geometrisi Diplomarbeit

21 Physikalische Grundlagen

2.7 Stoßübertragung

Wenn zwei Körper aufeinanderprallen kommt es zur Übertragung eines Stoßes. Klassi-sche Beispiel hierfür sind zwei Billiardkugeln. Prallen die Kugeln aufeinander kommt eszu einer plötzlichen Geschwindigkeitsänderung der beiden Massekörper. Je nach Bewe-gungsrichtung, Geschwindigkeit und Materialbeschaffenheit der Kugeln ergeben sich beieinem solchen Zusammenprall unterschiedliche Abprallwinkel und -geschwindigkeiten.

In Bezug auf die Simulation spricht man auch von einer Diskontinuität in der Geschwin-digkeit der Körper. Während sich lineare und angulare Geschwindigkeit bei der Aus-übung von Kräften immer nur kontinuiertlich verändern können (aufgrund der Masse-trägheit sind keine Geschwindigkeitssprünge möglich!) kommt es bei der Übertragungvon Stößen zu genau diesen Sprüngen in der Geschwindigkeit. Mit den bisher vorgestell-ten Konzepten von Kraft und Masse kommt das der Zuführung einer unendlich großenKraft über einen unendlich kleinen Zeitraum hinweg gleich.

Die Integration muß zum genauen Zeitpunkt der Kollision angehalten werden. DieserZeitpunkt ist genau dann eingetreten, wenn sich die Oberflächen der beiden Körperberühren. Er kann numerisch bis zu einer gewissen Genauigkeit angenähert werden.Anschließend wird der Stoß berechnet. Dies geschieht unter Verwendung der Systemgrö-ßen, die zum Zeitpunkt der Kollision anliegen. Aufgrund der Zuführung des Stoßes mußschließelich die Simulation neu gestartet werden. Der Startzustand wird durch die neuermittelten Geschwindigkeiten und Positionen festgelegt.

Für die Beschreibung des Sprungverhaltens in der Geschwindigkeit wird die Größe Jeingeführt. J wird auch als Stoß bezeichnet. Er erzeugt eine abrupte Geschwindigkeitsän-derung eines Körpers. Der Stoß ist eine Vektorgröße, so wie die Kraft F. Nur wird er inder selben Einheit wie der Impuls angegeben. Bei einem Körper mit Masse M läßt sichdie Änderung der Geschwindigkeit durch folgenden Zusammenhang darstellen:

Die Änderung des linearen Impulses drückt sich aus durch .

Verläuft die Linie der Stoßübertragung durch die Masseschwerpunkte der beiden betei-ligten Körper (wie beispielsweise bei zwei Kugeln) kann man den Stoß mit Hilfe vonGleichung (2.31) berechnen. Hierbei wird – unter Vernachlässigung der Reibung – keinDrehimpuls übertragen.

∆vJM-----= (2.30)

∆P ∆P J=

J1 ε+( )– vrel⋅1

Ma

------- 1Mb

-------+---------------------------------= (2.31)

Page 36: Ackerman Geometrisi Diplomarbeit

Stoßübertragung 22

ist der Stoßübertragungskoeffizient, ist die relative Annäherungsgeschwindigkeitder beiden Körper. und sind die beiden beteiligten Massen. Je nach Materialbe-schaffenheit wird ein Teil des Stoßes von den Körpern absorbiert. würde bedeu-ten, daß die gesamte kinetische Energie des Stoßes beim Zusammenstoß der beiden Kör-per umgewandelt wird. Die relative Annäherungsgeschwindigkeit der beiden Körpernach dem Aufprall ist gleich null. Bei hingegen bleibt die Geschwindigkeitsdiffe-renz in Stoßrichtung nach der Kollision zur Gänze erhalten. Sei die relative Annähe-

rungsgeschwindigkeit vor dem Zusammenstoß und die Geschwindigkeit unmittel-bar nach dem Stoß, so kann man den Zusammenhang wie folgt ausdrücken:

2.7.1 Stoßberechnung für den Starrkörper

Wird der Stoß auf einen beliebigen Punkt p eines Körpers ausgeübt (und nicht in geraderLinie durch den Masseschwerpunkt), so bewirkt der Stoß neben der Geschwindigkeits-änderung auch eine Änderung des Drehimpulses.

Betrachten wir zunächst den allgemeinen Fall: die Kollsision von zwei Starrkörpern. Ichnenne sie Körper A und Körper B (siehe Abb. 2.8). Die vorgestellten Konzepte basierenauf dem zweiten Teil der Ausarbeitungen von Baraff [BWAK 99]. Die Skizzen sind demPaper entnommen.

Um die Geschwindigkeit der Kollisionspunkte und der Körper A und Bzum Kollisionszeitpunkt zu bestimmen, werden die Zustandsgrößen der beiden Kör-per in die Gleichung (2.14) aus Abschnitt 2.4.2.1 auf Seite 12 eingesetzt. Man erhält dieAusdrücke (2.33) und (2.34). Die Punkte und – die zum Zeitpunkt dek-kungsgleich im Punkt p liegen – werden in Weltkoordinaten angegeben.

ε vrelMa Mb

ε 0=

ε 1=vrel

vrel+

vrel+ ε– vrel

–⋅= (2.32)

pa t0( ) pb t0( )t0

pa t0( ) pb t0( ) t0

Abbildung 2.8: Position der Starrkörper A und B vor dem Zeitpunkt der Kollision (links), und zum Kollisionszeitpunkt (rechts)t0

Page 37: Ackerman Geometrisi Diplomarbeit

23 Physikalische Grundlagen

Bei der Kollision der beiden Körper ist zwischen drei Formen des Kontaktes zu unter-scheiden: dem Punkt-Fläche-Kontakt, dem Kante-Fläche-Kontakt und dem Fläche-Flä-che-Kontakt. Je nach vorliegender Kontaktform wird der Impuls zu unterschiedlichenTeilen in die beiden Körper zugeführt. Für die Simulation ist jedoch ausschließelich derPunkt-Fläche-Kontakt relevant.

Kollidiert ein Punkt des Körpers A mit einem Punkt in der Fläche des Körpers B (siehe

Abb. 2.9), so kann man die Normale auf die Oberfläche von B als Stoßübertragungs-achse betrachten. Der Stoß pflanzt sich ausschließlich entlang dieser Achse fort. Normal

dazu (in der Normalebene auf ) findet keine Stoßübertragung statt. Hier kann es ledig-lich aufgrund von Reibungskräften zu einer zusätzlichen Beeinflussung der Körper kom-men. Die Reibung möchte ich in diesen Betrachtungen jedoch ausklammern.

Da der Impuls in Richtung der Normalen übertragen wird, kann man J umschrei-ben als:

Die Herleitung für j ist nicht ganz trivial. Ich werde daher nur den feritgen Ausdruckanführen. Näheres ist bei [BWAK 99] nachzulesen. Die Gleichung (2.36) zeigt den Term

p· a t0( ) va t0( ) ωa t0( ) pa t0( ) xa t0( )–( )×+= (2.33)

p· b t0( ) vb t0( ) ωb t0( ) pb t0( ) xb t0( )–( )×+= (2.34)

Abbildung 2.9: Annäherungsgeschwindigkeit der Starrkörper A und B (Punkt-Fläche-Kontakt)

n̂ t0( )

J j n̂ t0( )⋅= (2.35)

Page 38: Ackerman Geometrisi Diplomarbeit

Stoßübertragung 24

für die Berechnung von j. Die Entfernungen und seien definiert als und

. In Abb. 2.10 wird die Anwendung des Stoßes auf die beiden Körper gra-phisch veranschaulicht.

Angenommen, A ist kein Starrkörper, sondern eine punktförmige Masse, dann läßt sichder Ausdruck (2.36) auf (2.37) reduzieren ( ). Im Modell besitzendie Massen der Radaufhängung keine räumliche Ausdehnung. Aus diesem Grund kanndie Übetragung von Stößen auf diese Weise berechnet werden. Körper-Körper-Kollisio-nen müssen nur bei der Kollision von zwei Fahrzeugen zu berechnet werden.

ra rb p xa t0( )–

p xb t0( )–

j1 ε+( ) vrel

–⋅–

1Ma------- 1

Mb------- n̂ t0( ) Ia

1– t0( ) ra n̂ t0( )×( )⋅( ) ra n̂ t0( ) Ib1– t0( ) rb n̂ t0( )×( )⋅( ) rb×⋅+×⋅+ +

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------= (2.36)

Abbildung 2.10: Anwendung des Stoßes auf die Körper A und B

ra p xa t0( )– 0= =

j1 ε+( ) vrel

–⋅–

1Ma

------- 1Mb

------- n̂ t0( ) Ib1– t0( ) rb n̂ t0( )×( )⋅( ) rb×⋅+ +

--------------------------------------------------------------------------------------------------------------= (2.37)

Page 39: Ackerman Geometrisi Diplomarbeit

25 Physikalische Grundlagen

2.7.2 Kollisionsabfragen

Die Berechnung von Kollisionen und Kollisionspunkten zwischen zwei frei beweglichenKörpern ist relativ aufwendig. Für eine effektive Berechnung werden Bounding-Boxesund andere geometrische Abstraktionsverfahren eingesetzt. Außerdem gilt es – wiebereits erwähnt –, zwischen unterschiedlichen Formen des Kollisionskontaktes zu unter-scheiden. In [BWAK 99] wird ein relativ effizientes Konzept für die Kollisionsabfragezwischen mehreren Starrkörpern vorgestellt. Da ich es für meine Modellierung des Auto-Boden-Verhaltens jedoch nicht benötige (die bisweilen einzige Kollisionsabfrage findetzwischen Reifen und Straße statt) möchte ich mich damit nicht näher beschäftigen.

2.8 Reibung

Wenn sich zwei Objekte in einer Kontaktstelle (oder in mehreren Kontaktstellen) berüh-ren und eine horizontale Kraft auf diese Kontaktstelle ausgeübt wird, treten Reibkräfteauf. Nehmen wir als Beispiel einen Quader, der auf ebenem Untergrund aufliegt (sieheAbb. 2.11). Dieser Quader wird durch die Kraft N auf den Boden gedrückt. N ist derAnteil der Gewichtskraft, der normal zur Bodenoberfläche verläuft. Beim Anlegen einerKraft F bildet sich in der Auflagefläche die Reibkraft f, die der Kraft F entgegenwirkt.Sie vehindert, daß der Körper über die Oberfläche zu rutschen beginnt (Haftreibung).Vergrößert man F, so erreicht die Gegenkraft f irgendwann eine Schwelle, die sie nichtüberschreiten kann. Ab dem Zeitpunkt beginnt der Quader über die Oberfläche zu gleit-gen (Gleitreibung). Er wird durch die Reibkraft f gebremst.

In welchem Zustand der Reibung sich ein Körper gerade befindet (Haftreibung oderGleitreibung) kann man mit Hilfe der Relation (2.38) feststellen. ist der statischeReibkoeffizient. Er beschreibt das Reibverhalten zwischen zwei unterschiedlichen Mate-rialien im Zustand der Haftreibung.

Abbildung 2.11: Reibkraft in der Kontaktfläche eines Quaders

µs

F µs N⋅≤ (2.38)

Page 40: Ackerman Geometrisi Diplomarbeit

Reibung 26

Bis zu dem Grenzwert halten sich die horizontale Kraft und die Reibkraftdie Waage ( ). Der Körper wird in seiner Position gehalten. Übersteigt F denGrenzwert, so beginnt der Körper zu rutschen. Die Reibkraft für die kinetische Rei-bung (oder Gleitreibung) ist bei gleichem Auflagegewicht N konstant:

Abb. 2.12 zeigt den idealisierten Zusammenhang zwischen horizontaler Kraft F undReibkraft f bei konstanter Auflagekraft N. In der Realität verläuft diese Kennlinie nichtlinear. Für die Modellierung des Reibverhaltens reicht der lineare Zusammenhang aller-dings aus.

Eine Auflistung von Reibwerten findet man beispielsweise in [Dubb 90], B 15, Tabelle4, oder in [Bosc 97]. Die folgende Tabelle wurde aus unterschiedlichen Quellen zusam-mengestellt.

Material

Stahl auf Stahl 0,7 0,6Messing auf Stahl 0,5 0,4

Kupfer auf Gußeisen 1,1 0,3Glas auf Glas 0,9 0,4

Tabelle 2.1: Reibwerte

F µs N⋅=f fs F= =

fk

fk µk N⋅= (2.39)

Abbildung 2.12: Zusammenhang zwischen horizontaler Kraft und Reibkraft

µs µk

Page 41: Ackerman Geometrisi Diplomarbeit

27 Physikalische Grundlagen

Teflon auf Teflon 0,04 0,04Teflon auf Stahl 0,04 0,04Gummi auf Beton (trocken) 1,0 0,8

Gummi auf Beton (naß) 0,30 0,25Formel-1 Reifen auf trockenem Asphalt

1,7 —

Guter Autoreifen auf trockenem Asphalt

1,1 1,0

Durchschnittlicher Autoreifen auf trockenem Asphalt

0,9 0,8

Gekerbter Autoreifen auf naßem Asphalt

0,8 0,7

Glatziger Reifen auf naßem Asphalt

0,5 0,4

Material

Tabelle 2.1: Reibwerte

µs µk

Page 42: Ackerman Geometrisi Diplomarbeit

Reibung 28

Page 43: Ackerman Geometrisi Diplomarbeit

Kapitel 3

Das Fahrzeugmodell

3.1 Allgemeines

Für die Simulation von Fahrzeugen werden üblicherweise Mehrkörper-Modelle verwen-det. Bei diesen Modellen ist jede bewegliche Masse durch einen Starrkörper nachgebil-det. Durch das Hinzufügen unterschiedlicher Verbindungen (Federn, Dämpfer, Gelenke,...) werden die Körper zu einem System zusammengefügt. Die kinematischen Eigen-schaften des Systems werden durch die Eigenschaften der Körper (Masse, Geometrie,Trägheit, Bewegungseinschränkungen), durch die Verbindung der Körper untereinander,und durch deren geometrische Anordnung bestimmt.Die Bewegungsfreiheit des Modells wird in Freiheitsgraden (engl. Degrees of Freedom,kurz DOF) gemessen. Jede Achse im orthogonalen Koordinatensystem, entlang der einKörper transliert werden kann, wird als ein Freiheitsgrad gezählt. Ebenso jede Achse, umdie der Körper rotiert werden kann. Ein frei im Raum beweglicher Körper besitzt sechsFreiheitsgrade.

In [SaHa 95] wird ein generisches Mehrkörper-Modell in 18 Freiheitsgraden beschrie-ben. Es besteht aus einem Hauptkörper mit sechs Freiheitsgraden. Vier weitere Körperbeschreiben die vertikale Bewegung der Radaufhängungen (je ein Freiheitsgrad). DieRäder sind an die Aufhängung gekoppelt, können aber durch das Einfedern seitlich weg-gedrückt werden. Sie besitzen je zwei Freiheitsgrade.

Die Anordnung der Komponenten habe ich aus [SaHa 95] übernommen. Um die Imple-mentierung weitgehend zu vereinfachen, verwende ich jedoch nur einen einzigen Starr-körper. Dieser beschreibt die Masse des Autos als Verbund von Karosserie, Motorblock,Radaufhängung und Rädern. Die anderen Starrkörper werden als punktförmige Massenbetrachtet. Sie sind in ihrer Bewegungsfreiheit auf eine Dimension beschränkt. Ihre Posi-tion kann in einer Dimension widergegeben werden. (Ebenso die Ableitungen der Posi-

29

Page 44: Ackerman Geometrisi Diplomarbeit

Aufbau 30

tion nach der Zeit.) Die dreidimensionale Interpretation wird über den Zustand desModells hergeleitet. Die Reifen besitzen nur einen Freiheitsgrad (Rotation).

Obwohl die Starrkörperdefinition alle Teilkomponenten zu einer einzigen Masse zusam-menfaßt, müssen für Räder und Radaufhängungen eigene Massen definiert werden. Fürdie Modellierung der Masse-Feder-Systeme, und für die Berechnung von Stoßübertra-gungen ist dies unverzichtbar. Geht man davon aus, daß Radaufhängung und Räder einenBruchteil der gesamten Fahrzeugmasse ausmachen, so lassen sich die aus der Vereinfa-chung resultierenden Ungenauigkeiten in der Simulation vernachlässigen. Die Vereinfa-chungen betreffen im Wesentlichen folgende Punkte:

• Die von Rädern und Aufhängung getragene Masse wird fälschlicherweise mit derGesamtmasse des Fahrzeuges angenommen (der Starrkörper umfaßt alle Masseteiledes Fahrzeuges!). Dadurch werden die Federn etwas mehr beansprucht, als vorgese-hen. Die Dynamik des Fahrzeuges wird dadurch jedoch nur geringfügig beeinflußt.

• Die Auslenkung der Federbeine verursacht eine geringfügige Masse-Umverteilunginnerhalb des Starrkörpers. Diese Umverteilung würde eine Neuberechnung der Träg-heitsmatrix erfordern, kann jedoch – aufgrund des verschwindend kleinen Einflußesauf das Laufzeitverhalten des Fahrzeuges – ignoriert werden.

Im folgenden Abschnitt betrachte ich den schematischen Aufbau des Modelles. DieGrundlagen für die physikalische Modellierung der Komponenten wurden in Abschnitt 2gelegt. Abschnitt 3.3 beschreibt die Kopplung dieser Komponenten. Neben der Umset-zung der Mechanik wird im Anschluß auf die Modellierung von Motor, Getriebe undReifen eingegangen.

3.2 Aufbau

Das Fahrzeugmodell setzt sich aus Karosserie, Radaufhängung und Reifen zusammen.Zur Karosserie zähle ich den gesamten Fahrzeugaufbau. Die Radaufhängung wird durcheine Masse (einfedernde Teile), ein Federelement und einen Stoßdämpfer beschrieben.Die Reifen sind durch je eine Masse und ein Federelement modelliert. Die Federbeschreibt den Widerstand bei der Verformung des luftgefüllten Gummireifens. Einegenaue Anordnung der Komponentens ist Abb. 3.1 zu entnehmen. Die Darstellung lehntsich an [BeHa 78] an.

Durch die strichlierte Linie wird angedeutet, daß sich der „virtuelle“ Starrkörper nichtmit dem Aufbau des Fahrzeuges deckt. Karosserie und Starrkörper unterscheiden sichsowohl in ihrer Position, als auch in ihrer Ausdehnung. Ihre Lage zueinander bleibtjedoch über die Simulationszeit hinweg konstant. Deshalb wird der Starrkörper von mirder Einfachheit halber oft auch als Karosserie bezeichnet. Da Position und Orientierungvon Starrkörper und Karosserie fix miteinander gekoppelt sind, macht es keinen Unter-schied, welche der beiden Bezeichnungen ich zukünftig verwende. Die Radaufhängun-gen sind an vordefinierten Positionen an der Karosserie (am Starrkörper) montiert.

Page 45: Ackerman Geometrisi Diplomarbeit

31 Das Fahrzeugmodell

3.3 Kopplung der Komponenten

Die Komponenten sind über Bezugspunkte aneinander gekoppelt. In der Karosserie gibtes vier Punkte, an denen die Federn und Dämpfer der Radaufhängung mit der Karosserieverbunden sind. Die Aufhängungspunkte ändern sich im Laufe der Simulation nicht. Siekönnen weder nachgeben, noch bei zu starker Belastung brechen. Es handelt sich umeine starre, undurchtrennbare Verbindung. Die Verbindung der Räder mit dem Masse-punkt der Aufhängung ist ebenfalls untrennbar. Die Position eines Rades wird durch dieAuslenkung der Radaufhängung vorgegeben.

Eine eventuelle Abhängigkeit zwischen zwei Rädern durch die Geometrie der Radauf-hängung wird nicht berücksichtigt. Es gibt keine Aspekte, welche die Lage der Räderzueinander beeinflussen (starre Vorder- und/oder Hinterradachse). Die Räder sind ein-zeln aufgehängt. Sie können sich innerhalb des Federweges frei nach oben und untenbewegen. Der Weg, der vom Rad beim Einfedern der Aufhängung beschrieben wird, ver-läuft entlang einer Geraden.

Abbildung 3.1: Frhrzeugmodell schematisch (Seitenansicht)

Page 46: Ackerman Geometrisi Diplomarbeit

Kopplung der Komponenten 32

3.3.1 Kraftübertragungszyklus

Zur Laufzeit werden zwischen den Fahrzeugkomponenten Kräfte ausgetauscht: Liegendie Räder am Boden auf, so kommt es zur Stauchung der Feder im Reifenmodell. Es ent-steht eine Kraft, die proportional zur Auslenkung der Feder ist. Diese Kraft wird entlangder Federungsachse abgetragen und der Radaufhängung zugeführt. Die Federn undDämpferelemente werden beansprucht. Die Stauchung der Federn im Reifen und in derAufhängung erzeugt eine Kraft, die auf die Karosserie ausgeübt wird.

Aufgrund der Gravitation wird der Starrkörper (inklusive aller Federmassen und Reifen)nach unten beschleunigt. Liegt das Fahrzeug mit seinen vier Rädern am Boden auf, mußdie Gravitationskraft von einer Gegenkraft in der Waage gehalten werden. Ansonstenwürde das Fahrzeug im Boden versinken oder – bei zu großer Gegenkraft – abheben.Diese Gegenkraft (engl. Liftforce) wird durch die darunterliegenden Federkomponenten(Luftreifen, Radaufhängung) erzeugt. Durch die Kompression der Luft im Reifen (=Federstauchung) und durch die Auslenkung der Radaufhängung wird eine Kraft auf denStarrkörper ausgeübt. Die Summe der Kräfte, die sich in Reifen und Radaufhängunggebildet haben, hindert das Fahrzeug am Eindringen in den Boden.Betrachtet man Abb. 3.1, so richtet sich diese Kraft korrekterweise auf die Karosserie.Da das Modell keine Unterscheidung zwischen Karosserie und Verbundkörper vorsieht,ergeben sich daraus gewisse Ungenauigkeiten. Die Masse, die von Radaufhängung undReifen getragen werden muß, ist zu hoch. Das kann jedoch durch die Verwendung einergrößeren Federkonstante kompensiert werden.

3.3.2 Bodenkontakt

Wird von einem Simulationszeitpunkt zum nächsten eine Eindringung der Räder in denBoden festgestellt, so hat zwischen diesen Zeitpunkten ein Bodenkontakt stattgefunden.Für die Simulation ist das insofern von Bedeutung, als ab dem Zeitpunkt der Kollisionneben der Schwerkraft eine weitere Kraft auf das Auto wirkt. Sie ist der Schwerkraft(korrekterweise der Auflagekraft) engegengerichtet und hält das Fahrzeug auf derBodenoberfläche.

Um eine Bodenkollision rechnerisch korrekt aufzulösen, muß das numerische Integrati-onsverfahren zum genauen Zeitpunkt der Kollision abgesetzt und – mit neuen Initialwer-ten – erneut gestartet werden (siehe Abschnitt 2.7). Der exakte Kollisionszeitpunkt läßtsich durch ein Bisektionsverfahren annähern – eine exakte Bestimmung ist nicht mög-lich. Das Akzeptanz-Intervall für einen gefundenen Kollisionszeitpunkt kann freigewählt werden.

Ich verwende in meiner Simulation 2500 Simulationsschritte pro Sekunde. Das bedeutet,daß ein Simulationszeitpunkt nie weiter als sec von einem exakten Kollisions-zeitpunkt abweichen kann. Auf eine zusätzliche mathematische Annäherung kann –zugunsten der Laufzeiteffizienz – verzichtet werden. Eine feinere Bestimmung des Kol-lisionszeitpunktes würde keine wesentlichen Auswirkungen auf das Simulationsverhal-ten haben.

1 2500⁄

Page 47: Ackerman Geometrisi Diplomarbeit

33 Das Fahrzeugmodell

3.3.2.1 Geometrische Interpretation des Reifen-Boden-Kontaktes

Das Einfedern des Reifens im Modell wird auf eine einzige Federachse zurückgeführt.Diese Federachse kann – je nach Art des Bodenkontaktes – unterschiedlich ausgerichtetsein (siehe Abb. 3.2).Betrachten wir vorerst die zweidimensionale Situation: Beim Schnitt des Reifens mitebenem Boden verläuft die Federachse normal zur Bodenoberfläche (Abb. 3.2, links undMitte). Auf unebenem Boden können für einen Reifen auch mehrere Normaleindringun-gen vorliegen (Abb. 3.2, rechts). Wurde mehr als eine Eindringung festgestellt, so müs-sen die Eindringungsvektoren auf einen einzigen Vektor abgebildet werden. Diesgeschieht durch Mittelung aller vorliegenden Werte. Als Gewichtung wird die Teife derEindringungen verwendet. Die Federachse wird entlang des gemittelten Vektors ange-nommen.

Da die Simulation nicht zweidimensional, sondern dreidimensional aufgebaut ist, bedeu-tet die Berechnung aller Normaleindringungen, daß der Reifen als Kugel betrachtet wird.Auch wenn dieser Ansatz auf den ersten Blick etwas befremdend wirkt, so liefert er dochfür die meisten Fälle recht gute Ergebnisse. Ein Reifen wird nur in wenigen Fällen soschräg seitlich am Boden aufsetzen, daß die Kräfteentwicklung entlang der ermitteltenAchse nicht mit der Visualisierung des Fahrzeuges vereinbar ist.Für eine differenzierte Betrachtung des Reifens ist eine genauere Annäherung an die Rei-fengeometrie erforderlich. Folgende Möglichkeiten bieten sich an: Kugelschnitt, Torus,Zylinder. Die Reifengeometrie muß gegen alle umliegenden Bodenpolygone getestetwerden.

3.3.3 Kollisionsabfragen

Bei der Interaktion des Fahrzeuges mit dessen Umgebung spielen Kollisinen eine wich-tige Rolle. Kollisionen entstehen, wenn die (starre) Außenhülle des Fahrzeuges miteinem anderen Massekörper kollidiert. Sowohl Reifen als auch Karosserie sind davonbetroffen und müssen in jedem Simulationsschritt auf Kollisionen überprüft werden.

Die häufigste Form der Kollision betrifft den Reifen-Boden-Kontakt: Jedesmal, wennder Reifen über den zulässigen Federweg hinaus in den Boden eindringt, wird ein Stoßvom Boden an den Reifen übertragen. Federt die Radaufhängung bis zum Anschlag ein,so pflanzt sich der Stoß bis in den Fahrzeugrahmen fort. Aber auch, wenn das Fahrzeugseitlich mit dem Reifen den Randstein touchiert, wird dadurch ein Stoß auf den Fahr-

Abbildung 3.2: Kräfteentwicklung durch den Boden-Reifen-Kontakt

Page 48: Ackerman Geometrisi Diplomarbeit

Rad-Straße-Verhalten 34

zeugrahmen ausgeübt. Gerät das Fahrzeug außer Kontrolle, so kann es passieren, daß essich überschlägt und mit den umliegenden Objekten kollidiert. Für diesen Fall sollte dieKollision der Karosserie mit dem Boden (oder mit anderen Objekten) abgefragt werden.

Aus Zeitgründen beschränkt sich die vorliegende Implementierung auf die Abfrage unddie Berechnung des Reifen-Boden-Kontaktes und aller daraus resultierenden Kräfte undStöße. Sowohl Kräfte als auch Stöße pflanzen sich über die Radaufhängung bis hinaufzur Karosserie des Fahrzeuges fort und verhindern ein Eindringen des Fahrzeuges in denBoden.

3.3.4 Starrkörper-Feder-Kopplung

Die Lagerung des Starrkörpers stützt sich auf die Kräfteverteilung, die in Abschnitt 2.5vorgstellt wurde. Durch die Auslenkung der (am Boden aufliegenden) Federbeine läßtsich die Tragkraft im Schwerpunkt des Starrkörpers berechnen, und das Drehmoment umden Schwerpunkt des Starrkörpers bestimmen.

Die Auflage auf den Federbeinen wird – analog zu der in [BWAK 99] getroffenen Unter-scheidung zwischen „resting contact“ und „colliding contact“ – als resting contactbehandelt, – also als ruhender Kontakt. Die Federn üben keinen Stoß sondern eine konti-nuierliche Kraft auf die Aufhängungspunkte aus. Erst, wenn aufgrund einer zu hohenAufprallgeschwindigkeit der Federweg in einer der Radaufhängungen überschrittenwird, und die Massen aufeinanderstoßen, kommt es zur Übertragung von Stößen. Stößebewirken eine Diskontinuität in der Simulation. Sie werden als Spezialfall behandelt.

3.4 Rad-Straße-Verhalten

In den Kontaktflächen zwischen Reifen und Boden (diese Kontaktfläche wird in derFachliteratur auch als „Latsch“ bezeichnet) ergeben sich zur Laufzeit Reibungskräfte,die das Fahrverhalten des Fahrzeuges maßgeblich beeinflußen. Das Problem bei dergenauen Bestimmung der Reibkräfte liegt darin, daß der Reifen deformierbar ist. EinLuftreifen wird durch die Radlast eingedrückt. Dadurch verkleinert sich sein Abrollra-dius. Das wiederum wirkt sich auf die Abrollgeschwindigkeit in der Kontaktfläche aus.Sie ist kleiner als jene, die sich aus Reifenradius und Winkelgeschwindigkeit bei einemgleich großen Holzrad ergeben würde. Zusätzlich zur vertikalen Verformung kann sichder Reifen aber auch horizontal verformen (Kippmoment) oder eindrehen (Bohrmo-ment). Um diese Deformationen und die daraus resultierenden Kräfteentwicklungen imModell zu beschreiben ist ein aufwendiger Modellierungsansatz nötig.In dem vorliegenden Modell werden nur jene Kräfte betrachtet, die sich aufgrund derhorizontalen Beschleunigungen des Reifens ergeben. Der Reifenradius wird konstantangenommen.

3.4.1 Bodenhaftung

Die Kraft, die der Autoreifen auf die Straße übertragen kann, ist proportional zur Radlastund wird durch die Reibeigenschaften des Reifenmaterials begrenzt. Betrachtet man den

Page 49: Ackerman Geometrisi Diplomarbeit

35 Das Fahrzeugmodell

Reifen bei konstanter Radlast, so kann das Haftungsverhalten mit Hilfe des Kamm’schenKreises [DIN50323] veranschaulicht werden (siehe Abb. 3.3). Der Autoreifen hält einergewissen Kraft stand. Übersteigt die Kraft am Reifen das Haftungslimit, beginnt er aus-zubrechen.Nutzt man die gesamte Kraft für die Beschleunigung, kann der Reifen keine Seitenkräfteübertragen. Beim leichtesten Lenkeinschlag würde der Reifen zu rutschen beginnen. Inmaximaler Kurvenlage hingegen wird die gesamte Kraft für die Seitenführung benötigt.Gasgeben oder Bremsen führt zum Ausbrechen des Reifens.

Um festzustellen, ob ein Reifen die volle Bodenhaftung hat oder nicht, muß die berech-nete Kraft in der Bodenkontaktfläche gegen die maximal zulässige Reibkraft zwischenReifen und Untergrund getestet werden. Eine relativ realistische Modellierung derBodenhaftung liefert die sogenannten „Pacejka Magic Formula“. Sie gibt die horizontale

Belastbarkeit eines Reifens für unterschiedliche Schlupfwinkel1 und Radlasten wieder.In Beckman’s The Physics of Racing-Serie [Beck 01], Teil 21 und Teil 22 findet mandazu genauere Erläuterungen. Longitudinal- und Lateralkräfte werden getrennt betrach-tet. Für die Longitudinalversion der Formel werden elf Kenngrößen des Reifens benö-tigt. Für die Lateralversion der Formel vierzehn. [Beck 01] entnimmt diese Größen aus[Gent 97]. Sie beziehen sich auf die Hafteigenschaften eines im Rennsport verwendetenReifen auf Asphalt.Für die Geländesimulation können diese Kennlinien nicht direkt übernommen werden.Zum einen hat ein Geländereifen andere Hafteigenschaften als der relativ klebrige Rei-fen aus dem Beispiel von [Beck 01]. Zum anderen ist die Bodenhaftung des Reifens aufjedem Untergrund verschieden. Möchte man die Formel anwenden, so müßten sämtliche

1. Winkel zwischen der Längsachse und der Beweungsrichtung des Reifen

Abbildung 3.3: Kamm’scher Kreis

Page 50: Ackerman Geometrisi Diplomarbeit

Lenkung 36

Kenngrößen geschätzt werden. Aus diesem Grund wird die Bodenhaftung mit Hilfe derin Abschnitt 2.8 vorgestellten Zusammenhänge modelliert: Bis zu einer gewissenSchwelle (Kraftvektor innerhalb des Kreises, Abb. 3.3) ist die Reibkraft in der Boden-kontaktfläche gleich der seitlichen Kraft. Übersteigt die Kraft am Reifen das Haftungsli-mit ( ) geht der Reifen in den Zustand der Gleitreibung über. Die maximaleKraft, die der Reifen in diesem Zustand auf die Straße übertragen kann, liegt bei

.

3.4.2 Rollwiderstand

Aufgrund der Verformung des Reifens, die während der Abrollbewegung beobachtetwerden kann, ergibt sich eine Widerstandskraft, die dem Drehimpuls des Reifens entge-genwirkt. Mit zunehmender Geschwindigkeit steigt der Rollwiderstand annähernd linearan und wirkt der Rollbewegung des Reifens entgegen. Er kann durch die Wahl einesgeeigneten Multiplikationsfaktors modelliert werden. Monster beschreibt die Herleitungdes Faktors auf der Internet-Seite Car Physics for Games [Mons 01].Bei der Berechnung des Rollwiederstandes muß außerdem die Radlast miteinbezogenwerden. Der ermittelte Multiplikationsfaktor gilt bei ebener Auflage des Fahrzeuges.Lastet auf einem Reifen eine größere Last, so steigt der Rollwiderstand in diesem Reifenan.

Da die Antriebs- und Bremskräfte in den Reifen über Momente spezifiziert werden, ist esnaheliegend, den Rollwiderstand ebenfalls über ein Moment in das System zuzuführen.Das Gesamtmoment am Reifen ergibt sich aus der Summe von Antriebsmoment, Brems-moment und Rollwiderstandsmoment.

Im Skriptum der Fachhochschule Regensburg für Fahrzeugdynamik [Rill 01] ist dieBerechnung des Rollwiderstandsmomentes über Radlast, Reifenradius und Rollwider-standsbeiwert zu finden. Der Zusammenhang der Größen wird in Gleichung (3.1) aufge-zeigt. Der Rollwiderstandsbeiwert ist in einem Bereich von anzu-nehmen. ist die Radlast und r der Reifenradius. Skaliert man in Abhängigkeit von

der Geschwindigkeit des Reifens, so ergeben sich ähnliche Werte wie bei [Mons 01].

3.5 Lenkung

Um das Auto in eine Kurvenbahn zu lenken, müssen die Räder des Fahrzeuges in einemgeeigneten Winkel eingeschlagen werden. Dadurch kommt es zur Entwicklung von Sei-tenführungskräften, die das Fahrzeug in eine Kurvenbahn zwingen.Oftmals werden die Reifen aber nicht nur um die Höhenachse, sondern auch um die

F N µs⋅≥

F N µk⋅=

0 010 fR 0 025,≤ ≤,Fg fR

MRW

Fg fR⋅r

---------------= (3.1)

Page 51: Ackerman Geometrisi Diplomarbeit

37 Das Fahrzeugmodell

Längsachse eingeschlagen. Die Schrägstellung des Reifens soll für eine bessere Kom-pensation der Seitenkräfte sorgen. Solche Schrägstellungen werden hier nicht berück-sichtigt.

Neben der Bestimmung eines geeigneten des Lenkwinkels in Abschnitt 3.5.1 werden inAbschnitt 3.5.2 jene Kräfte behandelt, die beim Lenkvorgang zwischen Rädern undBoden auftreten.

3.5.1 Ackerman-Lenkung

Wird das Fahrzeug in eine Kreisbahn gelenkt, so hat der Reifen auf der Kurveninnenseiteeine kleinere Kreisbahn zu beschreiben als der Reifen auf der Kurvenaußenseite. Des-halb ist es sinnvoll, den Innenreifen beim Lenken stärker einzuschlagen. Der exakteLenkwinkel für jedes der Räder läßt sich mit Hilfe der Ackermann-Bedingung herleiten.(siehe [Dubb 90], Q 21, „5.6 Lenkungen“). Sie besagt, daß sich die Achsen der vierRäder beim Lenken in einem Schnittpunkt treffen müssen. Dadurch wird sichergestellt,daß die Reifen konzentrischen Kreisbahnen um den Mittelpunkt des Wendekreises fol-gen (siehe Abb. 3.4). Solange das Fahrzeug nicht aus seiner Spur ausbricht, wird damitdie bestmögliche Bodenhaftung erreicht.

Aus der Länge des Radstandes und dem Wendekreisradius können die Winkel der Räderausgerechnet werden. Eine detaillierte Herleitung der Winkel folgt in Abschnitt 6.1.9 aufSeite 87.

3.5.2 Lenkkräfte

Durch den Lenkeinschlag der Reifen und die Vorwärtsbewegung des Autos ergeben sichin den Kontaktflächen zwischen Reifen und Boden Reibungskräfte, die das Auto in eineKurvenbahn zwingen:

Angenommen, ein Auto bewegt sich entlang des Geschwindigkeitsvektors v, so könnennur jene Reifen diese Geschwindigkeit zur Gänze in eine Rollbewegung umsetzen, deren

Abbildung 3.4: Lenkprinzip nach Ackerman

Page 52: Ackerman Geometrisi Diplomarbeit

Antrieb 38

Laufrichtung parallel zum Geschwindigkeitsvektor verläuft. Ein Rad, dessen Laufrich-tung von der Bewegungsrichtung des Fahrzeuges abweicht, kann nur einen Teil derGeschwindigkeit in eine Rollbewegung umsetzen. Den Geschwindigkeitsanteil, der vomReifen abgerollt wird, bezeichne ich als . Er wird in Longitudinalrichtung des Rei-fens abgetragen. Normal dazu steht der laterale Geschwindigkeitsanteil . Er verläuftin der Bodenebene im Auflagepunkt des Reifens (siehe Abb. 3.5).

Der laterale Geschwindigkeitsanteil kann einer seitlichen Beschleunigung des Reifensgleichgesetzt werden. Bei Bewegung des Fahrzeuges entlang des Geschwindigkeitsvek-tors baut sich von einem Simulationspunkt zum nächsten eine Positionsdifferenz von der– durch den Lenkeinschlag vorgegebenen – Kreisbahn auf. (Aufgrund der Diskretisie-rung der Zeit verläuft die Kreisbahn eigentlich nicht entlang eines Kreises, sondern ent-lang eines Vielecks.) Die Positionsdifferenz wird durch Integration der Lateralgeschwin-digkeit innerhalb des betrachteten Simulationszeitschrittes beschrieben. Da sich dieLateralgeschwindigkeit in der Zeitspanne von 0 auf erhöht, kommt einer seitli-chen Beschleuingung des Reifens gleich.

Aus der seitlichen Beschleunigung und aus der Auflagekraft wird die Kraft berechnet,die lateral auf den Reifen wirkt. Zusammen mit der Kraft aus Antrieb, Bremse und Roll-widerstand wird daraus der Kraftvektor in der Auflagefläche des Reifens ermittelt. Dasist jener Vektor, der gegen die maximal zulässige Reibkraft getestet werden muß, um einAusbrechen der Reifen feststellen zu können (siehe Abb. 3.3).

Die Auflagekraft ist gleich der Stauchung der Federn in Reifen und Radaufhängung.Durch die Rückkopplung der Masse-Feder-Systeme mit dem Boden und mit dem Starr-körper pendelt sich diese Kraft auf einen realistischen Wert ein.

3.6 Antrieb

Der Antieb des Fahrzeuges besteht aus dem Motor, der Getriebe-Übersetzung und denAntriebsreifen. Das vom Motor produzierte Drehmoment ist von seiner Umdrehungszahlabhängig. Es wird durch das Getriebe von der Kurbelwelle auf die Antriebsreifen über-tragen. Die Antriebsreifen bringen das Moment auf die Straße und beschleunigen das

vlong

vlat

Abbildung 3.5: Aufspaltung des Geschwindigkeitsvektors am Reifen

vlat vlat

Page 53: Ackerman Geometrisi Diplomarbeit

39 Das Fahrzeugmodell

Fahrzeug.Die Rückkopplung zwischen Motor und Antriebsreifen wird über die Drehzahl der Rei-fen hergestellt. (Motor und Reifen sind im eingekuppelten Zustand fix miteinander ver-bunden!) Wird das Fahrzeug beschleunigt, so ändert sich die Drehzahl der Räder. DerMotor wird in einen neuen Drehzahlbereich versetzt und liefert ein neues Anstriebsmo-ment.

Für die Simulation wäre es wünschenswert, den Zusammenhang zwischen Motordreh-zahl und Drehmoment durch eine Funktion oder durch ein System zu beschreiben. Daein Verbrennungsmotor in seinem Aufbau relativ komplex ist, ist es jedoch nicht einfach,geeignete Gleichungen zu finden. Neben der Mechanik spielt hier die Verbrennungstech-nik eine wesentliche Rolle. Aus diesem Grund wird die sogenannte Drehmomentkurveverwendet, um das Laufzeitverhalten des Motors zu beschreiben. Die Drehmomentkurvegibt den Zusammenhang zwischen Drehzahl und Drehmoment bei einer bestimmtenStellung des Gaspedals wieder. Sie ist eine charakteristische Kennlinie, die von Motor zuMotor unterschiedlich aussieht.Die Drehmomentkurven werden meist von den Automobil- und Motor-Herstellern veröf-fentlicht. Mitsubishi stellt beispielsweise eine recht umfangreiche Broschüre als Pres-seinformation zum Lancer Evolution VII zur Verfügung [Mits 02]. Sie enthält nebenzahlreichen technischen Details auch Informationen zur Motorisierung des Fahrzeuges.

3.6.1 Drehmomentkurve

Die Drehmomentkurve eines Motors gibt Aufschluß über das erzeugte Drehmoment beieiner bestimmten Umdrehungszahl. Dieser Zusammenhang wird in einem zweidimen-sionalen Diagramm als Kennlinie eingetragen (siehe Abb. 3.6). Da diese Kennlinie typi-scherweise nur für den Vollast-Betrieb des Motors angegeben wird, ist es nötig, dieDrehmomentkurve für den Teillastbetrieb zu skalieren.

Abbildung 3.6: Beispiel für eine Drehmomentkurve

Page 54: Ackerman Geometrisi Diplomarbeit

Antrieb 40

3.6.1.1 Skalierung der Drehmomentkurve

Kennt man die Kennlinien des Motors bei unterschiedlicher Treibstoffzufuhr nicht, sokann man sich damit behelfen, die 100 %-Kennlinie für den Teillastbetrieb zu skalieren.Bei geringerer Treibstoffzufuhr und gleicher Umdrehungszahl liefert der Motor ein nied-rigeres Drehmoment. Es kann wie folgt berechnet werden: Um das Drehmoment für denTeillastbetrieb anzupassen, muß die Vollastkurve gegen die X-Achse eines im Uhrzeiger-sinn rotierten Koordinatensystems skaliert werden (siehe Abb. 3.7). Rotationsmittel-punkt und Drehwinkel werden fix angenommen. Sie bestimmen die Ausprägung derTeillastkurven. Diese Skalierung kann für jede beliegibe Gasstelung zwischen 0 und100% durchgeführt werden. So lassen sich sehr realitätsnahe Kurven für den Motorberechnen. Mit dem Winkel und dem Drehpunkt muß man etwas experimentieren. Diemaximale Motordrehzahl wird durch die Stellung des Gaspedals abgegrenzt.

In der Skizze wurde die Vollastkurve auf eine Teillast von 50% und auf eine Teillast von0% skaliert. Dabei fällt auf, daß die Teillast-Kurven im höheren Drehzahlbereich stark inden negativen Bereich fallen können. Dieser Effekt ist bis zu einem gewissen Graderwünscht, da sich damit die Motorbremswirkung beschreiben läßt. Da das negativeMoment mitunter sehr groß werden kann, muß eine Untergrenze für das Drehmomenteingeführt werden.

Um zur Laufzeit CPU-Zeit zu sparen, kann man die Teillast-Kurven vorberechnen. DieBetrachtung einiger Stützpunkte (zB alle 500 RPM) ist ausreichend. Während der Simu-lation werden die Zwischenwerte linear interpoliert.

3.6.2 Getriebe

Ein Benzinmotor hat üblicherweise einen nutzbaren Drehzahlbereich von 1000 bis 6000Umdrehungen pro Minute und liefert ein Drehmoment von etwa 150 bis 400 Nm. Durchdas Getriebe werden sowohl das Drehmoment als auch die Drehzahl des Motors skaliert.

Abbildung 3.7: Skalierung der Drehmomentkurve

Page 55: Ackerman Geometrisi Diplomarbeit

41 Das Fahrzeugmodell

Die Kombination aus Gang und Differential bewirkt, daß das Drehmoment von der Kur-belwelle bis hin zu den Antriebsreifen vervielfacht wird. Gleichsam wird die Umdre-hungszahl auf einen Bruchteil der Motordrehzahl herabgesetzt. Das Übersetzungsver-hältnis läßt sich mit Hilfe der Gangschaltung auswählen.

Dazu ein kleines Rechenbeispiel:

Basierend auf den Angaben in Tab. 3.1 läßt sich für die Antriebsräder im ersten Gang einÜbersetzungsfaktor von 3,5 * 3,6 = 12,6 bestimmen. Dh., für eine Umdrehung der Rädermuß der Motor 12,6 Umdrehungen leisten. Gleichsam erhöht sich das Drehmoment inden Reifen auf das 12,6-fache dessen, was an der Kurbelwelle anliegt. Nehmen wir einDrehmoment von 190 Nm bei einer Umdrehungszahl von 3500 Umdrehungen proMinute an. Das Auto hat eine Masse von 1140 kg. Der Reifen hat einen Radius von0,33 m. Außerdem wird der Übersetzungsfaktor für das Drehmoment durch Reibungs-verlußte im Getriebe etwas abgeschwächt. Typischerweise kann man die Getriebe-Effizi-enz mit etwa 70 bis 90 % annehmen. Das ergibt eine Antriebskraft von 190 * 3,5 * 3,6 *0,7 / 0,33 = 5078,2 N in der Auflagefläche. Damit kann man eine Masse von 1140 kg mit4,45 m/s beschleunigen. Das entspricht 0,45 g.

Gleichsam bewirkt das Getriebe eine Verminderung der Drehzahl. Bei 3500 Umdrehun-gen pro Minute an der Kurbelwelle und einem Übersetzugsverhältnis von 12,6 : 1 erhältman eine Reifendrehzahl von 3500 / 60 / 12,6 = 4,6 Umdrehungen pro Sekunde. Da dieReifendrehzahl direkt mit der Fortbewegungsgeschwindigkeit des Autos gekoppelt ist,kann man daraus die Geschwindigkeit des Autos ableiten (natürlich nur, soferne der Rei-fen volle Bodenhaftung hat). Die Umdrehungszahl multipliziert mit dem Reifenumfangergibt eine Geschwindigkeit von 9,6 m/s. Das sind etwa 34,6 km/h.

3.6.2.1 Kupplung

Die Kupplung sorgt für die Verbindung zwischen Antrieb und Rädern. Bei voll durchge-tretener Kupplung gibt es keine Verbindung zwischen Motor und Antriebsrädern. Bei

Gang Übersetzung1 3,50 : 12 2,20 : 1

3 1,50 : 14 1,10 : 15 0,94 : 1

Differential-getriebe

3,60 : 1

Tabelle 3.1: Getriebeübersetzung eines Alpha Romeo. Quelle: [Mons 01]

Page 56: Ackerman Geometrisi Diplomarbeit

Antrieb 42

losgelassener Kupplung ist die Verbindung voll hergestellt. Für die Rückkopplung derAntriebsräder mit dem Motor muß dieser Faktor berücksichtigt werden. Wird dieGeschwindigkeit des Autos (aufgrund von Masseträgheit, Rollwiderstand oder Luftwi-derstand) verringert, verringert sich auch die Drehzahl der Reifen. Im eingekuppeltenZustand füht dies zu einer direkten Veränderung der Motordrehzahl.

Jeder, der einmal die Fahrschule besucht hat, weiß, daß die Masseträgheit des Fahrzeu-ges dem Motor zum Verhängnis werden kann: Kuppelt man zu rasch ein, stirbt der Motorentweder ab, oder man produziert einen „Kavalier-Start“. Um zu verhindern, daß derMotor in der Simulation absterben kann, wird die Drehmomentkurve entsprechend ange-paßt. Setzt man das Drehmoment vor dem Beginn des nutzbaren Drehzahlbereiches aufeinen Wert größer Null, so kann die Drehzahl des Motor nie auf Null abfallen.

Die Kupplung ist als multiplikativer Faktor modelliert, der die Übertragung des Drehmo-ments an die Reifen skaliert. 0 entspricht dem ausgekuppelten Zustand. 1 bedeutet, dieVerbindung zum Motor ist voll hergestellt. Neben der Übertragung des Antriebsmomen-tes wird der Kupplungsfaktor auch bei der Rückführung der Reifendrehzahl berücksich-tigt.

3.6.3 Rückkopplung von Motor und Antriebsreifen

Für die Berechnung der Traktionskräfte wird zwischen freilaufenden Rädern unterschie-den, und Rädern, die an den Antrieb gekoppelt sind. Als freilaufend gelten alle Räder,die permanent oder temporär vom Antriebsstrang entkoppelt sind. Im ausgekuppeltenZustand, und im Leerlauf, sind das alle vier Räder.

Ist ein Gang eingelegt und die Verbindung zum Motor hergestellt, wird das Drehmomentdes Motors über die Reifen auf die Straße übertragen. Im Zustand der Haftreibung kanndie daraus resultierende Traktionskraft ohne Verlust auf die Straße übertragen werden.Im Zustand der Gleitreibung nur ein Teil davon. In beiden Fällen bewirkt die Traktions-kraft eine Beschleunigung des Fahrzeuges. Seine Geschwindikgeit verändert sich. Nebender Geschwindigkeit des Fahrzeuges ändert sich (aufgrund des Bodenkontaktes) aberauch die Drehzahl der Räder. Da die Reifen über das Getriebe mit dem Antrieb verbun-den sind folgt daraus eine Änderung der Motordrehzahl. Der Motor liefert im nächstenSimulationsschritt ein neues Drehmoment. Dieses wird über die Reifen auf die Straßeübertragen, bewirkt eine Beschleunigung des Fahrzeuges, und der Zyklus beginnt vonvorne.

Bei Bodenkontakt und voller Haftung der Antriebsreifen bereitet dieser Ansatz keinenennenswerten Probleme. Anders sieht das im Zustand der Gleitreibung aus. WelcheReifendrehzahl kann man hier für die Rückkopplung zum Motor verwenden? Es bestehtkein direkter Zusammenhang zwischen Rotationsgeschwindigkeit des Reifens und derGeschwindigkeit des Autos. Nicht ganz ohne Probleme ist auch die Betrachtung desMotors im entkoppelten Zustand. Die Reifendrehzahl hat hier keinerlei Einfluß auf dasLaufverhalten des Motors. Mögliche Lösungen für diese beiden Probleme möchte ich imFolgenden kurz besprechen.

Page 57: Ackerman Geometrisi Diplomarbeit

43 Das Fahrzeugmodell

3.6.3.1 Verhalten im Leerlauf

Das Leerlaufverhalten des Motors läßt sich am besten Mittels einer Schwungmasse inden Griff bekommen. Diese wird beim Gasgeben mit dem Drehmoment des Motors ver-orgt und baut aufgrund dessen einen Drehimpuls auf. Ansonsten würde man beim Gas-geben kein Hochdrehen des Motors beobachten können. Nimmt man das Gas weg, redu-ziert sich die Umdrehungszahl (aufgrund der aus der Drehmomentkurve entnommenenMotorbremswirkung) wieder.

3.6.3.2 Bestimmung der Drehzahl bei Gleitreibung

Da sich der Zustand der Gleitreibung irgendwo zwischen „keinem Bodenkontakt“ und„statischer Reibung“ einordnen läßt, habe ich nach einem Ansatz gesucht, der diesenZustand wiederspiegelt. Befinden sich die Antriebsreifen in der Luft, dienen sie – so wiedie Schwungmasse des Motors, die ich zu Hilfszwecken eingeführt habe – zur Speiche-rung des Motordrehmomentes. Bei vollem Bodenkontakt hingegen geben sie die exakteGeschwindigkeit des Autos (entlang der Laufrichtung des Reifens) wieder.

Unter dieser Annahme erscheint es als sinnvoll, die Drehzahl der Reifen auf einen Wertzu schätzen, der irgendwo zwischen der Drehzahl bei keinem Bodenkontakt und derDrehzahl bei Haftreibung liegt. Als Skalierungsfaktor wird das Verhältnis von „angeleg-tem Drehmoment“ zu „auf die Straße übertragenem Drehmoment“ verwendet. Damitbewegt sich die Drehzahl eines durchdrehenden Reifens immer in einem plausiblen Wer-tebereich.

3.7 Bremse

Die Bremse ist als Scheibenbremse modelliert. Durch das Andrücken der Bremsklötzean die Bremsscheibe wird ein Moment erzeugt, das der Rotation des Reifens entgegen-wirkt. Es berechnet sich aus dem Radius der Bremsscheibe mal der Reibkraft der Brems-klötze. Die Reibkraft ist gleich der anliegenden Bremsdruck mal dem Reibkoeffizienten

.

Um eine Bremskraftverteilung vorzunehmen, kann man unterschiedlich große Brems-scheiben verwenden. In der Autoindustrie ist diese technische Realisierung üblich. Daman im Modell nicht auf technische Umsetzbarkeit achten muß, ist es einfacher, denBremsdruck prozentuell auf die vier Radbremsen zu verteilen.

3.8 Simulationszyklus

Aufgrund von Datenabhängigkeiten bei der Berechnung von Zustandsvariablen undHilfsgrößen muß darauf geachtet werden, die einzelnen Simulationsschritte in richtigerReihenfolge auszuführen. Dabei müssen gewisse Abfolgen eingehalten werden:

1. Unmittelbar nach der Zustandsüberführung des Starrkörpers werden mit Hilfe vonKollisionsabfragen die Angriffspunkte von Kräften und Stößen ermittelt.

µ

Page 58: Ackerman Geometrisi Diplomarbeit

Simulationszyklus 44

2. Die Berechung und Übertragung von Kräften beginnt in den Reifen und setzt sichüber die Federung bis hinauf zum Starrkörper fort.

3. Die Modellierung des Motors verlangt es, zuerst das Antriebsmoment des Motors aufdie Straße zu übertragen. Dann folgt die Zustandsüberführung des Starrkörpers. DasAuslesen der Reifendrehzahl und dessen Rückkopplung mit der Motordrehzahl kannerst unter Kenntnis der neu berechneten Starrkörper-Geschwindigkeit erfolgen.

Der daraus resultierende Simulationszyklus ist in Abb. 3.8 dargestellt.

Abbildung 3.8: Simulationszyklus

Page 59: Ackerman Geometrisi Diplomarbeit

45 Das Fahrzeugmodell

3.9 Physikalisches Modell und Geometrie

Während die Geometrie die Form des Fahrzeuges beschreibt, die Form der einzelnenTeilkomponenten und deren Anordnung zueinander, ist das physikalische Modell für dieDynamik des Fahrzeuges verantwortlich. Dynamik und Geometrie stehen in engerBeziehung zueinander, da die Dynamik maßgeblich von Form und Anordnung der Kom-ponenten beeinflußt wird.

Zur Visualisierung des Fahrzeuges werden Visualisierungsdaten benötigt. Diese könnendie Geometrie des Fahrzeuges mehr oder weniger genau wiedergeben. Die Rundungeines Reifens wird meist durch ein Vieleck beschrieben, die Karosserie durch ein Gitter,das sich zwischen Oberflächenpunkten des Fahrzeuges aufspannt und dessen Formapproximiert. Liegt keine genauere Geometriebeschreibung vor, werden die Visualisie-rungsdaten mit den Geometriedaten des Fahrzeuges gleichgesetzt. Bei Polygonmodellenist der Körper durch die Polygone und durch deren Normalvektoren ausreichend spezifi-ziert.Für Kollisionsabfragen mit der Karosserie werden die Normalen an die Oberfläche desFahrzeugkörpers benötigt. Liegen mehrere Detailstufen der Visualisierungsdaten vor,lassen sich genaue Schnittberechnungen nur in der höchsten verfügbaren Auflösungberechnen. Für eine effiziente Abfrage der Kollisionen ist es jedoch ratsam eine mög-lichst niedrige geometrische Auflösung zu verwenden. Sie muß nur den groben Umrißdes Fahrzeuges wiedergeben. Auf diese Weise läßt sich einiges an CPU-Zeit einsparen.

Das physikalische Modell beschränkt sich auf wenige Koordinatenpunkte. Das sind dieVerbindungspunkte der einzelnen (beweglichen) Komponenten. Für die Statik des Fahr-zeuges ist die relative Lage der Aufhängungspunkte zum Masseschwerpunkt des Kör-pers von Bedeutung. Zudem wird durch die Lage des Schwerpunktes das Fahrverhaltenmaßgeblich beeinflußt. Die Gewichtsverteilung zwischen Vorder- und Hinterrädern beimBeschleunigen und beim Bremsen hängt von der Lage des Schwerpunktes ab. Auch dasKurvenverhalten des Fahrzeuges. Da der Masseschwerpunkt üblicherweise nicht im geo-metrischen Mittelpunkt der Karosserie liegt, deckt sich die Ausdehnung des Starrkörpersnicht mit der Ausdehnung der Karosserie (siehe Abb. 3.9). Das ist aber nicht von Bedeu-tung. Wichtig ist, daß das Trägheitsverhalten des Fahrzeuges durch den Quader reali-stisch angenähert wird.

Abbildung 3.9: Verwendung des Starrkörpers im Fahrzeugmodell

Page 60: Ackerman Geometrisi Diplomarbeit

Physikalisches Modell und Geometrie 46

Durch geeignete Wahl von Lage und Größe des Starrkörpers kann das gewünschte Träg-heitsverhalten gut nachgebildet werden. Die Verbindungspunkte von Karosserie undRadaufhängung, bzw. von Radaufhängung und Reifen (in der Abbildung als schwarzePunkte dargestellt) stehen mit dem Starrkörper nur insofern in Verbindung, als durchdessen Lage die Gewichtsverteilung auf die Auflagepunkte bestimmt wird. Im obenabgebildeten Fall wäre es ratsam, die Hinterachse stärker zu federn, als die Vorderachse,da dort das größte Gewicht getragen wird.

Page 61: Ackerman Geometrisi Diplomarbeit

Kapitel 4

Visualisierung des Terrains

4.1 Allgemeines

Für die effiziente Echtzeitdarstellung von Geländedaten gibt es eine Vielzahl von Algo-rithmen. Das Quadtree-basierte Verfahren von Röttger et al. [RHSS 97], der ROAMAlgorithmus [DWSM 97], oder das Verfahren zum Real-Time Continous Level of DetailRendering of Height Fields von Lindstrom et al. [LCRH 96] (auch kurz CLOD genannt)sind nur ein paar der bekanntesten. Diese Algorithmen basieren auf regulären Gitter-strukturen. Das heißt, die Triangulierung der Geländedaten folgt einem vorgegebenemGrundraster. Daneben gibt es auch Verfahren zur Generierung von irregulären Netzen.Diese möchte ich hier aber nur der Vollständigkeit halber erwähnen. Sie sind – aufgrunddes Implementierungsaufwandes – für meine Zwecke als Overkill zu betrachten.

Ziel der unterschiedlichen Visualisierungsverfahren ist es, die Anzahl der Dreiecke, diedurch die Render Pipeline [D3DP 98] geschickt werden, auf ein Minimum zu reduzieren.Eine erste Reduktion der Daten wird durch die Triangulierung des Geländes erreicht.Durch die Verwendung unterschiedlicher Detailstufen kann die Anzahl der Dreieckestark herabgesetzt werden. Die Algorithmen versuchen genau das zu erreichen, ohnedabei gröbere Qualitätseinbußen in der Darstellung zu verbüßen. Das primäre Entschei-dungskriterium für die Detailreduktion ist üblicherweise die Entfernung der Gelände-punkte zum Betrachter. Da die „Pixelgröße“ eines Dreiecks mit zunehmender Distanzvon der Kamera abnimmt, können weiter entfernte Regionen mit geringerem Detailgradwiedergegeben werden, ohne daß die Qualität der Darstellung merklich darunter leidet.Ein weiteres Kriterium stellen die Unebenheiten im Gelände dar. Eine ebene Fläche kannmit weniger Polygonen dargestellt werden, als eine stark zerklüftete Region. Um einaugenfälliges Umschalten zwischen zwei Detailstufen während des Durchwanderns derLandschaft zu vermeiden, sollte man die Höhenabweichungen, die bei der Detailreduk-

47

Page 62: Ackerman Geometrisi Diplomarbeit

Quadtree-Verfahren nach Röttger 48

tion unebener Geländeregionen entstehen können, in die Level of Detail1 (LOD)-Ent-scheidung miteinbeziehen.

Im Idealfall werden nur jene Dreiecke an die Pipeline übergeben, die im betrachtetenLandschaftsausschnitt auch tatsächlich zu sehen sind. Deshalb ist es sinnvoll, weitereTechniken zur Minimierung der Datenmenge einzusetzen. Durch die Entfernung allerDreiecke, deren Oberfläche von der Kamera wegzeigt (Backface Culling), durch denTest der Dreiecke gegen die Blickpyramide (Frustum Culling) und die Entfernung vonverdeckten Dreiecken (Occlusion Culling) lassen sich einige weitere Dreiecke einsparen,die für die Darstellung der Szene nicht benötigt werden. Auf diese Weise nähert man sicheiner minimalen Menge von Dreiecken, die zur Darstellung des Terrains benötigt wird.

Im Folgenden werden zwei Quadtree-basierte Algorithmen zur Visualisierung vonGeländedaten vorgestellt: Das Quadtree-Verfahren nach Röttger, und das Verfahren vonBoer unter Verwendung von „Geometrischem Mipmapping“. Letzteres wird ausführli-cher behandelt, da es in der vorliegenden Implementierung eingesetzt wird.

4.2 Quadtree-Verfahren nach Röttger

Röttger [RHSS 97] beschäftigt sich im wesentlichen mit der Triangulierung des Gelän-des und dem Aufbau eines Quadtrees, nach dem die Triangulierung vorgenommen wer-den kann. Da jede Verfeinerung des Quadtrees gleichbedeutend einer Verfeinerung desGeländedetails ist, und sich zwei benachbarte Quadtree-Zellen maximal um eine Detail-stufe unterscheiden dürfen, legt Röttger sein Hauptaugenmerk auf die Findung einesgeeigneten Verfeinerungskriteriums. Zwei Aspekte fließen in das Kriterium mit ein: DerAbstand der Gelände-Zellen zum Betrachter und die Unebenheiten im Gelände. In einemersten Durchlauf wird das Gelände analysiert und der Quadtree aufgebaut. In einemzweiten Durchlauf werden die Geländedaten mit Hilfe des Quadtrees auf dem Bild-schirm ausgegeben.

In einer unvollständigen Implementierung, in der die LOD-Entscheidung für die Trian-gulierung ausschließlich aufgrund der Distanz zum Betrachter erfolgt, arbeitet diesesVerfahren relativ laufzeiteffizient. Abb. 4.1 zeigt den Algorithmus im Einsatz. Dort aller-dings, wo größere Unebenheiten in der Landschaft auftreten, können die Hügel etwaskantig aussehen. Auch ist ein leichter Gelände-“Popping“ Effekt (also ein wahrnehmbarsHüpfen zwischen zwei LOD-Zuständen einer Geländeregion) bemerkbar. Röttger führtaus diesem Grund die sogenannten „d2-Werte“ als Maß für Oberflächenunebenheitenein. Sie repräsentieren den maximalen Höhenfehler, der aufgrund einer Detailänderungpassieren kann.

Leider bringt die Hinzunahme der d2-Werte in meiner Implementierung Geschwindig-keitseinbußen von bis zu 40% mit sich. Deshalb verwende ich statt des Algorithmus von

1. Die geometrische Detailreduktion von 3-dimensionalen Objekten wird erstmals in [Clar 76] erwähnt. Clark verwendet für die einzelnen Versionen der Objekte die Bezeichnung Levels Of Detail. Dieser Terminus wird seither häufig im Zusammenhang mit unterschiedlichen Geometrie-Auflösungen verwendet.

Page 63: Ackerman Geometrisi Diplomarbeit

49 Visualisierung des Terrains

Röttger ein anderes Verfahren, das im Grunde relativ ähnlich funktioniert. Es nennt sichGeometrical Mipmapping und ist im Hinblick auf heute verwendete Render-Hardwaredem Verfahren von Röttger vorzuziehen.

4.3 Geometrical Mipmapping

Auf älteren Computersystemen (die noch keine Hardware Transformationen unterstüt-zen) kann man durch die Auswahl einer möglichst minimalen Menge an Visualisierungs-daten kostbare CPU Zeit einsparen. Mit der Verlagerung der rechenintensiven Vertex-Transformationen von der CPU auf die GPUs heutiger Graphikkarten (NVidia bietetHardware Transform and Lighting ab der GeForce2) ist es nicht mehr so wichig, einemöglichst optimale Menge an Dreiecken an die Hardware zu schicken. Wichtigererscheint es, ein möglichst schnelles Verfahren zur Sichtbarkeitsentscheidung und zurTriangulierung der Geländedaten zu finden, und damit die CPU zu entlasten. So werdenzwar einige „überflüssige“ Dreiecke an die Hardware geschickt. In Anbetracht der Lei-stungsfähigkeit heutiger Graphikkarten lassen sich damit aber dennoch höhere Bildwie-derholfrequenzen erzielen.

Der Algorithmus von Boer [Boer 00] versucht genau diese Aspekte zu berücksichtigen.Ihm liegt, so wie auch dem Verfahren von Röttger et al., die Verwendung einer Quadtree-Struktur zugrunde. Diese hat sich für schnelle Sichtbarkeitsentscheidungen bewährt.

4.3.1 Das Prinzip

Beim Geometrical Mipmapping wird die Landschaft in sogenannte „Terrainblöcke“unterteilt. Ein Terrainblock ist nichts anderes, als eine Untermenge der Vertexdaten, dieaus einem quadratischen Ausschnitt des Grundrasters entnommen wird. Die Terrain-

Abbildung 4.1: Gelände-Triangulierung unter Verwendung des Quadtree Algorithmus mit Distanz-basiertem LOD

Page 64: Ackerman Geometrisi Diplomarbeit

Geometrical Mipmapping 50

blöcke besitzen alle die gleiche Auflösung. Sie überlappen sich nicht. Abb. 4.6 auf Seite57 zeigt einen Terrainblock mit einer Auflösung von 5x5 Vertices. Die Auflösung kannfrei gewählt werden. Man sollte jedoch darauf achten, daß die Seitenlänge des Terrain-blocks ein ganzzahliger Teiler der Seitenlänge des Grundrasters ist. Dadurch wird einekomplette Flächendeckung garantiert. Bei einer Landschaftsgröße von 257x257 Verticeshat sich eine Auflösung von 17x17 Vertices bewährt. Die Wahl der richtigen Auflösungkann die Ausgabegeschwindigkeit maßgeblich beeinflußen.Ein kleiner Nachteil bei der Verwendung von Geomipmaps liegt in der Aufteilung derDaten. Da die Vertices in den vier Kanten eines Terrainblocks mit den umliegendenBlöcken geteilt werden, werden sie mehrmals transformiert. Der Anteil der Vertices, diedie Transformationsstufen mehrmals durchlaufen müssen, ist von der Kantenlänge unddamit von Größe der Terrainblöcke abhängig.

Jeder der Terrainblöcke kann in unterschiedlichen Detailstufen dargestellt werden. InAnalogie zum Texture Mipmapping Verfahren ist es Aufgabe des Algorithmus, einegeeignete Detailstufe für jeden einzelnen der zu zeichnenden Blöcke zu finden. Um denDatendurchsatz an die Hardware möglichst gering zu halten, sollte dies eine möglichstniedrige Detailstufe sein. Auf der anderen Seite sollte aber auch die Qualität der Darstel-lung nicht zu stark unter der Reduktion der Dreiecke leiden. Die Auswahl des Geo-Mipmap Levels für einen Terrainblock wird in Abschnitt 4.3.4 beschrieben. Die Reali-sierung der Detailstufen wird in Abschnitt 4.3.5 erläutert.

4.3.2 Repräsentation der Daten

Die Geländedaten können auf unterschiedliche Weise repräsentiert werden. Eine sehrgängige Methode ist es, das Terrain durch ein uniformes, 2-dimensionales, orthogonalesGitter anzulegen. So lassen sich die Geländedaten nicht nur platzsparend im Speicherablegen, sondern auch einfach indizieren (Matrixdarstellung). Im Hinblick auf die hier-archische Unterteilung des Gitters durch den Quadtree muß das Gitter eine horizontaleund eine vertikale Auflösung von Vertices aufweisen, wobei . Dadurcherhält man ein Gitter mit x Feldern.

4.3.2.1 Höhendaten

Das Höhenfeld enthält für jeden der Gitterpunke eine Höheninformation. Diese Informa-tion bestimmt die Höhenauslenkung der Vertices, zwischen denen das Terrain aufge-spannt wird.Zum Editieren der Höhendaten können spezielle Werkzeuge, wie z.B. Leveller oder Ter-

ragen1 verwendet werden. Aber auch mit einem Malprogramm lassen sich die Land-schaftsausformungen editieren. Die Verwendung von Satellitendaten ist in den wenigstenFällen sinnvoll, da sie nur sehr grob auflösend sind. (Typische Rasterweiten sind 10 bzw.30 m.)

1. Diese beiden Program werden im Internet angeboten. Leveller is ein kommerzielles Produkt der Firma Daylon Graphics. Terragen wird von der Firma Planetside Software für den nicht-kommerziellen Gebrauch zum kostenlosen Download bereitgestellt.

2n 1+ n 1 ∞ [,[∈2n 2n

Page 65: Ackerman Geometrisi Diplomarbeit

51 Visualisierung des Terrains

Für die Bearbeitung mit einem Malprogramm eignet sich besonders die Graustufendar-stellung. Schwarz entspricht der geringsten Höhenauslenkung, Weiß der größten. Da dasAuge nur etwa 64 Graustufen unterscheiden kann, können damit keine sehr detailliertenHöhenfelder geschaffen werden. Eine Codierung der Höhenwerte mit 8 Bit reicht maxi-mal für eine grobe Formgebung. Für das Gelände der Fahrzeugsimulation ist das jedochausreichend.

Um einen „Treppen-Effekt“ in der Darstellung der Geländeoberfläche zu vermeiden, istes ratsam, das Höhenfeld mit Hilfe einer Faltung zu glätten. Diese Glättung kann zurLaufzeit – beim Auslesen der Höheninformation – durchgeführt werden. Möchete mandie CPU entlasten, kann die Glättung aber auch bereits vorab im Speicher durchgeführtwerden. Dadurch steigt der Speicherplatzbedarf um ein Vielfaches.

4.3.2.2 Featuremap

Die Feature Map dient dazu, unterschiedliche Eigenschaften innerhalb des Geländes zuvergeben. So können beispielsweise unterschiedliche Bodenbeschaffenheiten definiertwerden, die das Fahrverhalten des Fahrzeuges beeinflussen. Denkbare Bodeneigenschaf-ten sind der Reibwert zwischen Reifen und Untergrund, oder auch die Festigkeit desBodens. (Ein Körper wird auf lockerer Erde ungleich stark vom Boden zurückprallen alsauf hartem Beton.)

Die Zuordnung der Information erfolgt entweder direkt, oder über die Indizierung vorde-finierter Bodentypen. Legt man unterschiedliche Eigenschaften für Asphalt, Rasen undSchotter an, so kann die Featuremap sehr platzsparend im Speicher untergebracht wer-den. Ein Byte pro Vertex sollte für die meisten Anwendungen ausreichen.

4.3.2.3 Quadtree

Aufgrund des geringen Speicherplatzbedarfs kann der Quadtree in bestehenden Daten-strukturen abgelegt werden, wie beispielsweise in den nicht verwendeten Bits der Featu-remap. Für den Entscheidungsbaum (in die Tiefe verzweigen oder nicht?) wird nur eineinziges Bit pro Knoten benötigt. Für den Geomipmapping-Algorithmus muß zusätzlichnoch die Information gespeichert werden, in welcher Detailstufe die Terrainblöcke aus-gegeben werden. Das geschieht in den Blättern des Baumes und nimmt – abhängig vonder Größe der Terrainblocks – 0 bis n Bits in Anspruch. (n ist gleich dem LogarithmusDualis der Seitenlänge eines Terrainblocks). Da der Baum nicht so weit in die Teifereicht, wie bei einem vollständigen Quadtree, sondern bereits in geringerer Tiefe endet,ist für die Speicherung aller benötigten Daten weniger als ein Bit pro Vertex nötig.

4.3.3 Erzeugung des Quadtrees

Der Quadtree Algorithmus dient dazu, eine quadratische Fläche hierarchisch in vielekleine Quadrate zu unterteilen. Ziel des Algorithmus ist aber keine gleichmäßige Unter-teilung. Die Fläche soll nur in ausgewählten Bereichen weiter verfeinert werden. DieUnterteilung eines Quadrates wird von einer Bedingung abhängig gemacht (zB. alleQuadrate, die sich in einer gewissen Distanz zur Kamera befinden, usw.). Auf diese

Page 66: Ackerman Geometrisi Diplomarbeit

Geometrical Mipmapping 52

Weise erhält man unterschiedliche Flächenaufteilungen. Abb. 4.2 zeigt die Partitionie-rung eines Quadrates mit der Seitenlänge 16. Die Zahlen geben Auskunft über die Ver-zweigunstiefe des Baumes in den Teilflächen.

Der einfachste Weg zur Erzeugung des Quadtrees führt über eine Rekursion:

01 setup_quadtree( int x, int z, int width )

02 {

03 calculate_subdivision_criterion();

04 if( subdivision_criterion == true )

05 {

06 set_qt_flag( x, z );

07

08 width /= 2;

09 if( width > 0 )

10 {

11 setup_quadtree( x-width, z-width, width );

12 setup_quadtree( x+width, z-width, width );

13 setup_quadtree( x-width, z+width, width );

14 setup_quadtree( x+width, z+width, width );

15 }

16 }

17 else

18 {

19 clear_qt_flag( x, z );

20 }

21 }

Abbildung 4.2: Exemplarische Flächenaufteilung mit Hilfe des Quadtree-Algorithmus

Page 67: Ackerman Geometrisi Diplomarbeit

53 Visualisierung des Terrains

Wird der Quadtree im Algorithmus von Röttger bis zum untersten Level verfeinert, sobricht die Rekursion beim Geometrical Mipmapping bereits in einer geringeren Teife ab.Je nachdem, welche Auflösung für die Terrainblöcke gewählt wird, lassen sich dadurchmehr oder weniger Rekursionsstufen einsparen.

4.3.3.1 Frustum Culling

Das Vieweing-Frustum ist jener Pyramidenstumpf, mit dem der Sichtbereich der Kameraangenähert wird. Da zur Laufzeit große Teile des Terrains außerhalb des Sichtbereichesliegen, brauchen sie nicht trianguliert und an die Render Pipeline übergeben zu werden.Das Verfahren, mit dem die Sichbarkeitsentscheidung getroffen wird, nennt sich FrustumCulling. Es besteht aus dem Test einzelner Punkte (oder Primitive) gegen das Vieweing-Frustum. Befindet sich ein Teil des Geländes außerhalb des Frustums, so liegt er nicht imSichbereich, und muß auch nicht gezeichnet werden. Alle Geländeteile, die innerhalb desFrustums liegen, sind Teil der dargestellten Szene.

In Verbindung mit dem Quadtree-Algorithmus kann dieses Verfahren sehr laufzeiteffizi-ent eingesetzt werden: Der Quadtree muß nur an jenen Stellen in die Tiefe verzweigen,die dem Test gegen das Viewing-Frustum standhalten, – die also teilweise oder zurGänze innerhalb des Sichtkegels liegen. Um sicherzustellen, daß das Kriterium allesichtbaren Bereiche als solche erkennt, sollte man das umschließende Würfelvolumen(Bounding-Box) des jeweiligen Quadtree-Knoten gegen das Frustum testen. Der Testeines einzelnen Punktes – wie beispielsweise des Flächenmittelpunktes – liefert unzurei-chende Ergebnisse.

Die Implementierung des Frustum-Tests wird in einem Paper von Mark Morley[Morl 00] beschrieben. Bei diesem Test werden die sechs Ebenen der Blickpyramide ausder Sicht-Matrix extrahiert. Aufgrund der Lage einzelner Punkte zu den Ebenen lässtsich die Sichbarkeitsentscheidung treffen. Die genaue Anwendung des Verfahrens wirdin Anhang B beschrieben.

4.3.4 Auswahl der Detailstufe

Ein geometrische Reduktion des Details wird durch das Auslassen von Rasterpunktenerreicht. Daraus ergeben sich Ungenauigkeiten in der Visualisierung des Geländes (sieheAbb. 4.3). Um – trotz der Detailreduktion – eine möglichst geringe Abweichung voneiner „optimalen Darstellung“ zu erhalten, wird beim Geomipmapping darauf geachtet,daß die Ungenauigkeiten stets unterhalb einer festgelegten Toleranzschwelle liegen. DieToleranzschwelle wird in Pixel-Koordinaten gemessen. Ihr Maß ist die die Höhenver-schiebung, die durch das Auslassen der Rasterpunkte entsteht. Je mehr Rasterpunkte inder Darstellung ausgelassen werden, detso größer ist der Darstellungsfehler.

Page 68: Ackerman Geometrisi Diplomarbeit

Geometrical Mipmapping 54

Aufgrund des Strahlensatzes wirkt sich ein Fehler in der Darstellung weiter entfernterBereiche nicht so stark aus, wie in der Darstellung näher gelegener Regionen. Deshalbdarf eine geringere Detailstufe erst ab einer gewissen Distanz zur Kamera ausgewähltwerden. Boer beschreibt die Berechnung dieser Distanz. Sie kann für jeden Terrainblockin jeder Detailstufe ermittelt werden.

4.3.4.1 Höhenfehler

Betrachtet man den Höhenverlauf von der Seite (siehe Abb. 4.4), so ergibt sich durch dasWeglassen des weiß eingefärbten Vertex eine geometrische Abweichung. Sie wird durchdie strichlierte Linie angedeutet. Im Vergleich zur nächsthöheren Detailstufe tritt derHöhenfehler auf. Das Entfernen des Vertex kommt einem Absenken des weißen Punk-tes auf Höhe des grau eingefärbten Punktes gleich.

Für die Bestimmung eines geeigneten Mipmap-Levels wird dieser Höhenfehler aufseine äquivalente Länge in Pixelkoordinaten projiziert. Die projizierte Länge bezeichneich als . Es ist genau jener Fehler, der vom Betrachter wahrgenommen wird. Über-schreitet einen Grenzwert (von beispielsweise 4 Pixeln), so darf für den betrachtetenTerrainblock kein geringerer Mipmap-Level ausgewählt werden. Der Darstellungsfehlerwürde den Grenzwert überschreiten. Das Detail darf nur solange reduziert werden,solange kleiner als ist. So kann eine zuvor festgelegte Qualität in der Darstellunggarantiert werden.

Abbildung 4.3: Höhenprofil in unterschiedlichen Detailstufen

δ

Abbildung 4.4: Höhenfehler (durch Detailreduktion bedingt)

δ

εε τ

ε τ

Page 69: Ackerman Geometrisi Diplomarbeit

55 Visualisierung des Terrains

Bei einem Polygon werden insgesamt sechs Werte für den Höhenfehler gemessen.Zwei enlang der beiden Diagonalen, zwei entlang der beiden horizontalen Kanten, undzwei entlang der beiden vertikalen Kanten (siehe Abb. 4.5). Die weiß eingefärbtenPunkte stellen die Vertices dar, die beim Übergang auf das nächstgeringere Detaillevelausgelassen werden.Da sich ein Terrainblock aus mehreren dieser Polygone zusammensetzt, können in demBlock etliche Höhenfehler gemessen werden. Relevant ist jedoch nur der größte dieserWerte. Für ihn wird die Distanz ermittelt, ab der der Terrainblock im Detaillevel ndargestellt werden darf.

Der größte Darstellungsfehler läßt bei waagrecht ausgerichteter Kamera messen. Beisteigendem Blickwinkel nimmt der Fehler ab. Bei absoluter Draufsicht ist er gleich Null.Geht man davon aus, daß die Kamera immer waagrecht auf das Gelände gerichtet wird(Worst Case), so bleiben die Höhenfehler und die daraus resultierenden Kameradistan-zen konstant. Die können für jeden Terrainblock in jeder Detail-Stufe vorberechnetwerden. Dadurch beschränkt sich die LOD-Entscheidung zur Laufzeit auf wenige Ver-gleichsoperationen.

4.3.4.2 Vorberechnung von d

Die Berechnung der minimalen Darstellungsdistanz für einen Terrainblock kann derGleichung (4.1) entnommen werden. Der Höhenfehler wird als bekannt vorausgesetzt.Die Konstante C wird in den Gleichungen (4.2) bis (4.4) hergeleitet. ist bei jederDetailreduktion gleich dem Maximum aus dem vorherigen Mipmap-Level und demaktuellen Höhenfehler zu setzen. Auf diese Weise werden aufsteigende Werte für garantiert.

δ

Dn

Abbildung 4.5: Messung des Höhenfehlers in einem Polygon

Dn

Dn

δδ

Dn

Dn δ C⋅= (4.1)

CAT---= (4.2)

Page 70: Ackerman Geometrisi Diplomarbeit

Geometrical Mipmapping 56

n ist die Distanz zur near clipping plane. t entspricht der obersten Koordinate des mitHilfe der Parameter (l, r, b, t, n, f) beschriebenen Viewing-Frustums. Die Variable in Gleichung (4.4) beschreibt die vertikale Auflösung des Ausgabefensters in Pixeln.

Die Quadrierung von Gleichung (4.1) erspart die Quadratwurzel-Funktion zur Berech-nung der minimalen Kamera-Distanz. Siehe Gleichung (4.6).

4.3.4.3 Auswahl des Mipmap-Levels zur Laufzeit

Sind die -Werte vorberechnet, läßt sich die Auswahl des Mipmap-Levels auf wenigeVergleichsoperationen zurückführen. Das folgenden Pseudocodestück veranschaulichtdie Vorgehensweise: Beginnend mit dem höchsten Mipmap-Level wird in einer Schleifedas Detail solange verkleinert, bis die Kameradistanz für das Umschalten auf die nächst-geringere Mipmap-Stufe zu gering ist:

For Each GeoMipmap Level N

Compare L to Dn

if (L > Dn) store to RESULT

End For

return RESULT

4.3.5 Realisierung der Detailstufen

Eine geringere Detailstufe erhält man, indem man zum Zeichnen eines Terrain-Blocksnur jeden zweiten, vierten, achten Vertex usw. verwendet (siehe Abb. 4.6). Bei einemTerrainblock der Auflösung 5x5 Vertices sind nach dieser Vorgehensweise drei Detail-stufen möglich. Bei einer Auflösung von 17x17 Vertices sind es bereits fünf Detailstu-fen.Für die höchste darstellbare Auflösung eines Terrainblocks verwende ich zukünftig dieBezeichnung Detailstufe 0. Detailstufe 1 ist gleichbedeutend mit der nächstgeringerenAuflösung. Eine weitere Reduktion in der Auflösung wird mit Detailstufe 2 bezeichnet.

Ant----= (4.3)

vres

T2 τ⋅vres

----------= (4.4)

Dn2 δ2

C2⋅= (4.5)

Dn

Page 71: Ackerman Geometrisi Diplomarbeit

57 Visualisierung des Terrains

Grenzen zwei Terrainblöcke mit unterschiedlicher Auflösung aneinander, können an denÜbergängen Löcher in der Darstellung entstehen (siehe Abb. 4.7). Um diese Löcher zuvermeiden, muß eine Detail-Anpassung vorgenommen werden. Dazu gibt es zwei Mög-lichkeiten: Es können zusätzliche Vertices in der Randregion des Blockes mit der niedri-gen Auflösung hinzugefügt werden. Und es können Vertices in der Kante des Blockesmit der höheren Auflösung eingespart werden. Letztere dieser beiden Vorgehensweisenhat sich als effizienter erwiesen.

Durch das Auslassen der grau eingefärbten Vertices in Abb. 4.8 wird der Übergang zwi-schen einem Terrainblock der Detailstufe 0 zu einem Block der Detailsufe 1 geschaffen(links). Ein solcher Übergang (er wird auch als T-Übergang bezeichnet) kann sich übermehrere Kanten erstrecken. Die rechte Abbildung zeigt die geometrische Anpassung vonDetailstufe 0 an Detailstufe 2 entlang zweier aneinandergrenzender Kanten.

Abbildung 4.6: Gitterstruktur eines Terrainblocks

Triangullierung des Gittersin höchster Detailstufe

Terrainblock in niedrigererAuflösung

Abbildung 4.7: Enstehung von Löchern in bei Detailübergängen

Page 72: Ackerman Geometrisi Diplomarbeit

Geometrical Mipmapping 58

Da sich die Detailübergänge über mehrere Kanten erstrecken können, ergeben sich etli-che Variationen in der Triangulierung eines Terrainblocks. Diese müssen bei der Erzeu-gung der Vertexdaten berücksichtigt werden. Im inneren Bereich des Terrainblocks kön-nen Triangle-Lists verwendet werden. Die Übergangsregionen übergibt man am bestenmit Hilfe von Triangle-Fans an die Graphikkarte. So lassen sich Verbindungen zwischenTerrainblöcken unterschiedlicher Auflösungen schaffen.

Abb. 4.9 zeigt die Triangulierung des Terrains unter Verwendung des GeomipmappingAlgorithmus. In der Mitte der Abbildung sind die Detailübergänge zwischen Terrain-blöcken unterschiedlicher Auflösung erkennbar.

Abbildung 4.8: Realisierung der T-Verbindungen zwischen Terrainblöcken unterschiedlicher Auflösung

Abbildung 4.9: Gelände-Triangulierung unter Verwendung des Geometrical Mipmapping

Page 73: Ackerman Geometrisi Diplomarbeit

59 Visualisierung des Terrains

4.4 Texturierung

Für der Texturierung von Landschaften gibt es unterschiedliche Ansätze. In den folgen-den Abschnitten werde ich einige davon vorstellen. Es handelt sich dabei um theoreti-sche Ausführungen, die die Aspekte unterscheidlicher Texturierungsverfahren aufzeigen,und allgemeine Lösungsansätze beschreiben sollen. Ich habe die beschriebenen Verfah-ren nicht implementiert. Als Quelle diente unter anderem das Virtual Terrain Project[VTP 01]. Die Homepage bietet weiterführende Links zu unterschiedlichen Triangulie-rungs- und Texturierungsverfahren.

Grundsätzlich unterscheidet man zwischen einer geospezifischen und einer geotypischenZuordnung der Texturinformation. Bei der geospezifischen Datenzuordnung wird jedemTexel in der Landschaft ein eigener Farbwert zugewiesen. Dh., das gesamte Polygonnetzwird mit einer einzigen, großen Textur überzogen. Auf diese Weise können fotobasierteDarstellungen von Landschaftsformationen erzeugt werden. Der Nachteil liegt im enormhohen Speicherbedarf, der für die Unterbringung der Textur benötigt wird. Für weitläu-fige Landschaften werden daher meist geotypische Ansätze verwendet. Dh., das Geländein unterschiedliche Regionen (Wiese, Asphalt, Schotter, ...) unterteilt. Die Farbzuord-nung für einen Geländepunkt erfolgt über die regionsspezifische Textur, die dem jeweili-gen Bereich der Landschaft entnommen wird. Die Texturspeicherauslastung wird aufdiese Weise relativ niedrig gehalten.

In Abschnitt 4.4.1 wird ein Verfahren vorgestellt, das auf rein geospezifischer Texturzu-ordnung basiert. Die Verfahren in Abschnitt 4.4.3 bis Abschnitt 4.4.4.1 verwenden einegeotypischer Zuordnung der Texturinformation. Das Verfahren in Abschnitt 4.4.2 ist eineMischung der beiden Vorgehensweisen.

Verwendung der Featuremap

Unabhängig von der Art der Texturzuordnung kann in der Featuremap die Verteilungunterschiedlicher Bodentypen gespeichert werden. Ob diese Information gleichzeitig fürdie Auswahl der Texturen verwendet wird, hängt vom Texturierungsverfahren ab. Ver-sieht man die Bodentypen mit unterschiedlichen Eigenschaften (Reibwert, Stoßdämp-fung, ...), so kann damit das Laufzeitverhalten des Fahrzeuges beeinflußt werden.Die Auflösung der Featurmap sollte in etwa der Auflösung der Höhenmap entsprechen.Eine Zuordnung der Features pro Vertex oder pro Polygon erscheint völlig ausreichend(siehe Abb. 4.10).

Page 74: Ackerman Geometrisi Diplomarbeit

Texturierung 60

4.4.1 Texturkacheln

Da die Landschaft durch das Geo-Mipmapping Verfahren in gleich große, quadratische„Geländekacheln“ aufgeteilt ist (in die Terrainblöcke), besteht die Möglichkeit, einemjeden dieser Terrainblöcke eine eigene Textur zuzuordnen. Dadurch muß die Graphik-karte nicht permanent alle „Texturkacheln“ im Speicher resident halten. Überschreitetdie Datenmenge das Volumen des Texturspeichers, wird ein Paging-Verfahren zum Ein-und Auslagern der Texturen benötigt. Dh., alle zur Ausgabe eines Frames benötigtenTexturen müssen in den Texturspeicher nachgeladen werden. Nicht mehr benötigte Tex-turen werden dabei überschrieben.Die Featuremap muß händisch (oder mittels eines Algorithmus) an die Texturen ange-passt werden.

Innerhalb der Landschaft können gewisse Texturkacheln auch mehrmals verwendet wer-den. Beispiel: Überall dort, wo die Landschaft mit Gras überzogen ist, wird der Terrain-block mit einer „Rasen-Kachel“ überzogen. In den meisten Fällen läßt sich dadurchjedoch nur eine geringfügige Reduktion der Texturdaten erzielen.

4.4.2 Distanzbasierte Detailüberblendungen

Eine oft verwendete Technik ist das „Distance Based Blending“. Hierbei wird die ganzeLandschaft mit einer relativ grob auflösenden Textur zu überzogen. Nur in den Kamera-nahen Bereichen wird das Terrain mit einer Detail-Textur überblendet. Dadurch entstehtbeim Betrachter der Eindruck einer relativ feinen Auflösung. Um die Detail-Textur demdarunterliegenden Bodentyp anzupassen, kann die Information aus der Featuremapgenutzt werden.Verwendet man für die Überblendung nur einen einzigen Farbkanal, so kann damit die

Abbildung 4.10: Zuordnung der Daten aus der Featuremap

Page 75: Ackerman Geometrisi Diplomarbeit

61 Visualisierung des Terrains

Helligkeit der Grundtextur variiert werden. Dadurch wird dem Boden eine Struktur ver-liehen.

4.4.3 Maskierungsverfahren

Bei den Maskierungsverfahren wird mit Hilfe einer Maske festgelegt, welche Region desTerrains mit welcher Textur überzogen wird. Als Maske wird üblicherweise eine Bitmap(Alpha-Textur) verwendet. Sie gibt für jeden Bodentyp flächendeckend einen Deckungs-wert von 0 bis 255 (entsprechend 0 bis 100%) an. Diese Bitmap ist relativ groß und mußim Speicher untergebracht werden.Möchte man mehr als zwei Texturen überblenden, so werden dafür mehrere Render-durchläufe benötigt. Das Terrain muß mit jeder Textur einmal gezeichnet werden.

Texture-Splatting

Um dennoch eine einigermaßen effiziente Ausgabe zu erzielen, kann das „Texture-Splat-ting“-Verfahren [Bloo 00] eingesetzt werden. Dabei wird die Landschaft in mehrere,gleich große Blöcke unterteilt. (Die Verwendung der Terrainblöcke eignet sich hierfürausgezeichnet.) Anschließend wird jeder der Blöcke mehrmals in den Framebuffergerendert. Bei jedem Durchgang wird eine neue Textur aufgetragen. Die Transparenzin-formation für jede der Texturen ist in einer seperaten Alphamap gespeichert.Da für die mehrmalige Ausgabe des Terrainblocks die selbe Triangulierung verwendetwerden kann, müssen die Vertexdaten nur einmal (pro Frame) an die Hardware gesendetwerden. Auf diese Weise läßt sich eine beträchtliche Geschwindigkeitssteigerung erzie-len. Für die wiederholte Ausgabe des Dreiecksnetzes müssen nur die gewünschten Tex-turen ausgewählt werden.

Als Auflösung für die Alphamap schlägt Charles Bloom 2x2 Pixel pro Rasterquadrat vor.Für einen Terrainblock der Auflösung 17x17 Vertices wären das 32x32 Pixel.

4.4.4 Polygonale Repräsentation

Bei der polygonalen Repräsentation wird die Landschaft in mehrere Subnetze unterteilt.Jedes dieser Netze repräsentiert eine eigene Geländeregion, bzw. einen eigenen Boden-typ. Die Zuordnung der Texturen erfolgt zu den jeweiligen Subnetzen. Auf diese Weiselassen sich sehr scharfkantige Übergänge schaffen, ohne daß eine große Maskierungs-Bitmap im Speicher untergebracht werden muß.Um beliebig ausgeformte Regionen zu erzeugen, ist allerdings die Verwendung irregulä-rer Netze erforderlich. Da die Triangulierung des Geländes im vorliegenden Fall einemrechtwinkeligen Grundraster folgt, würden die Übergänge zwischen den Regionen ent-lang der rechtwinkeligen Kanten verlaufen.

4.4.4.1 Polygonale Zuordnung mit Maskierung in den Übergängen

Da die Textur bei der polygonalen Repräsentation in einem Durchgang aufgebracht wer-den kann, lassen sich relativ hohe Ausgabegeschwindigkeiten erzielen. Die rechtwinkeli-gen Übergänge zwischen den Regionen sind allerdings unerwünscht.

Page 76: Ackerman Geometrisi Diplomarbeit

Texturierung 62

Läßt man zwischen den Regionen etwas Freiraum (zB. durch die Verwendung einer Fea-turemap, die per Vertex zugeordnet ist – siehe Abb. 4.10, links), so können diese Zwi-schenräume verwendet werden, um einen Übergang zwischen zwei (oder mehreren)Regionen zu schaffen (siehe Abb. 4.11). Durch Überblendung der Texturen könnenbeliebige Verläufe geschaffen werden.

4.4.5 Multitexturing: Überblendungsmechanismen

4.4.5.1 Vertex- versus Bitmap-Alpha

Läßt sich die Textur in einem Durchgang aufbringen (Überblendung von zwei Texturen),empfiehlt es sich, den Überblendungswert als Vertex-Alpha anzugeben. Damit läßt sichder Datendurchsatz zur Graphikarte möglichst gering halten. Sollen mehr als zwei Textu-ren überblendet werden, so empfiehlt sich die Verwendung einer Alphamap für jede derTexturen. Wie das Texture-Splatting Verfahren zeigt, ist es empfehlenswert, für mehrereZeichendurchgänge ein und desselben Polygonnetzes einen Vertexbuffer zu verwenden.So muß das Polygonnetz nur einmal an die Hardware übergeben werden. Die Render-durchgänge werden direkt auf den Framebuffer ausgeführt.

4.4.5.2 Textur Blending Kaskade

DirectX erlaubt die Verwendung mehrerer Textur-Stufen. Diese werden – je nach Lei-stung der Graphikhardware – in ein bis mehreren Durchgängen abgearbeitet (sieheAbb. 4.12).Zum Ausmaskieren von Geländeregionen können jedoch maximal die ersten beiden Stu-fen der Textur Blending Kaskade verwendet werden. Die erste zur Aufbringung der Far-binformation. Die zweite zur Ausmaskierung mit der Alphamap. Die Alphamap muß alsseperate Textur an die Kaskade übergeben werden.

Abbildung 4.11: Bestimmung des Übergangsbereiches zwischen den Landschaftsregionen

Page 77: Ackerman Geometrisi Diplomarbeit

63 Visualisierung des Terrains

Abbildung 4.12: Texturstufen unter DirectX

Page 78: Ackerman Geometrisi Diplomarbeit

Texturierung 64

Page 79: Ackerman Geometrisi Diplomarbeit

Kapitel 5

Systemarchitektur

5.1 Konzeptuelle Überlegungen

In der Literatur ([BWAK 99], [Low 00]) wird für physikalische Simulationen ein eigenesModul empfohlen, das die Integration der Systemgrößen übernimmt. Dieses Modul wirdauch als ODE-Solver bezeichnet (Lösungsverfahren für Ordinary Differential Equati-ons). In meiner Implementierung verzichte ich auf dieses Modul, da ich mich für ein sehreinfaches numerisches Integrationsverfahren entschieden habe: für die Euler-Integration.Stattdessen werden die nötigen Berechnungen in die Methoden der jeweiligen Klassendurchgeführt. Die Implementierung eines zentral gekapselten Lösers erscheint nur auszweierlei Gesichtspunkten als sinnvoll:

1. Für die Implementierung eines Verfahrens höherer Ordnung, wie beispielsweise demRunge-Kutta-Verfahren. Hier verlangt die Komplexität des Verfahrens nach einer sau-beren Modultrennung.

2. Für die Verwendung in einem Framework zur Simulation mehrerer physikalischer(Teil-)Systeme, deren Verarbeitung nach einem einheitlichen Schema vorgenommenwerden kann. So können alle Komponenten die Funktionalität des zentalen Löser nut-zen.

Im Hinblick auf einen sauberen, modularen Aufbau des Systems wäre ein derartiges Fra-mework sicherlich wünschenswert. Ich denke dabei an eine Reihe von „Physik-Objek-ten“, die sich von einer Basisklasse ableiten, und deren Zusammenspiel durch ein äuße-res Modul geregelt wird. Betrachtet man den Ansatz, den [Low 00] für die Modellierungder Physik in Computerspielen vorschlägt, so wird man dort die angesprocheneModultrennung verwirklicht finden. Die von Low verwendeten Objekte sind durch phy-sikalische Attribute (Zustandsgrößen, funktionale Größen), durch äußere Kräfte und

65

Page 80: Ackerman Geometrisi Diplomarbeit

Verwendete Datenstrukturen 66

Momente, und durch Bewegungseinschränkungen (Constraints)1 charakterisiert. DieSimulation selbst stützt sich auf die Verwendung eines gekapselten Lösers: Der Dyna-mics Controller stellt neben dem numerischen Integrationsverfahren einen Löser fürKollisionen und einen Löser für Constraints zur Verfügung. Er ist für die Berechnungaller Bewegungsabläufe zuständig.

Meine derzeitige Realisierung beschreibt einen anderen Weg. Da ich aus Komplexitäts-gründen die eine oder andere Vereinfachung treffe, habe ich von vorneherein nur wenigeSystemkomponenten zu simulieren. Bei der Modellierung der Federung verwende ichbeispielsweise einen eindimensionalen Ansatz mit einem Massepunkt. So spare ich mirdie Verwendung eines Starrkörpers, der durch Feder und Dämpfer gekoppelt, und durchConstraints in seiner Bewegung eingeschränkt ist. Anstelle der Kopplung mehrerergleichartiger Komponenten wird das Fahrzeugmodell durch wenige unterschiedlicheKomponenten beschrieben. Und in diesem Zusammenhang erweist es sich als sinnvoll,sowohl die schrittweise Integration, als auch die Berechnung und Auflösung von Kolli-sionen im Speziellen durchzuführen. Die Verwendung eines Frameworks für die physi-kalischen Berechnungen könnte hier nicht effizient eingesetzt werden. Ein zentralesModul für die Auflösung der Bewegungsabläufe würde nicht die gewünschte Einsparungan Programmcode bringen, da sich nur wenige Simulationsroutinen von den Komponen-ten-Klassen in den zentralen Löser übernehmen ließen.

Dennoch versuche ich eine einheitliche „Schnittstelle“ zwischen den Systemkomponen-ten zu schaffen. Durch das Mitführen von Attributen für eingehende und ausgehendephysikalische Größen, wie Kraft, Position und Geschwindigkeit läßt sich die Wechsel-wirkung zwischen den Komponenten zentral in der Klasse Dynamics behandeln. EineNamenskonvention bei der Bezeichnung der Attribute erleichtert das Auslesen undZuweisen der jeweiligen Größen.

5.2 Verwendete Datenstrukturen

Da gewisse Teilsysteme wie Radaufhängung und Räder (Drehimpuls) eindimensionalmodelliert sind, reichen Skalare für die Abbildung ihrer Systemzustände. Die Zustands-größen werden durch Float-Werte einfacher Genauigkeit wiedergegeben. Alle anderenverwendeten Strukturen sind in der Bibliothek lin_math.h definiert.Für den Kräfteaustausch zwischen den Teilkomponenten ist eine Transformation der ska-laren Zustandsgrößen ins Weltkoordinatensystem erforderlich. Sie müssen in gerichteteGrößen (Vektoren) umgerechnet werden. Die Orientierung der Vektoren läßt sich eindeu-tig aus der Orientierung der Komponenten entnehmen.

1. Constraints werden in der Literatur v.A. im Zusammenhang mit der Verwendung von Starrkörpern im dreidimensionalen Raum erwähnt. [Witk 99] befaßt sich ausführlich mit der Modellierung von eingeschränkten Bewegungsabläufen.

Page 81: Ackerman Geometrisi Diplomarbeit

67 Systemarchitektur

5.2.1 Eindimensionale, gerichtete Größen

Eindimensionale, gerichtete physikalische Größen wie Position, Geschwindigkeit (undweitere Ableitungen der Position nach der Zeit), Kraft und Momente werden durch Vek-toren repräsentiert. Ich verwende dazu die von der Direct3DX Utility Library[D3DX 02] vordefinierte Struktur D3DXVECTOR3. Es handelt sich dabei um einen drei-dimensionalen Vektor von Float-Werten einfacher Genauigkeit. Die Felder tragen dieBezeichnungen x, y und z. In DirectX sind auf den Datentyp außerdem bereits einigeRechenoperationen vordefiniert (Addition, Subtraktion, Zuweisung, Multiplikation miteinem Skalar und Division durch einen Skalar). Dadurch wird die Handhabung der Vek-toren maßgeblich vereinfacht. Zur Abkürzung der Schreibweise verwende ich fürD3DXVECTOR3 den Alias vec3.

Besonders erwähnen möchte ich in diesem Zusammenhang die Repräsentation desMoments. Es kann ebenfalls durch einen Vektor angegeben werden. Die Richtung desVektors gibt die Rotationsachse an, um welche das Moment ausgeübt wird. Die Längedes Vektors stellt die Amplitude (die Stärke) des Drehmoments dar. Momente lassen sichdurch Anwendung der auf Vektoren definierten Rechenoperationen addieren und subtra-hiern.

5.2.2 Orientierung

Die Orientierung des Starrkörpers wird durch Quaternions repräsentiert. Die verwendeteDatenstruktur trägt den Namen quaternion und besitzt die Felder r, x, y und z. Für dieFelder werden Float-Werte doppelter Genauigkeit verwendet. Sie sollen den Fehler beider Berechnung der Starrkörperrotation möglichst gering halten. Unter der Verwendungvon Matritzen würde – durch die in jedem Simulationsschritt wiederholte Multiplikation– bereits nach wenigen Simulationsschritten ein deutlich erkennbarer Verschiebungsef-fekt auftreten. Verwendet man Quaternions, so bleibt dieser Verschiebungseffekt aus, dadie Orientierungsmatrix in jedem Schritt erneut aus dem Quaternion berechnet wird. DieRechenungenauigkeit, die sich aufgrund der wiederholten Multiplikation des Quaterni-ons ergibt, ist im Vergleich zu Matrizenrepräsentation sehr gering. Außerdem wird dasQuaternion bei jeder erneuten Berechnung normalisiert. Dennoch ist die Verwendungvon double-Werten zur Speicherung der Orientierung vorzuziehen.

5.2.3 Masseträgheit

Im eindimensionalen Fall (Reifen, Motor) kann die Trägheit I(t) ebenfalls durch einenSkalar angegeben werden. In der dritten Dimension (Starrkörper) ist eine 3x3 Matrixerforderlich. Für die Felder der Matrix sind Float-Werte einfacher Genauigkeit ausrei-chend. Da I(t) mit jedem Simulationsschritt aus der Konstanten und der Orientie-

rungsmatrix R(t) berechnet wird, können sich hier keine größeren Rechenungenauigkei-ten ergeben.

Ibody

Page 82: Ackerman Geometrisi Diplomarbeit

Überblick über die verwendeten Klassen 68

5.3 Überblick über die verwendeten Klassen

Grob betrachtet gliedert sich die Implementierung in drei Bereiche:

1. Implementierung des Fahrzeuges

2. Graphikschnittstelle

3. Terrainvisualisierung

Den zentralen Teil stellt die Implementierung des Fahrzeuges und dessen Physik dar.

Die nachstehende Abbildung (Abb. 5.1) zeigt die Beziehungen zwischen den verwende-ten Klassen in UML Notation [UML 99].

5.3.1 Implementierung des Fahrzeuges

Die Klasse Vehicle stellt die Schnittstelle für die Anwenderschicht dar. Sie erlaubt dasSetzten von Position und Orientierung des Fahrzeuges. Außerdem werden hier die Fahr-zeugkontrollen (Gas, Kupplung, Lenkung, Bremse) bereitgestellt. Die Physik wird mitHilfe der Klasse Dynamics umgesetzt. Sie beinhaltet die Umsetzung des vorgestelltenFahrzeugmodells und wird von der Klasse Vehicle instanziert. Die Implementierung derPhysik spaltet sich in mehrere Komponenten auf: Starrkörper (RigidBody), Federung(Suspension), Reifen (Tyres), Motor (Engine) und Bremsen (Brakes) sind als eigene

Abbildung 5.1: UML Klassendiagramm

Page 83: Ackerman Geometrisi Diplomarbeit

69 Systemarchitektur

Klassen modelliert. Die Gliederung orientiert sich an den Komponenten des Automo-dells.

5.3.2 Graphikschnittstelle

Die Graphikschnittstelle dient als Anbindung zur DirectX Schnittstelle und kapselt diewichtigsten Routinen zur Graphikausgabe. Der wesentliche Teil der Implementierungerstreckt sich über eine einzige Klasse, GFX_Engine. Lediglich die Kamera ist in eineeigene Klasse ausgelagert. Sie wird als Objekt dynamisch an die Graphik Engine gebun-den. So kann sie von anderen Systembestandteilen referenziert und auch aktualisiert wer-den. Außerdem können aufgrund der dynamischen Bindung mehrere Kameras instanzi-iert werden, zwischen denen zur Laufzeit umgeschaltet wird. Die View Matrix wird beijedem Render-Vorgang dem Zustand der ausgewählten Kamera angepaßt.

Die Graphik Engine ist dazu vorgesehen, vom Hauptprogramm statisch eingebunden zuwerden. Sie stellt (neben der Kamera-Verwaltung) Routinen zum Manipulieren der Welt-matrix und der Projektionsmatrix zur Verfügung. Sie erlaubt das Setzen von Licht- undBeleuchtungswerten, und sie stellt Methoden zum Laden und zum Darstellen vonDirectX Objekten bereit. Alle weiteren Zustandsveränderungen der Render-Pipeline[D3DP 98] und das Ausführen von Zeichenfunktionen müssen direkt über das Direct3DDevice durchgeführt werden. Die Referenz auf das Direct3D Device wird von der Gra-phik Engine verwaltet und kann per Methodenauruf abgefragt werden.

5.3.3 Terrainvisualisierung

Die Terrain Engine übernimmt das Laden der Geländedaten und deren Visualisierung.Der für die Aufbereitung der Visualisierungsdaten gewählte Algorithmus wurde bereitsin Abschnitt 4.3 auf Seite 49 näher behandelt. Ebenso, wie die Graphik Engine, ist auchdie Terrain Engine als eine einzige Klasse konzipiert. Das verhindert eine unnötige Refe-renzierung der Datenstrukturen in den Teilobjekten und kommt der Ausführungsge-schwindigkeit zugute. Da zur Laufzeit maximal eine Instanz der Terrain Engine benötigtwird, empfiehlt es sich, diese ebenfalls statisch in das Hauptprogramm einzubinden.

Der Vollständigkeit halber möchte ich anführen, daß die Terrain Engine im Grunde nichtdie gesamte Graphik Engine referenziert, sondern nur das von der Graphik Engine ver-waltete Direct3D Device. Für die Visualisierung der Daten ist die Referenz auf dasDirect3D Device ausreichend. Aus der obigen UML Notation ist dieser Zusammenhangnicht ersichtlich.

5.4 Die Klassen im Detail

5.4.1 Relevante Klassen für den Entwickler

Für den Entwickler ist nur ein Teil der im Klassendiagramm angeführten Klassen rele-vant. Für das Aufsetzen eines lauffähigen Programmes müssen folgende Klassen instan-ziert werden:

Page 84: Ackerman Geometrisi Diplomarbeit

Die Klassen im Detail 70

Vehicle

Vehicle ist die zentrale Klasse für die Implementierung des Fahrzeuges. Das Anwender-programm greift ausschließlich auf Vehicle-Objekte zu, um das Fahrzeug manipulierenzu können, bzw. um es zu visualisieren.In der Initialisierungsphase des Vehicles werden alle wichtigen Simulationsparametergesetzt: Die Methode loadData lädt die fahrzeugspezifischen Daten und nimmt die Ein-stellungen am physikalischen Modell vor. (Die Parameter werden über die Member-Methoden des eingebetteten Dynamics-Objektes gesetzt.) Außerdem werden in load-

Data die Visualisierungsdaten1 geladen, die später über die draw-Methode an die Ren-der-Pipeline übergeben werden.

TER_Engine

Die Terrain Engine lädt die benötigten Visualisierungsdaten in der Methode loadData.Diese muß vom Benutzer in der Initialisierungsphase aufgerufen werden. Um Land-schaften als eine Einheit laden zu können, habe ich für die Terrain Engine ein eigenesDateiformat spezifiziert. Es bietet Platz für folgende Informationen:

• Höhendaten

• Featuremap

• Beschreibung der einzelnen Geotypen und die zugehörigen Textur-Referenzen

Die Visualisierung erfolgt gemäß des in Abschnitt 4.3 auf Seite 49 vorgestellten Algo-rithmus. Auf weitere Aspekte der Implementierung werde ich im folgenden Kapitelnäher eingehen.

GFX_Engine

Die Graphik Engine wird vom Hauptprogramm aus statisch eingebunden. Um den Pro-grammierer zu entlasten, stellt sie sowohl Methoden zum Erzeugen als auch zum Freige-ben eines DirectX-fähigen Win32 Fenster zur Verfügung. Die „Hauptschleife“ derWin32 Anwendung wird ebenfalls über Methoden der Klasse GFX_Engine realisiert. Sowird eine effiziente Einbindung der Graphikausgabe in die Windows Hauptnachrichten-schleife erreicht (siehe Anhang C).

Camera

Die Klasse Camera leitet sich von GFX_Camera ab. Sie wird als Referenz im Fahrzeugmitgeführt und bietet unterschiedliche Kamera-Einstellungen (fixe Position und Orien-

1. Es handelt sich dabei um DirectX Mesh-Daten. Über das von Microsoft definierte Dateiformat lassen sich Polygonmodelle für den Anwender relativ einfach handhaben. Außerdem gibt es im DX8 SDK für die gängigsten 3D-Editoren Plugins zum Export in DirectX-Dateien.

Page 85: Ackerman Geometrisi Diplomarbeit

71 Systemarchitektur

tierung, fixe Position mit Blick auf das Fahrzeug, Cockpit-Ansicht, Draufsicht auf dasFahrzeug, usw.). Zusätzlich wird über die Camera-Klasse die Anzeige der Instrumente inden Render-Zyklus eingebunden.

Driver

Die Klasse Driver läßt sich nicht als integraler Bestandteil der Systemarchitektur verste-hen. Sie ist lediglich eine Hilfsklasse, und dient dazu, den Code zur Ansteuerung desFahrzeuges aus dem Hauptprogramm auszugliedern.Diese Klasse ist dazu gedacht, unterschiedliche Fahrzeugsteuerungen zu realisieren.Eine Subklasse von Driver kann etwa verwendet werden, um auf Benutzerinteraktionenzu reagieren. Eine weitere Subklasse könnte die autonome Steuerung (Computersteue-rung) des Fahrzeug übernehmen. Letzteres ist vor allem bei der Verwendung mehrererFahrzeug-Instanzen interessant.

Driver:HumanDriver

Diese Subklasse von Driver fragt die gedrückten Tasten ab und reagiert mit der entspre-chenden Ansteuerung der Fahrzeugkontrollen. Der Einfachheit halber verwende ich dieWin32 Tastaturabfragen. Denkbar wäre aber auch die Verwendung von DirectInput.

5.4.2 Intern verwendete Klassen

Änderungen an den folgenden Klassen seitens des Benutzers sind an und für sich nichtvorgesehen. Um andere Graphiken einzubinden oder um das Laufzeitverhalten zuändern, kann es aber dennoch sinnvoll sein, Änderungen am vorliegenden Code vorzu-nehmen. Die Positionierung und das Eichen der Overlay-Anzeigen (Instruments) mußbeispielsweise direkt im Konstruktor der Klasse vorgenommen werden. Dies ist jedochnur nötig, soferne eine andere Anzeige als die bestehende verwendet werden soll.

Instruments

Die Klasse Instruments dient zur Laufzeitvisualisierung folgender Daten:

• Geschwindigkeit des Fahrzeuges

• Motordrehzahl

• eingelegter Gang

Die Fahrzeuggeschwindigkeit wird – analog zur Geschwindigkeitsmessung an einemrealen Fahrrzeug – aus der Drehzahl eines Antriebsreifens berechnet. Das führt dazu, daßdie angezeigte Geschwindigkeit nicht immer der tatsächlichen Geschwindigkeit desFahrzeuges (= Geschwindigkeit des Starrkörpers) entspricht. Sie entsteht aufgrund der

Page 86: Ackerman Geometrisi Diplomarbeit

Die Klassen im Detail 72

Gleitreibung der Reifen.Die Motordrehzahl wird direkt aus der Zustandsvariable rpm des Motors ausgelesen.

Für eine korrekte Darstellung der Werte muß der Darstellungswinkel des Zeigers auf dasverwendete Ziffernblatt abgestimmt werden. Dies geschieht mit Hilfe der Variableomega0, die den Winkel für die Null-Auslenkung der Nadel festlegt. Die Skalierungsva-riable multiplier bestimmt die Ausschlag der Nadel pro Messeinheit. Die Ziffernblätter,die Nadel und die Symbole für die Gangschaltung werden in der Methode loadDatageladen.

Dynamics

Dynamics kapselt alle Objekte, die zur Berechnung der Fahrzeugsynamik von Bedeu-tung sind. Außerdem koordiniert die Klasse die Teilberechnungen der darunterliegendenKlassen und kombiniert deren Ergebnisse. Auf diesem Weg wird das Zusammenspiel derTeilkomponenten realisiert: Der in Abschnitt 3.8 auf Seite 43 vorgestellte Simulationszy-klus wird in dieser Klasse umgesetzt. Die Verteilung der Auflagekräfte und die Rückfüh-rung der Federkräfte in den Aufhängungspunkten in den Masseschwerpunkt des Starr-körpers erfolgt ebenfalls in dieser Klasse.

Es folgt eine kurze Beschreibung der untergeordneten Klassen von Dynamics. Die Inte-gration der Zustandsgrößen erfolgt in den jeweiligen Klassen. Die dafür zuständigeMethode trägt den Namen transform. In dieser Methode wird das System von einemZustand in den darauf folgenden Zustand überführt.

RigidBody

Umsetzung der Starrkörperdynamik. Der Zustand des Starrkörpers wird durch dieAnwendung von externen Kräften, Momenten und von Stößen beeinflußt. Die Zufüh-rung dieser Größen geschieht über entsprechende Methoden. Werden innerhalb einesSimulationsschrittes mehrere Kräfte oder Momente auf den Körper ausgeübt, so werdendiese akkumuliert, ehe sie in die Systemgleichung eingehen. Die Stoßberechnung ergibtsich aus einer Kollision, die in Kollisionspunkt und Stoßrichtung aufgelöst wird.

Suspension

Umsetzung der Federung. Unter Berücksichtigung der Kraft, die der Reifen bei Boden-auflage auf die Federung ausübt, wird die Auslenkung der einzelnen Massen berechnet.(Zur Erinnerung: die Federung setzt sich aus zwei Massen zusammen. Eine davon istbeweglich. Der oberste Massepunkt ist gleich der Karosserie und wird für die Simulationdes Teilsystems „Radaufhängung“ starr angenommen.) Die Kraft, mit der die Karosseriegetragen wird, berechnet sich aus der Auslenkung der Federn.

Beim Überschreiten der Federwege (gegenseitige Eindringung der Massen) wird einStoß berechnet, der zwischen den Massen der Federung übertragen wird. Da sich ein

Page 87: Ackerman Geometrisi Diplomarbeit

73 Systemarchitektur

Stoß vom Boden her beginnend nach oben fortsetzen kann, muß die Eindringung einerFedermasse in die Karosserie in der Klasse Dynamics abgefangen werden. Die Daten,die zur Durchführung der Stoßberechnung nötig sind, werden aus der Federung ausgele-sen und an den Starrkörper überführt.

Tyre

Umsetzung des Reifenmodelles. Im Zusammenspiel mit dem Antrieb (Engine) werden injedem Simulationsschritt die Drehzahl des Reifens und die Kräfte in der Bodenkontakt-fläche bestimmt. In Anhängigkeit von Auflagekraft und horizontaler Beschleunigungberechnet sich die Bodenhaftung des Reifens. Für den Reifen ergeben sich zwei mögli-che Zustände, die das Bodenverhalten (für den nächsten Simulationsschritt) beeinflus-sen:

1. Haftreibung

2. Gleitreibung

Für die Kollisionsberechnung werden die Reifen per Referenz an die Terrain Engineübergeben. Dort findet die Schnittberechnung statt. Die ermittelten Werte werden vonder Terrain Engine durch direkten Zugriff im Reifen abgelegt. Die aktuellen Daten ste-hen ab diesem Zeitpunkt in der Fahrzeug-Hierarchie zur Verfügung.

Engine

Die Klasse Engine modelliert den Antrieb mit Hilfe einer Drehmomentkurve. Basierendauf den Daten der Vollastkurve werden die Teillastkurven vorberechnet. Als Parameterdienen Nullpunkt und Neigung der Projektionsgerade (siehe Abschnitt 3.6.1.1 auf Seite40). Die genaue Vorgehensweise bei der Skalierung der Drehmomentkurve wird im fol-genden Kapitel näher besprochen. Ist der Motor an die Antriebsreifen gekoppelt, wirddas Drehmoment des Motos als Antrieb an die Reifen übertragen und sorgt für den nöti-gen Vortrieb. Die Drehzahl des Motors reguliert sich durch die Abrollgeschwindigkeitder Reifen. Sind die Reifen vom Motor entkoppelt, ist dieser Rückkopplungszyklusunterbrochen. Deshalb wird im Leerlauf eine Schwungmasse zu Hilfe genommen, mitder sich das Drehzahl-Verhalten des Motors nachbilden läßt.

Brakes

Die Bremsen sind durch den maximalen Bremsdruck, die Bremskraftverteilung auf dievier Räder und den Radius der Bremsscheiben spezifiziert. Als Reibwert zwischenBremsklötzen und Bremsscheibe verwende ich einen typischen Wert für „Eisen aufEisen“. Die Bremskraft, die sich beim Ausüben eines Bremsdruckes bildet, wird alsMoment an die Reifen übertragen.

Page 88: Ackerman Geometrisi Diplomarbeit

Die Klassen im Detail 74

5.4.3 Weitere Klassen und Include-Dateien

lin_math.cpp

Die Include-Datei lin_math.cpp beinhaltet Vektor- und Matrizenoperationen, die vonDirectX nicht zur Verfügung gestellt werden. Außerdem enthält die Funktionssammlungdie Umrechnung zwischen Matrizen und Quaternions und andere Hilfsfunktionen. In derHeaderdatei werden Pi, die Absolut-, Minimum- und Maximum-Funktion und dieDatenstrukturen vec3, mat3 und quaternion definiert.

defs.h

Diese Datei definiert die Konstante für die Erdgravitation, sowie Konstanten für die Indi-zierung der Systemteile im Automodell. Die Rate, in der die mathematischen Berech-nungen durchgeführt werden (= Anzahl der Simulationsschritte pro Sekunde) wird eben-falls in dieser Datei festgelegt.

Page 89: Ackerman Geometrisi Diplomarbeit

Kapitel 6

Implementierungsaspekte

6.1 Physikalisches Fahrzeugmodell

Es folgen Details zur Umsetzung der Fahrzeugkomponenten. Sie sollen einen Überblicküber die angewendeten Verfahren geben und zum Verständnis des Quellcodes beitragen.

6.1.1 Kräfteberechnungen

Der Simulationszyklus verlangt nach der Transformation des Starrkörpers eine Berech-nung der Bodenkollisionen (siehe Abbildung 3.8, „Simulationszyklus,“ auf Seite 44).Aufgrund der festgestellten Eindringungen werden die Kontaktkräfte in den Reifenermittelt. Weitere Kräfte in den Reifen ergeben sich durch den Antrieb, durch die Brem-sen, und in Querrichtung der Reifen durch die seitliche Beschleunigungen des Fahrzeu-ges.

6.1.1.1 Auflagekraft (Normalkraft)

Die Auflagekraft ist jener Anteil der Reifenkräfte, der in Normalrichtung zur Boden-ebene verläuft. Sie wird aus den Bodeneindringungen der Reifen entnommen. Um dieEntwicklung und die Übertragung von Stößen entlang der Radaufhängung abfangen zukönnen, wird diese Kraft jedoch nicht direkt verwendet. Sie wird zuerst an die Radauf-hängung übergeben. Diese wird sie einen Simulationsschritt weitersimuliert. Dabei kön-nen eventuelle Masse-Eindringungen aufgelöst werden. Anschließend wird aus der Kraftin der Aufhängung und im Reifen die Auflagekraft berechnet. Neben der Auflösung vonEindringungen wird damit auch eine bessere Näherung bei der Berechnung der Radlasterreicht.

75

Page 90: Ackerman Geometrisi Diplomarbeit

Physikalisches Fahrzeugmodell 76

An die Radaufhängung wird jener Teil der Bodennormalkraft übertragen, der in Rich-tung der Federungsachse verläuft. Dazu wird der Kraftvektor aus dem Reifen mit demCosinus zwischen Bodennormale und Federungsachse skaliert (siehe Abb. 6.1).

ist die Normalkraft, die durch die Bodeneindringung in der Feder des Reifens ent-steht. ist jener Anteil von , der in die Radaufhängung überführt wird. Longitudi-nal- und Lateralkräfte der Reifen (durch Antrieb, Bremse oder seitliche Beschleunigung)werden dabei nicht berücksichtigt.

6.1.1.2 Hangabtriebskraft (Horizontalkraft)

Die vertikale Kraft, mit der ein Körper nach unten gezogen wird (Gewichtskraft), resul-tiert aus Masse mal Erdbeschleunigung. Liegt der Körper am Boden auf, so lastet dieseGewichtskraft auf der Auflagefläche. Sie spaltet sich in eine Normalkomponente und ineine Hangabtriebskomponente auf. Die Normalkraft wird in Richtung der Bodennormaleentnommen. Die Hangabtriebskraft verläuft in Bodenebene im „steilstmöglichen Winkelhangabwärts“. Abb. 6.2 zeigt die Aufspaltung der Gewichtskraft in die Normalkraft

und die Hangabtriebskraft .

Abbildung 6.1: Bestimmung des Kraftanteiles, der in die Radaufhängung überführt wird

Fn

Fra Fn

Fg

Fn Fh

Abbildung 6.2: Aufspaltung der Gewichtskraft in Normalkraft und Hangabtriebskraft

Page 91: Ackerman Geometrisi Diplomarbeit

77 Implementierungsaspekte

Die Normalkraft wird – unter Berücksichtigung der Kraftkomponente aus der Radauf-hängung – aus der Bodeneindringung des Reifens ausgelesen (siehe Abschnitt 6.1.1.1).Die Hangabtriebskraft muß berechnet werden. Gleichung (6.1) und (6.2) beschreiben dieErmittlung des Richtungsvektors h, entlang dem die Hangabtriebskraft verläuft. DieStärke von Gewichtskraft und Hangabtriebskraft läßt sich im rechtwinkeligen„Kräftedreieck“ mit Hilfe der Trigonometrie bestimmen. Die Variable a bezeichnet einenVektor, der horizontal innerhalb der Bodenebene verläuft.

Da der Reifen nur in Längsrichtung abrollen kann, wird dem Reifen in Querrichtungimmer eine Kraft entgegengesetzt. Der Lateralanteil der Hangabtriebskraft ist zur Seiten-führungskraft hinzuzuaddieren. In Longitudinalrichtung wirken sowohl Antriebskraft alsauch Bremskraft der Bewegung des Fahrzeuges entgegen. Deshalb muß der Longitudi-nalanteil der Hangabtriebskraft nur beim völligen Blockieren der Reifen an den Starrkör-per überführt werden.

Da ein Teil der Normalkraft zuerst in die Radaufhängung übertragen, und nach einemSimulationsschritt wieder aus der Radaufhängung entnommen wird, kommt es zu gewis-sen Rechenungenauigkeiten. Diese wirken sich auf die Berechnung der Seitenführungs-kräfte aus. Steht das Fahrzeug quer am Hang, so ist ein leichtes Auf- und Abschwingenbemerkbar. Dieses Schwingen ist durch die Radaufhängung bedingt und kann bei demvorliegenden Modellierungsansatz leider nicht umgangen werden.

6.1.2 Stoßberechnungen

Für die Berchnung eines Stoßes zwischen zwei Körpern werden folgende Größen benö-tigt: Die beiden Massen, die Geschwindigkeiten, der Kollisionspunkt, und die beidenOberflächennormalen im Kollisionspunkt. Da die Übertragung des Stoßes immer zwi-schen Boden und Fahrzeug stattfindet, kann zur Berechnung von J die vereinfachte For-mel (2.37) aus Abschnitt 2.7.1 auf Seite 22 angewendet werden. Die Normale auf denStarrkörper wird in Richtung des Geschwindigkeitsvektors angenommen.

Zugunsten der Laufzeiteffizienz verzichte ich auf eine Annäherung an den exakten Kolli-sionszeitpunkt. Wird zum zum Zeitpunkt t eine Eindringungerkannt, so wird derselbeZeitpunkt t als Kollisionszeitpunkt betrachtet. Zusätzlich zu Masse und Geschwindigkeitmuß deshalb auch die Eindringungsdistanz aus den Attributen der Körper hervorgehen.Diese wird benötigt, um bestehende Eindringungen wieder aufzulösen.

Fh

Fg Fh

h a n×= (6.1)

a Fg n×= (6.2)

Page 92: Ackerman Geometrisi Diplomarbeit

Physikalisches Fahrzeugmodell 78

6.1.2.1 Radaufhängung

Bei der Zustandsüberführung der Radaufhängung stößt man auf folgendes Problem: derMassepunkt kann sowohl nach unten (durch die Eindringung des Reifens in den Boden)als auch nach oben in einen anderen Massekörper eindringen. Um gewährleisten zu kön-nen, daß diese Eindringungen aufgelöst werden, wird die Position des Massepunktes vorund nach der Überführung des Differentialsystemes auf die Einhaltung der Federwegeüberprüft. Unter der Annahme, daß sich ein Stoß ausschließlich vom Bodenkontaktpunktder Reifen ausgehend in Richtung des Fahrzeuges fortpflanzen kann, werden die Ein-dringungen so aufgelöst, daß der obere Massepunke auf Position des unteren angehobenwird. Die Berechnung des Impulses für „eindimensionale“ Stöße wurde in Abschnitt 2.7auf Seite 21, Gleichung (2.31) angegeben.

Der Starrkörper als oberster Massepunkt erfährt eine Spezialbehandlung. Damit die Ein-dringungen aufgelöst werden können, muß seine Position bis zum nächsten Transforma-tionsschritt um die Distanz der größten Eindringung aller vier Radaufhängungen nachoben versetzt werden. Der Versatz wird entlang der Federachse vorgenommen.

Bei einem einzigen Kollsisionspunkt muß der Stoß genau durch den Schwerpunkt desStarrkörpers verlaufen, um die Fallbewegung des Starrkörpers stoppen zu können. Beiden Stößen, die von der Radaufhängung entlang der Federungsachse auf die Karosserieübertragen werden, kann das nie der Fall sein. Außer, es werden mehrere Stöße gleich-zeitig übertragen. In diesem Fall kann die „Verteilung der Auflagekräfte“ (sieheAbschnitt 2.5 auf Seite 17) angewendet werden. Der berechnete Impuls wird zur Gänzein das angulare Moment (in den Drehimpuls) überführt, aber nur zu den vorberechnetenAnteilen in das lineare Moment.

6.1.2.2 Stoßübertragung vom Reifen an den Starrkörper

Von den Reifen müssen nur jene Stöße direkt an den Starrkörper übertragen werden, dienicht entlang der Federachse verlaufen. Auch hier muß berücksichtigt werden, daß einStoß, der von nur einem der Reifen ausgeht, im wesentlichen nur einen Drall des Fahr-zeuges bewirkt.

Für die Rückführung mehrerer Stöße kann die Horizontalverteilung aus Abschnitt 2.6angewendet werden. Zusätzlich ist die Lage des Schwerpunktes zu berücksichtigen. Eswirkt nur jener Anteil des Stoßes, der durch Projektion in Richtung des Schwerpunktesaufgetragen werden kann.Wird ein Stoß in mehreren Kontaktpunkten gleicheitig übertragen, so wird jener „virtu-elle“ Angriffspunkt als Ursprung für den Stoß betrachtet, der sich zwischen den Kontakt-punkten befindet. Wird beispielsweise auf beide Hinterräder ein Stoß in Längsrichtungübertragen, so liegt der Ursprung für die Stoßübertragung auf halbem Weg zwischen denbeiden Hinterrädern.

6.1.3 Abstimmung der Radaufhängung

Die allgemeine Bewegungsgleichung für ein gedämpftes Federsystem ohne äußereKrafteinflüße lautet [Efun 02]:

Page 93: Ackerman Geometrisi Diplomarbeit

79 Implementierungsaspekte

Sind alle Parameter (Masse, Federsteifigkeit, Dämpfungswiderstand) konstant, so wirdaus der Differentialgleichung zweiter Ordnung eine lineare Differentialgleichung mitkonstanten Koeffizienten. Sie kann mit Hilfe der folgenden charakteristischen Gleichunggelöst werden:

Es sind drei Fälle zu unterscheiden:

1. : das System ist unterkritisch gedämpft. Die Amplituden klingen imperiodischen Schwingungsverlauf exponentiell ab.

2. : das System ist kritisch gedämpft. Die Amplitude nähert sichschnellstmöglich ihrem Nullwert an, ohne zu überschwingen oder zu oszillieren.

3. das System ist überkritisch gedämpft. Je größer die Dämpfung, destolänger dauert die Rückkehr der Masse in die Ruhelage („Kriechfall“).

mx·· dx· kx+ + 0= (6.3)

mA2

dA k+ + 0= (6.4)

d2

4mk– 0<

d2

4mk– 0=

d2

4mk– 0>

Abbildung 6.3: Drei Formen eines gedämpften Schwingungsverlaufes

unterkritische Dämpfung, kritische Dämpfung,und überkritische Dämpfung (von oben nach unten)

Page 94: Ackerman Geometrisi Diplomarbeit

Physikalisches Fahrzeugmodell 80

Die Achsfederung des Fahrzeuges sollte kritisch gedämpft sein. Dh., der Wert für die

Dämpferkonstante d ist bei zu wählen. Mit m wird die Auflagekraft bezeichnet,die auf der Radaufhängung lastet. Das ist etwa ein Viertel von der Masse des Fahrzeuges,multipliziert mit der Erdbeschleunigung.Hat das Fahrzeug ein Gewicht von 1200 kg und eine Federkonstante von 40 N/m, so istdie Dämpferkonstante mit

zu wählen. Typische Werte für die Federung eines PKW liegen bei 25 bis 50 N/mm. Vor-der- und Hinterreifen sind meist unterschiedlich stark gefedert.

6.1.4 Berechnung der Teillastkurven

Wie bereits in Abschnitt 3.6.1.1 auf Seite 40 angeführt, muß die Drehmomentkurve fürden Teillastbetrieb skaliert werden. Die nachstehende Skizze zeigt die Skalierung einesKurvenpunktes:

Gegeben sind der zu skalierende Kurvenpunkt P, der Schnittpunkt der Projektionsgera-den mit der x-Achse S, und der Winkel, den die Projektionsgerade mit der x-Achse ein-schließt. Dieser Winkel ist . Gesucht ist der skalierte Punkt . Um diesen Punkt zubestimmen, berechnet man zuerst die Distanz drpm. Skaliert mit der Geradensteigung kergibt sie die Auslenkung des Punktes P’. Ich bezeichne diesen Wert g0y. Die Summeaus g0y und tq ergibt schließlich die Basis des rechtwinkeligen Dreieckes, dessen

4km

d 1200 / 4 * 9,81 * 40000 10849 89,= =

Abbildung 6.4: Skalierung der Vollastkurve am Beispiel eines Kurvenpunktes

α Ps

Page 95: Ackerman Geometrisi Diplomarbeit

81 Implementierungsaspekte

Kathete a durch den Punkt verläuft. Ich fasse mich kurz:a = c * cos( ) und

d enspricht der Stellung des Gaspedals in einem Intervall von 0 bis 1.

Wie man bereits in Abb. 6.4 erkennen kann, liefert die Skalierung der vorliegenden Kur-venpunkte keine Werte, die in die Abtastfrequenz der Kurve fallen: Die Skalierung desWertes bei 4500 Umdrehungen pro Minute liefert beispielsweise einen neuen Wert bei4220,71 RPM. Kurvenpunkte werden aber nur alle 500 RPM gespeichert. Um diesesProblem in den Griff zu bekommen, kann man sich den den gewünschten Abtastpunktenmit Hilfe eines Bisektionsverfahren nähern.

Es soll das Drehmoment für eine vorgegebene Drehzahl bestimmt werden: BetrachtetesIntervall ist das Ausdehnungsintervall der Kurve (Drehzahlbereich). Dieses Intervallwird halbiert, und der auf halbem Drehzahlbereich ausgelesene Kurvenpunkt wird fürdie gewünschte Gaspedalstellung skaliert. (Es können auch Kurvenpunkte zwischen denStützpunkten skaliert werden. Der Verlauf der Kurve zwischen den Stützpunkten wirdlinear angenommen.) Liegt der skalierte Punkt links vom gewünschten Drehzahlbereich,wird das Intervall für den nächsten Interationsschritt auf die obere Hälfte eingeschränkt.Ansonsten auf die untere Hälfte. Nach etwa 12 bis 16 Interationsschritten hat man bereitseine sehr gute Annäherung gefunden.Achtung: Können aufgrund des Verlaufes der Vollastkurve mehrere Punkte auf einenDrehzahlbereich abgebildet werden, wird dieses Verfahren nur einen dieser möglichenPunkte berechnen. Solche Kurven müßten jedoch einen sehr ungewöhnlichen Verlaufaufweisen und sind daher als Ausnahmefall zu betrachten. Sie werden in der Praxis nie-mals auftreten.

Für die Berechnung der Teillastkurven in Abb. 6.5 wurden 16 Iterationsschritte verwen-det. Der Schnittpunkt von Projektionsgerade und x-Achse liegt bei 1000 Umdrehungen.Die Geraden schneiden einander in einem Winkel von 7,5 Grad. Im unteren Drehzahlbe-reich lege ich ein minimales Drehmoment von 10 Nm fest. Im oberen Drehzahlbereichwerden die Kurven bei –70 Nm abgeschnitten. Damit wird die Bremswirkung desMotors modelliert.

Ps

α

Ps P a 1 d–( ) α( )sin

α( )cos

–= (6.5)

Page 96: Ackerman Geometrisi Diplomarbeit

Physikalisches Fahrzeugmodell 82

6.1.5 Getriebeabstimmung

Das Beschleunigungsverhalten des Fahrzeuges wird durch die Motorisierung und durchdie Abstimmung des Getriebes bestimmt. Betrachtet man die Vollastkurve aus Abb. 6.5in ihrem nutzbaren Bereich zwischen 1000 RPM und 6000 RPM, so ergeben sich unterAnwendung der Getriebeübersetzungen aus Tab. 3.1 folgende Traktionskurven (sieheAbb. 6.6). Der Reifenradius wurde mit 0,3m gewählt.

Beschleunigt das Fahrzeug beim Hochschalten nur träge bis gar nicht, sollte man dieMotorisierung austauschen, bzw. die Übersetzungsverhältnisse der Gänge näher zusam-menlegen. Liegen die Gänge zu dicht beieinander, so kann das ebenfalls unerwünschteFolgen haben, wie z.B. eine niedrigere Maximalgeschwindigkeit des Fahrzeuges.Für sinnvolle Werte, ist es empfehlenswert, sich an den Daten von Fahrzeugherstellernzu orientieren. Während die Getriebeübersetzung in jedem Typenschein angeführt ist,sind die Daten der Drehmomentkurve leider meist nur schwer zugänglich. Die von mirverwendete Vollastkurve orientiert sich an den in [Mons 01] angeführten Daten. Um eineÜbermotorisierung zu vermeiden, habe ich sie nach eigenem Ermessen etwas variiert.

Abbildung 6.5: Berechnete Teillastkurven

Page 97: Ackerman Geometrisi Diplomarbeit

83 Implementierungsaspekte

6.1.6 Luftwiderstand und Rollwiderstand

Aus Abb. 6.6 läßt sich eine Höchstgeschwindigkeit des Fahrzeuges von 55,7 m/s ausle-sen. Das entspricht in etwa 200 km/h. Aufgrund der bei der Fahrt auftretenden Gegen-kräfte wird diese Geschwindigkeit in der Praxis jedoch nie erreicht. Luftwiderstand undRollwiderstand der Reifen wirken der Traktionskraft entgegen und sorgen dafür, daß dieerreichbare Geschwindigkeit deutlich unter der theoretischen Höchstmarke liegt.

Während der Rollwiderstand linear angenommen werden kann, steigt der Luftwiderstandquadratisch mit der Geschwindigkeit des Fahrzeuges [Mons 01]. Siehe (6.6).

ist der Luftwiderstandsbeiwert,A ist die Frontquerschnittsfläche des Fahrzeuges,

ist die Luftdichte,und v ist die Geschwindigkeit des Autos.

Abbildung 6.6: Vollastkurve bei unterschiedlichen Getriebeübersetzungen

Fdrag 0 5 Cw A ρ v2⋅ ⋅ ⋅ ⋅,= (6.6)

Cw

ρ

Page 98: Ackerman Geometrisi Diplomarbeit

Physikalisches Fahrzeugmodell 84

Die Luftdichte liegt bei etwa 1,29 kg/ . Der -Wert ist von der Form des Fahrzeugesabhängig und wird durch Windkanal-Test ermittelt. Bei einer Corvette liegt dieser Wertetwa bei 0,30.

Aus dem 0,5-fachen aus Reibkoeffizient, Querschnittsfläche und Luftdichte läßt sich einFaktor berechnen, der mit dem Quadrat der Geschwindigkeit multipliziert die Luftwider-standskraft ergibt. Ich bezeichne diesen Wert als . Nehmen wir für die Corvette eine

Querschnittsfläche von 2,2 an, so ist

= 0,5 * 0,3 * 2,2 * 1,29 = 0,4257.

Abb. 6.7 zeigt den Einfluß von Luftwiderstand und Rollwiderstand in Abhängigkeit vonder Geschwindigkeit des Fahrzeuges. Die erreichbare Höchstgeschwindigkeit wird durchden Schnittpunkt von Traktionskraft und Fahrtwiderstandskraft (Summe aus Luftwider-standskraft und Rollwiderstandskraft) festgelegt. wurde mit 0,45 angenommen,der Rollwiderstand mit dem 12-fachen der Fahrgeschwindigkeit. Es läßt sich erkennen,daß der Luftwiderstand bis etwa 27 m/s dominiert. Ab 27 m/s übersteigt der Luftwider-stand den Rollwiderstand.

Bei diesem Beispiel wurde die Getriebeübersetzung ungünstig gewählt. Aufgrund derGegenkräfte kann der fünfte Gang nicht voll ausgenutzt werden. Die Gegenkräfte über-steigen Antriebskraft ab etwa 35 m/s. Im vierten Gang läßt sich das Fahrzeug auf einehöhere Geschwindigkeit beschleunigen, als im fünften.

m3

Cw

Cdrag

m2

Cdrag

Abbildung 6.7: Traktions- und Fahrtwiderstandskräfte

Cdrag

Page 99: Ackerman Geometrisi Diplomarbeit

85 Implementierungsaspekte

6.1.7 Rückkopplung von Motor und Antriebsrädern

Für die Realisierung des Antriebes muß das Drehmoment des Motors bestimmt und aufdie Antriebsräder übertragen werden. Nach Ablauf eines Simulationsschrittes wird dieDrehzahl aus den Rädern ausgelesen und an den Motor rückgeführt. Eine wichtige Rollein diesem Zyklus spielt der Kontakt zwischen Reifen und Straße.

6.1.7.1 Übertragung des Antriebsmomentes auf die Räder

Ob ein Rad mit dem Antrieb verbunden ist oder nicht, wird bei der Initialisierung desFahrzeuges festgelegt. Zur Laufzeit ergeben sich zwei weitere Faktoren, die einen Reifenvom Antriebsstrang trennen können: Die Getriebe-Übersetzung (Leerlauf) und dieKupplung. Diese beiden Faktoren sind ausschlaggebend dafür, welches Drehmomentvom Motor auf die Räder übertragen wird.

Das Einlegen des Leerlaufes bedeutet, daß die Verbindung vom Motor zu den Antriebs-reifen völlig unterbrochen wird. Die Räder werden wie freilaufende Räder behandelt.Und zwar solange, bis wieder ein Gang eingelegt wird. Bei hergestellter Verbindung zumMotor wird das übertragene Drehmoment mit einem Faktor skaliert, der den Zustand derKupplung wiedergibt. Der Wertebereich für den Faktor liegt zwischen 0 und 1. DasDrehmoment wird entsprechend der Auflagekräfte auf die beiden (oder vier) Antriebs-reifen verteilt.

6.1.7.2 Übertragung des Antriebsmomentes auf die Straße

Durch die Übertragung des Drehmomentes vom Motor auf die Antriebsräder entsteht inden Kontaktpunkten zwischen Reifen und Straße eine Kraft. Diese Kraft wird durch dieReibung in den Kontaktflächen verursacht. Sie bewirkt eine Beschleunigung des Fahr-zeuges. Bedingt durch das Auflagegewicht und die Hafteigenschaften des Reifens kannes sein, daß nur ein Teil der vom Motor erzeugten Kraft auf die Straße übertragen wird.Übersteigen Traktionskraft und Seitenführungskraft das Haftungslimit des Reifens, sobricht er aus aus und geht er in den Zustand der Gleitreibung über (siehe Abschnitt 3.4.1auf Seite 34).

Um die Reibkraft zwischen Reifen und Straße zu bestimmen, muß zunächst die Radlastermittelt werden. Das ist die Kraft, mit der der Reifen gegen den Boden gedrückt wird.Bildet man die Summe der Kräfte, die in den Feder- und Dämpferelementen von Reifenund Federung gespeichert sind, so erhält man jene Kraft, die vom Auflagepunkt des Rei-fens aus auf den Starrkörper ausgeübt wird. Der Anteil, der den Starrkörper daran hin-dert, in den Boden einzudringen, ist die Radlast. Man erhält sie durch Projektion desKraftvektors auf die Bodennormale. Mit Hilfe der Radlast kann die maximal zulässigeReibkraft in der Bodenkontaktfläche berechnet werden. Sie bestimmt, ob sich der Reifenim Zustand der Haftreibung oder im Zustand der Gleitreibung befindet. Abhängig davonwird die Reibkraft ermittelt (siehe Abschnitt 2.8 auf Seite 25).

Page 100: Ackerman Geometrisi Diplomarbeit

Physikalisches Fahrzeugmodell 86

6.1.7.3 Bestimmung der Reifendrehzahl

Für einen Reifen mit Bodenkontakt gilt es vier Fälle zu unterscheiden:

1. Reifen ist mit Antrieb gekoppelt und hat volle Bodenhaftung.

2. Reifen ist mit Antrieb gekoppelt und hat die Bodenhaftung verloren (Gleitreibung).

3. Reifen ist vom Antrieb entkoppelt und hat volle Bodenhaftung.

4. Reifen ist vom Antrieb entkoppelt und hat die Bodenhaftung verloren.

Für einen Reifen ohne Bodenkontakt sind zwei weitere Fälle zu betrachten:

1. Reifen ist mit Antrieb gekoppelt.

2. Reifen ist vom Antrieb entkoppelt.

Reifen ohne Bodenkontakt

Betrachten wir zunächst den ersten Fall für einen Reifen ohne Bodenkontakt. Da demReifen kein Widerstand entgegengesetzt wird (ich vernachnachlässige die Masseträgheitdes Reifens, seinen Luftwiderstand, und Reibverluste durch die Lagerung), geht dasgesamte Antriebsmoment des Motors in den Drehimpuls des Reifens über.

Für den zweiten Fall reicht es, die Eigenrotation des Reifen aufrechtzuerhalten.

Reifen mit Bodenkontakt

Im ersten Fall für einen Reifen mit Bodenkontakt wird eine einfache Abrollbewegungausgeführt. Die Rotationsgeschwindigkeit des Reifens wird durch Projektion der Fahr-zeuggeschwindigkeit auf den Laufrichtungsvektor des Reifens ermittelt.

Die Rückführung der Drehzahl im zweiten Fall ist etwas komplizierter. Der Reifenbesitzt weder vollen Bodenkontakt, noch kann er sich völlig ungehindert drehen. Umdennoch eine Drehzahl bestimmen zu können, muß der Einfluß des Bodenkontaktes aufden Reifen angenähert werden. Als brauchbar hat sich folgende Methode erwiesen:Die Drehzahl des Reifens bei vollem Bodenkontakt (Reifen mit Bodenkontakt, Fall 1)und bei fehlendem Bodenkontakt (Reifen ohne Bodenkontakt, Fall 1) lassen sich ermit-teln. Außerdem kann man unter Berücksichtigung des Auflagegewichtes jenen Anteilder im Auflagepunkt des Reifens anliegenden Kraft bestimmen, der tatsächlich auf dieStraße übertragen wird. Skaliert man zwischen den beiden ermittelten Drehzahlen imVerhältnis von übertragener Kraft zu nicht übertragener Kraft, so hat man eine ganz guteAnnäherung gefunden.

Der dritte Fall ist gleich dem ersten Fall zu behandeln.

Page 101: Ackerman Geometrisi Diplomarbeit

87 Implementierungsaspekte

Der vierte Fall ist gleich dem zweiten Fall zu behandeln.

6.1.7.4 Motorrückkopplung

Für die Rückkopplung der Antriebsräder mit dem Motor wird deren Drehzahl verwendet.Diese Drehzahl bestimmt das neue Drehmoment des Motors. Im Normalfall wird jedochmehr als ein Rad vom Motor angetrieben. Deshalb müssen die rückgeführten Drehzahlenauf einen Wert abgebildet werden. Ich verwende hierfür das Maximum. Damit kann derMotor in einem höheren Drehzahlbereich gehalten werden.

Bei eingelegtem Gang und Bodenkontakt der Reifen funktioniert dies alles ganz gut.Legt man jedoch den Leerlauf ein wird die Verbindung des Motors zu den Antriebsrä-dern getrennt. In diesem Zustand können keine Drehzahlen ausgelesen werden. DerMotor wird in seinem momentanen Zustand verweilen. Damit das nicht passiert, ver-wende ich eine Pseudo-Schwungmasse. Sie besizt eine gewisse Trägheit und speichertden Drehimpuls, der durch das Drehmoment des Motors aufgebaut wird. Dadurch ist esmöglich, den Motor auch im Leerlauf hochdrehen zu lassen.

6.1.8 Bremse

Grundsätzlich berechnet sich die Bremskraft, die durch die Reibung der Bremsklötze aufder Bremsscheibe entsteht durch Multiplikation des Bremsdruckes mit dem Reibkoeffi-zienten. Rotiert ein Reifen jedoch nur sehr langsam oder gar nicht, so kann durch dasBetätigen der Bremse ein entgegengerichteter Drehimpuls aufgebaut werden. Das istunerwünscht. Die Bremse soll den Drehimpuls verringern aber nicht umkehren.

Um zu verhindern, daß das Fahrzeug beim Betätigen der Bremse über den Stillstand hin-aus negativ beschleunigt wird, muß die ausgeübte Bremskraft mit der Winkelgeschwin-digkeit des Reifens abgeglichen werden. In dem Drehzahbereich, in dem das Betätigender Bremse zum sofortigen Stillstand der Räder führt, gilt der statische Reibkoeffizient.Im darüberliegenden Drehzahlbereich werden die Räder nur abgebremst. Die Brems-klötze reiben an der Bremsscheibe. Dh., es muß der kinetische Reibkoeffizient verwen-det werden.

6.1.9 Lenkgeometrie

Die Ackermann-Bedingung wurde bereits in Abschnitt 3.5.1 auf Seite 37 angesprochen.Das folgende Diagramm zeigt den detaillierten Zusammenhang zwischen den Lenkwin-keln der beiden Vorderreifen und dem Kurvenradius R.

Page 102: Ackerman Geometrisi Diplomarbeit

Physikalisches Fahrzeugmodell 88

Der trigonometrische Zusammenhang (6.7) erlaubt die Berechnung des inneren Lenk-winkels . Der äußere Lenkwinkel kann mit Hilfe der Gleichungen (6.8) und (6.9)bestimmt werden.

Für die Simulation ist es wünschenswert, den Lenkeinschlag der Räder normalisiert aufdas Intervall [-1,1] anzugeben. -1 steht für maximalen Einschlag links, 1 für maximalenEinschlag rechts. Basierend auf dem Wendekreis des Fahrzeuges läßt sich dieser maxi-male Lenkeinschlag für jedes der Vorderräder vorberechnen. Zur Bestimmung des Lenk-einschlages zur Laufzeit reicht eine lineare Skalierung der Winkel zwischen 0 und 1.

6.1.10 Fahrzeugkontrollen

Zur Steuerung des Fahrzeuges werden fünf Parameter benötigt. Der Fahrer hat die Mög-lichkeit über Lenkung, Gaspedal, Bremspedal, Kupplung und Gangschaltung in dasFahrverhalten einzugreifen (siehe Abb. 6.9). Siehe dazu auch [Rill 01].

Abbildung 6.8: Bestimmung der Lenkwinkel nach Ackerman

δi δa

δisinlR---= (6.7)

δatanl

b B+( )-----------------= (6.8)

B R2

l2

–= (6.9)

Page 103: Ackerman Geometrisi Diplomarbeit

89 Implementierungsaspekte

Der Zustand der Kontrolen wird in der Fahrzeugklasse verwaltet. Das Auslesen und Ver-ändern der Werte geschieht durch ein Objekt der Klasse Driver. Es liest die Eingaben desBenutzers von der Tastatur ein und versucht aufgrund dessen eine möglichst plausibleAnsteuerung der Kontrollen umzusetzen. Da die Tastatur ein digitales Eigabemedium ist,können die analogen Fahrzeugkontrollen nur mit einer entsprechenden Programmlogiksinnvoll genutzt werden. Nur die Gangschaltung besitzt einen diskreten Wertebereichund kann daher direkt manipuliert werden.

Die Erhöhung der Werte für Lenkung, Gaspedal, Bremse und Kupplung erfolgt linear.Die Wertzuwachsrate ist mit der Systemzeit gekoppelt. Gültige Werte liegen jeweilsjeweils zwischen 0 und 1, bei der Lenkung zwischen -1 und 1. Während die Veränderungvon Lenkung, Gas und Bremse an einen Tastendruck gebunden sind, wird die Kupplungautomatisch betätigt. Und zwar bei jedem Schaltvorgang. Beim Einlegen eines neuenGanges wird die Kupplung voll durchgetreten und dann langsam kommen gelassen(siehe Abb. 6.10).

Abbildung 6.9: Eingriffsmöglichkeiten des Fahreres auf die Steuerung des Fahrzeuges

Abbildung 6.10: Modellierung des von Gas und Kupplung beim Schaltvorgang

Page 104: Ackerman Geometrisi Diplomarbeit

Graphik Engine 90

Die Zeitspanne zum Einschleifen der Kupplung sollte nach möglichkeit so gewählt sein,daß ein Abgleich zwischen Motordrehzahl und Fahrzeuggeschwindigkeit möglich ist.Bei zu schnellem Einkuppeln würde entweder der Motor „abgewürgt“ werden, oder dieRäder würden beginnen, sich durchzudrehen. Die Wertzuwachsraten sind als Konstantein der Klasse Driver festgelegt.

6.2 Graphik Engine

Die Graphik-Engine basiert auf DirectX 8.1 [DX8 00] und dem Win32 API [Petz 98].Für die Schnittstelle habe ich mich aus zweierlei Gründen entschieden: Zum einen bietetDirectX ein eigenes Dateiformat, das das Laden und Visualisieren von Polygonmodellenfür den Programmierer stark vereinfacht. Der Export in das .x Dateiformat wird für diemeisten 3D Modellierungs-Werkzeuge unterstützt.Obgleich sich OpenGL [OpGL 98] (gerade auch im professionellen Bereich) mittler-weile seit längerem als Standard etabliert hat, bietet DirectX 8.1 für den Programmiererdurchaus auch seine Vorzüge. Vor allem die Programmer’s Reference von Microsoft istmir in diesem Zusammenhang positiv aufgefallen. Die Verwendung der Schnittstelle istdort sehr übersichtlich und auch umfangreich beschrieben. Sie ist als Windows Compi-led HTML Help File (chm-Datei) aufbereitet. Außerdem werden mit dem DX8 SDKeinige Programmierbeispiele mitgeliefert, die die Verwendung von häufig benötigtenFunktionen demonstrieren.

Ursprünglich hatte ich geplant, die Schnittstelle der Graphik-Engine so allgemein zu hal-ten, daß die DirectX Implementierung später jederzeit ohne größeren Aufwand gegeneine OpenGL Implementierung ausgetauscht werden kann. In Anbetracht des relativ gro-ßen Funktionsumfanges von DirectX, einer notwendigen Neudefinition vieler Konstan-ten und des sehr geringen Innovationsanteiles bei dieser Tätigkeit habe ich aber schließ-lich darauf verzichtet. Der Zugriff auf das Direct3D-Device wird von der Graphik-Engine auch an weitere Klassen abgetreten. Dadurch wird zwar das Prinzip einer saube-ren Schnittstellentrennung verletzt. Für eine schnelle, kontextbezogene Anpassung derAusgabezustände (Render States) erscheint diese Vorgehensweise aber dennoch sinnvoll.Die Zustandsänderung des Ausgabegerätes obliegt nicht alleine der Graphik-Engine.

Als Anhaltspunkt für die Implementierung der Graphik Engine diente unter anderem dieZen-X Engine [Arce 02], eine auf DirectX 8 basierende Open Source Graphik Engine.Sie kann kostenlos über das Internet bezogen werden. Während die Zen-X Engine einerelativ umfangreiche Graphikschnittstelle darstellt, beschränkt sich die vorliegendeImplementierung auf nur wenige, sehr grundlegende Funktionen. Diese Funktionen sol-len die Programmierung der Graphikausgabe erleichtern. Sie stellen eine funktionaleAbstraktion von ausgewählten Bereichen der DirectX-Schnittstelle dar.

Folgende Funktionen werden angeboten:

• Initialisierung eines DirectX Renderdevice im Fenster- oder im Vollbild Modus.

• Matrizenoperationen für Weltmatrix, Sichtmatrix und Projektionsmatrix.

Page 105: Ackerman Geometrisi Diplomarbeit

91 Implementierungsaspekte

• Laden und Ausgeben von DirectX-Meshes

• Beleuchtung und Nebel

• Ausgabe von Overlay-Graphiken (siehe Anhang D)

• Tastaturabfragen

• Timer-Funktion zur Ermittlung der Bildwiederholrate

6.2.1 Matritzenoperationen

In DirectX erfolgt das Setzen der Weltmatrix (D3DTS_WORLD), der Ansicht(D3DTS_VIEW) und der Projektionsmatrix (D3DTS_PROJECTION) über den BefehlSetTransform. Werden mehrere Transformationsschritte auf eine der Matritzen ausge-führt (Rotation, Translation, Skalierung, etc.), so reicht es, die entsprechenden Multipli-kationen vorerst auf eine lokale Matrix auszuführen. Das Setzen der Transformationszu-stände ist erst unmittelbar vor der Zeichenausgabe nötig. Die Graphik Engine übernimmtdiese Aufgabe für die Ausgabe von DirectX-Meshes über den Befehl drawObject.

6.2.1.1 Weltmatrix

Die Weltmatrix dient zur Ausgabe-Transformation von Graphikobjekten. Die globaleVariable matWorld, in welcher der Zustand der Weltmatrix gespeichert ist, wird zuBeginn eines jeden Render-Zyklus auf die Einheitsmatrix zurückgesetzt. Dies geschiehtin der Methode beginRendering. Für die Transformation der Matrix stehen folgendeBefehle zur Verfügung:

• pushMatrix: Sichern der aktuellen Weltmatrix (maximal 8 Sicherungsstände).

• popMatrix: Wiederherstellen der zuletzt gesicherten Matrix.

• identity: Rücksetzen der Weltmatrix auf die Einheitsmatrix.

• translate: Translation auf die Weltmatrix anwenden.

• rotateH: Rotation um die y-Achse auf die Weltmatrix anwenden (Heading).

• rotateP: Rotation um die z-Achse auf die Weltmatrix anwenden (Pitch).

• rotateR: Rotation um die x-Achse auf die Weltmatrix anwenden (Roll).

• multiplyMatrix: Multiplikation der Weltmatrix mit beliebiger Transformationsmatrix.

Vor Aufruf der Methode drawObject (Ausgabe geladener DirectX-Meshes) bleiben jegli-che Veränderungen der Variable matWorld ohne Auswirkung auf die DirectX Ausgabe-Transformation.

Page 106: Ackerman Geometrisi Diplomarbeit

Graphik Engine 92

6.2.1.2 Projektionsmatrix

Die Projektionsmatrix wird mit Hilfe der folgenden Methoden gesetzt: (Die Änderungenwerden direkt in die Render-Pipeline [D3DP 98] übernommen.)

• setFOV: Setzt den halben Öffnungswinkel des Viewing-Frustums (Field Of View).Die Angabe des Winkels erfolgt in Grad.

• setNearFar: Setzen der Near- und der Far-Clipping Plane des Viewing-Frustums.

• setAspect: Seitenverhältnis des Ausgabemediums spezifizieren (Höhe durch Breite inPixeln)

• setProjectionMatrix: Erlaubt das Setzen aller drei vorangegangener Eigenschaftenmit einem Methodenaufruf.

6.2.1.3 Sichtmatrix

Die Sichtmatrix wird laufend über ein Objekt des Types GFX_Camera aktualisiert. DasObjekt ist dynamisch an die Graphik Engine gebunden. Die Anpassung der Render-Pipe-line an die Sichtmatrix erfolgt in der Methode beginRendering. Dort wird die MethodeGFX_Camera::update aufgerufen. Sie bewirkt ein Setzen des Transformationszustan-des. Die Kamera kann mit folgenden Methoden ausgerichtet werden:

• setPosition: Setzen der Kameraposition.

• setTarget: Angabe des (statischen) Punktes im Raum, auf den die Kamera ausgerich-tet werden soll.

• setUpVector: „Stativ-Achse“ der Kamera spezifizieren.

• set: Erlaubt das Setzen aller drei vorangegangenen Eigenschaften mit einem Metho-denaufruf.

6.2.2 Das DirectX Dateiformat

Das DirectX Dateiformat ist ein Template-basiertes Dateiformat. Es erlaubt das Spei-chern von Meshes, Texturen, Animationen und benutzerdefinierbaren Objekten. DasFormat wurde mit DirectX 2.0 eingeführt. Eine Binärversion des Formates gibt es seitDirectX 3.0. Schnittstellen zum Schreiben und Lesen der .x Dateien sind ab Version 6.0verfügbar. Leider jedoch enthält die Dokumentation zum DirectX 8.1 SDK nur wenigeInformationen zum Aufbau des Formates. Die Referenz von Paul Bourke [Bour 99] isteine der wenigen Informationsquellen, die man zum DirectX Dateiformat findet.

Das Laden und Darstellen von .x Dateien kann mit den in den Direct3DX Utility Library[D3DX 02] enthaltenen Funktionen realisiert werden. Über die Funktion D3DXLoad-MeshFromX werden die Polygoninformationen aus der Datei in ein Mesh-Objekt ausge-

Page 107: Ackerman Geometrisi Diplomarbeit

93 Implementierungsaspekte

lesen. Das Mesh gliedert sich in mehrere Teilnetze (Subsets) mit unterschiedlichen Mate-rialeigenschaften und Texturen.

Das DirectX SDK stellt Werkzeuge zur Verfügung, um 3D-Modelle in das .x Dateifor-mat zu konvertieren (Conv3ds.exe) und zu exportieren (Plugins für gängige 3D Modelerwie 3D-Studio Max u.a.). Damit lassen sich Modelle erstellen, die später für die Visual-isierung des Fahrzeuges verwendet werden.

6.2.3 Beleuchtung und Nebel

Über die Graphik Engine kann sowohl das Umgebungslicht spezifiziert, als auch einegerichtete Lichtquelle angegeben werden. Im Gegensatz zu einer punktförmigen Licht-quelle werden bei diesem Modell alle Lichtstrahlen parallel angenommen. Das entsprichtam ehesten einer Beleuchtung mit Sonnenlicht. Durch die Verwendung von exponentiel-lem Nebel wird zusätzlich ein atmosphärischer Effekt erzielt. Der Himmel (Löschen desFramebuffers) und der Nebel-Effekt werden in der gleichen Farbe gezeichnet.

6.3 Terrain Engine

Die Terrain-Engine ist eine eigenständige DirectX Implementierung. Die GraphikEngine wird nur referenziert, um den Zeiger auf das Direct3D-Device zu erhalten. Eineweitere Abhängigkeit zur Klassenhierarchie ergibt sich durch die Implementierung desIntersektionstestes zwischen Reifen und Bodenoberfläche.

6.3.1 Repräsentation der Daten

Die Terraindaten werden aus einer .ter-Datei entnommen. Das Format wurde eingeführt,um neben der Höheninformation auch geotypische Informationen über die Landschaftspeichern zu können. Der Aufbau des Formates ist in Anhang D beschrieben. Es setztsich aus Header, Höhenmap und Featuremap zusammen. Die Featuremap besitzt dieselbe Auflösung wie die Höhenmap und ordnet einem jeden Vertex einen Bodentyp zu.Im Header sind neben den globalen Terrain-Spezifikationen wie Auflösung, Höhenska-lierung und Rasterweite spezifische Informationen für jeden Geotyp abgelegt. Insgesamtkönnen fünfzehn Geotypen definiert werden.

Für jeden Geotyp kann genau eine Texturreferenz angegeben werden. Als Darstellungs-information wird außerdem ein Skalierungswert benötigt (eine Texturkachel erstrecktsich auf wieviele Meter Länge?). Zusätzlich können Reibwert und Rollwiderstandswertvergeben werden. Die Zuordnung eines Höhenoffsets erlaubt es, das eine Byte anHöheninformation für jeden Geotyp auszunutzen. Dh., bei 15 Geotypen sind maximal15x256=3840 Höhenabstufungen möglich.Verwendet man die Angabe des Offsets, so wird das Editieren der Höhendatenerschwert: Ein Grauwert kann nicht mehr eindeutig einem Höhenwert zugeordnet wer-den – für die Bearbeitung wird ein spezieller Editor benötigt.

Warum nur 15 und keine 256 Geotypen zugelassen werden hat den folgenden Grund: ZurLaufzeit können die oberen 4 Bit eines Datenbytes für die Unterbringung der Quadtree

Page 108: Ackerman Geometrisi Diplomarbeit

Terrain Engine 94

Struktur verwendet werden: 1 Bit dient als Quadtree-Flag (verzweigt der Quadtree andieser Stelle oder nicht?). Die restlichen 3 Bit geben die Detailstufe an, in denen der Ter-rainblock dargestellt werden soll (diese Information wird ausschließlich in den Blätterndes Quadtrees benötigt). Diese Belegung erlaubt eine Auflösung von maximal 129x129Vertices pro Terrainblock.Zusätzlich ist der erste der 16 Geotypen als „Null-Wert“ reserviert. Er kann als Kenn-zeichnung für die „Abwesenheit“ von Bodendaten verwendet werden. Damit ist es mög-lich, gewisse Stellen bei der Triangulierung des Terrains auszulassen. Er kann für dieEinbindung größerer Objekte (Gewässer, Felsen, Überhänge, Gebäude, ...) genutzt wer-den.

6.3.2 Bestimmung des Höhenwertes für einen beliebigen Geländepunkt

Das Höhenfeld liefert nur für gewisse Punkte innerhalb der Landschaft eine exakteHöheninformation. Diese Information wird für die Erstellung des Polygongitters ver-wendet, das die Geländeoberfläche beschreibt. Einem jeden Vertex ist genau ein Wertdes Höhenfeldes zugeordnet. Möchte man den Höhenoffset in einem beliebigen Punktdes Polygongitters bestimmen, muß zwischen den vorliegenden Daten interpoliert wer-den.

Durch die Triangulierung wird jedes Rasterquadrat in zwei Dreiecke zerlegt. Nur sokann garantiert werden, daß jedes der Polygone innerhalb einer Ebene aufgespannt wird.Ob die Teilung eines Rasterqudrates entlang der einen Diaglonale oder entltang deranderen Diagonale erfolgt, liegt in der Entscheidung des Programmierers. Um denHöhenverlauf sauber wiedergeben zu können, kann die Wahl der richtigen Diagonaleallerdings entscheidend sein. Ich verwende der Einfachheit halber für jedes Quadrat diegleiche Diaglonale. Das vereinfacht sowohl den Aufbau des Polygongitters als auch dieInterpolation des Höhenwertes.

Eine effiziente Methode zur Interpolation des Höhenwertes ist die folgende:Als erstes muß der Punkt dem darunterliegenden Polygon zugeordnet werden. Die Eck-punkte des Polygons bezeichne ich als y00, y10, y01 und y11. Die Punkte, deren Höhen-information bestimmt werden sollen, tragen die Bezeichnungen P1, P2 und P3 (sieheAbb. 6.11).

Page 109: Ackerman Geometrisi Diplomarbeit

95 Implementierungsaspekte

Durch die Unterteilung des Polygons in zwei Dreiecke werden drei Fälle unterschieden:

1. P liegt in Ebene 1 (dx > dz)

2. P liegt in Ebene 2 (dx < dz)

3. P liegt auf der Schnittkante der beiden Ebenen (dx = dz)(dieser Fall kann gleich dem Fall 1 oder dem Fall 2 behandelt werden)

Bei Betrachten des Punktes P1 läßt sich erkennen, daß dieser in Ebene 1 liegt. Für dieberechnung des Höhenwertes wird die Projektion des Polygons in die xz-Ebene auf einQuadrat mit der Seitenlänge eins skaliert.Das Teilungsvehältnis f ergibt sich aus dem Strahlensatz:dx : dz = f : 1.

Der Punkt yf wird über die Höhendifferenz zwischen y01 und y11 gefunden:yf = y10 + f * (y11 – y10)

Die Lage von P1 ist:P1 = y00 + dx * (yf – y00)

6.3.3 Reifen-Boden Kollision

Das Reifenmodell besitzt nur eine einzige Feder, entlang derer sich eine Kraft entwik-keln kann. Deshalb muß die Schnittberechnung zwischen Reifen und Bodenoberflächeauf einen einzelnen Eindringungsvektor zurückgeführt werden. Länge und Orientierungdes Vektors geben Richtung und Stärke der Federstauchung an.

Wie bereits in Abschnitt 3.3.2.1 auf Seite 33 erwähnt, verwende ich für die Berechnungder Bodenkollision eine kugelförmige Reifengeometrie. Sie nähert sich der tatsächlichenForm eines Reifens zwar nur sehr unzureichend an. Für den Bereich der Kugel, über den

Abbildung 6.11: Interpolation eines Höhenwertes

Page 110: Ackerman Geometrisi Diplomarbeit

Terrain Engine 96

sich das Reifenvolumen erstreckt, liefert das Modell jedoch eine ausreichend gute Nähe-rung. Das Kollisionsmodell kommt mit jedem Geländeanstieg zurecht.

6.3.3.1 Berechnung des Eindringungsvektors

Um die Eindringung der Kugel auf einen Vektor zurückzuführen, müssen alle Normal-eindringungen der Kugel in die Bodenoberfläche bestimmt werden. Betrachtet man dieAusdehnung des Reifens, projiziert auf die xz-Ebene, so lassen sich alle Polygone ermit-teln, für die eine Schnittberechnung durchgeführt werden muß (siehe Abb Abb. 6.12).Für diese Polygone gilt es, die Ebenengleichgungen aufzustellen, und den Normalab-stand des Reifenmittelpunktes zu den einzelnen Ebenen zu ermitteln. Um sicherzustel-len, daß sich die Normalprejektion des Reifenmittelpunktes auch innerhalb des betrach-teten Polygones befindet, muß der projizierte Schnittpunkt gegen die Ausdehnung desPolygones getestet werden. Dabei kann man ähnlich wie bei Bestimmung des Höhen-wertes (Abschnitt 6.3.2) vorgehen: Liegt der Punkt innerhalb des Rasterquadrates, sobestimmt man den Anstieg der Geraden zwischen linkem oberem Eckpunkt und demProjektionspunkt. Ist der Anstieg kleiner gleich 1, so liegt der Punkt im oberen Polygon,ansonsten im unteren.

Als Eindringungsdistanz wird das arithmetische Mittel alles Ebeneneindringungenbetrachtet. Der Richtungsvektor für die Eindringung ergibt sich aus der Summe allerEindringungsvektoren. Er wird auf Einheitslänge skaliert und als Normale der Bodenein-dringung an den Reifen übergeben. Der „Kontaktpunkt“ zwischen Reifen und Boden-oberfläche liegt auf der Geraden, die sich vom Reifenmittelpunkt aus in Richtung derBodennormalen erstreckt. Seine Distanz zum Reifenmittelpunkt des ist durch den Radiusund die Eindringungsdistanz des Reifens festgelegt.

6.3.3.2 Laufrichtungsvektor

Die Longitudinalkräfte sind jene Kräfte, die (durch eine beschleunigte Abrollbewegung)in der Laufrichtung des Reifens entstehen. Den Vektor, der ihre Orientierung angibt,bezeichne ich als Laufrichtungsvektor. Er verläuft tangential zum Reifenzylinder und

Abbildung 6.12: Auswahl der Polygone für die Schnittberechnung mit dem Reifen

Page 111: Ackerman Geometrisi Diplomarbeit

97 Implementierungsaspekte

parallel zur Bodenebene, die durch die polygonale Oberflächenstruktur im Kontaktpunktangegeben wird. Er beschreibt keine Kraft sondern eine Richtung.

Um diesen Richtungsvektor zu bestimmen, muß das Kreuzprodukt der Bodennormalemit der Achsrichtung des Reifens gebildet werden. Der Laufrichtungsvektor gibt denVerlauf der Schnittgerade wieder, die zwischen Bodenebene und „Reifenebene“ gebildetwird (siehe Abb. 6.13).

6.3.4 Initialisierung des Quadtrees

Da die Featuremap nur zur Hälfte mit Nutzdaten belegt ist, wird der restlichen Platz zurSpeicherung der Quadtree-Struktur und der LOD-Informationen für die auszugebendenTerrainblöcke verwendet (siehe Abschnitt 6.3.1). Die Vorgehensweise bei der Initiali-sierng des Quadtrees wurde in Abschnitt 4.3.3 auf Seite 51 allgemein beschreiben. Demmöchte ich an dieser Stelle das Unterteilungskriterium und die Berechnung des Detaille-vels hinzufügen, in dem ein Terrainblock visualisiert werden soll.

Die Funktion getY liefert den Wert aus dem Höhenfeld an der Stelle (x,z). Die KonstanteTERRAINBLOCK_WITH gibt die Auflösung eines Terrainblocks an. set_qt_lod setzt dasDetaillevel für den Terrainblock an der Stelle (x,z). Es wird mit Hilfe der Funktion cal-cLOD berechnet.

01 setup_quadtree( int x, int z, int width )02 {03 // subdivision criterion (frustum culling)04 if( cubeInFrustum( x,getY(x,z),z, width ))05 {06 set_qt_flag( x, z );07

08 width /= 2;09 if( width < TERRAINBLOCK_WIDTH )10 {11 set_qt_lod( x,z, calcLOD(x,z) );12 }13 else

Abbildung 6.13: Bestimmung der Laufrichtung des Reifens

Page 112: Ackerman Geometrisi Diplomarbeit

Terrain Engine 98

10 {11 setup_quadtree( x-width, z-width, width );12 setup_quadtree( x+width, z-width, width );13 setup_quadtree( x-width, z+width, width );14 setup_quadtree( x+width, z+width, width );15 }16 }17 else18 {19 clear_qt_flag( x, z );20 }21 }

In Verbindung mit der Auto-Simulation bereitet das von [Boer 00] vorgestellte Verfahrenzur Bestimmung der Detail-Stufe gewisse Probleme: An manchen Stellen ist ein „Versin-ken“ der Autoreifen im Boden bemerkbar. Um die Darstellung zu korrigieren, ist einhöherer Detailgrad bei der Triangulierung der Terrainblöcke erforderlich. Da das Versin-ken der Reifen mit zunehmender Distanz zur Kamera vermehrt auftritt, lasse ich gerin-gere Detail-Stufen erst ab einer gewissen Kameradistanz zu. Ein höherer Detaillevelkann jedoch aufgrund des ersten Kriteriums auch in einem näher gelegenen Bereicherforderlich sein. Der von mir verwendete Algorithmus sieht wie folgt aus:

01 calcLOD( int x, int z, float dist2 )02 {03 const int C = 8;0405 int L = LOD_MIN; // höchstes Detail = 006 int d = (1 << L) * C;07 while( ( dist2<(Dn2(x,z,L-1) || dist2<d*d ) && L>0 )08 {09 L--;10 d = (1 << L) * C;11 }12 return L;13 }

Beginnend bei der kleinstmöglichen Detailstufe (LOD_MIN) wird die Detailstufesolange erhöht, bis ein zulässiger Wert für die vorliegende Kameradistanz gefuden wird.Um die Verwendung der Quadratwurzel-Funktion zu vermeiden, wird mit dem Quadratder Kameradistanz (dist2) und dem Quadrat der Mipmap-Distanzen gerechnet (Dn2).Die minimale Distanz für den Detaillevel L wird in Anlehnung an das Kriterium von[RHSS 97] durch die Größe eines Polygones im Terrainblock und einen konstanten Fak-tor C festgelegt. C richtet sich nach der Schrittweite des Grundrasters. Zufriedenstel-lende Ergebnisse konnten ab einem Wert von C = 8 erreicht werden.

6.3.5 Der Render-Durchlauf

Der Render Durchlauf beschränkt sich darauf, den erzeugten Quadtree noch einmal zudurchlaufen, und dabei all jene Terrainblöcke zu rendern, die bei der Erzeugung desQuadtrees dafür ausgewählt wurden. Der zweite Durchlauf ist deshalb nötig, weil erstmit dem vollständigen Quadtree alle Terrainblöcke bestimmt sind. Um die nötigen Detai-

Page 113: Ackerman Geometrisi Diplomarbeit

99 Implementierungsaspekte

lübergänge schaffen zu können, muß die Detailstufe der angrenzenden Terrainblöckebekannt sein.

6.3.6 Texturierung

Die Texturierung des Terrains erfolgt unter Verwendung von zwei Texturen: Eine Grund-textur wird mit unterschiedlicher Intensität von einer zweiten Textur überblendet. DieStärke der Überblendung richtet sich nach den Informationen aus der Höhenmap. AufNull-Niveau beträgt der Überblendungsfaktor 0 %, bei maximaler Höhenauslenkungwird die Grundtextur zu 100 % überdeckt. Diese Transparenzinformation wird als Ver-tex-Alpha an die Graphikkarte übergeben. Da die meisten Graphikkarten die Ausgabevon (mindestens) zwei Texturen in einem Durchgang unterstützen (single-pass multi-tex-turing), ergeben sich daraus keine Einbußen bei der Ausgabegeschwindigkeit. Die Textu-ren werden über die gesamte Landschaft hinweg wiederholt (gekachelt) aufgetragen.Alternative Methoden zur Aufbringung einer Landschaftstextur wurden in Abschnitt 4.4auf Seite 59 behandelt.

6.3.6.1 Automatische Generierung von Texturkoordinaten

Um den Datendurchsatz von der CPU an die Graphikkarte zu verringern, ist es empfeh-lenswert, die Texturkoordinaten automatisch generieren zu lassen. Dabei werden die 3-dimensionalen Vertexkoordinaten durch die Multiplikation mit einer Projektionsmatrixin 2-dimensionale Texturkoordinaten transformiert. Da die Vertex-Transformationen aufder Graphikkarte stattfinden, wird damit nicht nur der AGP-Bus, sondern auch die CPUentlastet.

Um die Render-Pipeline entsprechend aufzusetzen, muß DirectX eine Transformations-matrix übergeben werden. Da die Transformation nur im „Camera-Space“ durchgeführtwerden kann (also zusätzlich die Kamera-Transformationsstufe durchläuft), muß dieTransformationsmatrix zuvor mit der Inversen der Sichtmatrix multipliziert werden.Nehmen wir an, das Tripel (x,y,z) beschreibt die Position des Vertex, view ist die Sicht-matrix und mat die Projektionsmatrix für die Textur-Transformation, so wird von derGraphikhardware folgender Ausdruck berechnet:

(tu,tv,-,-) = (x,y,z,1) * view * view * mat.

Die Ergänzung des linken Vektors mit „-“ soll andeuten, daß das Ergebnis zwar ein Vek-tor mit vier Elementen ist. Relevant sind nur die ersten beiden Elemente tu und tv, dieberechneten Texturkoordinaten.

Der folgende Quellcode-Auszug zeigt, wie die Pipeline unter DirectX für die automati-sche Generierung der Texturkoordinaten aufgesetzt werden muß. p_pd3dDevice ist einPointer auf das Direct3D-Device. Da die Position des Vertex in TexturkoordinatenTransformiert werden soll, muß für die Texturstufe D3DSS_TCI_CAMERASPACE-POSITION als TCI (Texture Coodrinate Index) angegeben werden (siehe Zeile 24).

1–

Page 114: Ackerman Geometrisi Diplomarbeit

Terrain Engine 100

01 D3DXMATRIX mat, view, iView;

02 float det;

03

04 // Definition der Projektionsmatrix

05 mat._11 = 0.25f; mat._12 = 0.00f; mat._13 = 0.00f; mat._14 = 0.00f;

06 mat._21 = 0.00f; mat._22 =-0.25f; mat._23 = 0.00f; mat._24 = 0.00f;

07 mat._31 = 0.00f; mat._32 = 0.00f; mat._33 = 1.00f; mat._34 = 0.00f;

08 mat._41 = 0.50f; mat._42 = 0.50f; mat._43 = 0.00f; mat._44 = 1.00f;

09

10 // Sichtmatrix auslesen und invertieren

11 g_pd3dDevice->GetTransform( D3DTS_VIEW, &view );

12 D3DXMatrixInverse( &iview, &det, &view );

13

14 // Projektionsmatrix mit der Inversen der Sichtmatrix multiplizieren

15 mat = iview * mat;

16

17 // Transformationsmatrix übergeben

18 g_pd3dDevice->SetTransform( D3DTS_TEXTURE0, &mat );

19

20 // Anpassen der Texturstufe (hier nur Stufe 0)

21 g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS,

22 D3DTTFF_COUNT2 );

23 g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX,

24 D3DTSS_TCI_CAMERASPACEPOSITION );

Ohne Berücksichtigung der Kamera-Transformation wird folgende Abbildung berech-net. Siehe (6.10). Die Transformation ist das Produkt einer Salierung des x- und des y-Anteils, und der anschließenden Translation um eine halbe Texturbreite.

Es lassen sich folgende Texturkoordinaten auslesen:tu = 0,25x + 0,5tv = – 0,25y + 0,5

Bei dem betrachteten Beispiel wird ein zur xy-Ebene paralleles Quadrat mit den folgen-den Abmessungen vollständig mit der Textur abgedeckt (siehe Abb. 6.14).

x y z 1

0 25, 0 0 0

0 0 25,– 0 0

0 0 1 0

0 5, 0 5, 0 1

0 25x 0 5,+,0 25y 0 5,+,–

z

1

= (6.10)

Page 115: Ackerman Geometrisi Diplomarbeit

101 Implementierungsaspekte

6.3.7 Wahl der Parameter

Die Daten für die Visualisierung des Terrains entnehme ich der Datei „data\ter-rain\m513.ter“. Das Höhenfeld hat eine Auflösung von 513x513 Rasterpunkten. DieVertikale Skalierung beträgt 0,16 m pro Höheneinheit. Die Rasterweite beträgt 1 m.Dadurch ergibt sich eine Fläche von 512m x 512m. (Siehe dazu auch Abschnitt 4.3.2 aufSeite 50.)Für die Terrainblöcke verwende ich eine Auflösung von 17x17 Vertices. Dadurch wirddas Terrain in 32x32 Terrainblöcke mit jeweils fünf möglichen Detailstufen unterteilt.Der Quadtree Algorithmus bricht in einer Tiefe von vier ab. Unter Verwendung dieserParameter kann das Terrain mit einer Framerate von durchschnittlich 50 Hz dargestelltwerden. Bei einer horizontalen Verdopplung der Vertexdichte (horizontale Skalierungvon 0,5m) fällt die Framerate stark ab. Es werden etwa viermal so viele Dreiecke an dieGraphikkarte geschickt. – Sowohl das Frustum Culling als auch die LOD-Entscheidungsind distanzabhängig. Die Einheit für die Distanz sind Meter.

6.4 Szenenaufbau

Aufgrund von Datenabhängigkeiten muß für den Szenenaufbau eine gewisse Reihen-folge eingehalten werden:

1. Überführung des Fahrzeuges in seinen neuen Zustand (Ausführung eines Simulati-onsschrittes).

2. Aktualisierung der Kamera und der Instrumente. Zur Ausrichtung der Kamera wirddie eben bestimmte Position des Fahrzeuges benötigt (Onboard-Kamera, Ausrichtungder Kamera auf das Fahrzeug). Die Werte für die Intrumente werden aus dem Zustanddes Modelles entnommen.

3. Selektion des Framebuffers als Rendertarget und Ausgabe der Szene.

Abbildung 6.14: Zuordnung der Texturkoordinaten auf ein qudratisches Polygon

Page 116: Ackerman Geometrisi Diplomarbeit

Szenenaufbau 102

Die Fahrzeugteile (Chassis, Reifen) werden durch die Anwendung von Translation undRotation in die richtige Position gebracht. Welche Transformationsschritte für die Aus-gabe eines Objektes in welcher Reihenfolge auf die Weltmatrix anzuwenden sind, zeigtder Szenengraph in Abb. 6.15. Die Daten für Positionierung und Ausrichtung werdendem physikalischen Modell entnommen. Aufgrund der Verwendung des Z-Buffers ist dieReihenfolge für die Ausgabe der Szenenelemente unerheblich. Einen Sonderstatusnimmt die Anzeige der Instrumente ein. Sie darf erst am Ende des Szenenaufbaus erfol-gen, damit der Überblendungsmechanismus funktioniert.

Während die Szenenobjekte die ganze Transformationspipeline [D3DP 98] durchlaufen,ist die Instrumentenanzeige davon nicht betroffen. Die Ausgabe erfolgt mit Hilfe vonvortransformierten Vertexdaten. Im Szenengraphen ist dies dadurch angedeutet, daß derVisualisierungsknoten oberhalb der Kameratransformation eingehängt ist.

Abbildung 6.15: Szenengraph

Page 117: Ackerman Geometrisi Diplomarbeit

Kapitel 7

Laufzeitmessungen

Die folgenden Daten stammen aus Laufzeitmessungen des Systems. Sie wurden mit demProgramm Gnuplot32 [Gnup 99] visualisiert.

Das Gewicht des Fahrzeuges wurde mit 1020 kg angenommen. Die Federkonstantenbetragen k = 65 N/mm für die Radaufhängung und k = 130 N/mm für die Radfederung.Die Dämpferkonstante beträgt d = 8100 Ns/m. Die Reifen sind ungedämpft. Sie habeneinen Radius von 0,3 m. Die Federwege betragen 0,15 m (Radaufhängung) und 0,04 m(Reifen).

7.1 Fall aus einem Meter Höhe

Beim Fall des Fahrzeuges aus einem Meter Höhe (gemessen am geometrischen Mittel-punkt der Karosserie) wurden folgende Messdaten aufgezeichnet:

Abb. 7.1 zeigt den Geschwindigkeitsverlauf des Starrkörpers. Zwischen t = 0 und t = 50befindet sich der Körper im freien, ungebremsten Fall. Bei etwa t = 50 setzt das Fahr-zeug am ebenen Boden auf und wird dabei durch die Radaufhängung abgebremst. Nacheinem gedämpften Schwingungsverlauf nähert sich der Starrkörper der Ruhelage.

Abb. 7.2 zeigt die Auflagekräfte in den Bodenkontaktpunkten der Reifen.

Die Abbildungen Abb. 7.3 bis Abb. 7.6 zeigen den Schwingungsverlauf in den vier Rad-aufhängungen. Da der Schwerpunkt des Fahrzeuges etwas nach hinten versetzt ist, ver-teilt sich der Großteil der Last auf die Hinterräder.

103

Page 118: Ackerman Geometrisi Diplomarbeit

Fall aus einem Meter Höhe 104

Abbildung 7.1: Starrkörpergeschwindigkeit

Abbildung 7.2: Auflagekräfte in den Reifen

Page 119: Ackerman Geometrisi Diplomarbeit

105 Laufzeitmessungen

Abbildung 7.3: Radaufhängung vorne links

Abbildung 7.4: Radaufhängung vorne rechts

Page 120: Ackerman Geometrisi Diplomarbeit

Fall aus einem Meter Höhe 106

Abbildung 7.5: Radaufhängung hinten links

Abbildung 7.6: Radaufhängung hinten rechts

Page 121: Ackerman Geometrisi Diplomarbeit

107 Laufzeitmessungen

7.2 Beschleunigung auf der Geraden

Die nachstehenden Diagramme dokumentieren das Beschleunigungsverhalten des Fahr-zeuges in der Ebene entlang einer Geraden. Die Motorisierung wird durch die Drehmo-mentkurve in Abb. 7.7 beschrieben. Der Rollwiderstand der Reifen beträgt das 12-facheder Fahrzeuggeschwindigkeit. Der Luftwiderstand beträgt das 0,45-fache der Fahrzeug-geschwindigkeit zum Quadrat (siehe Abb. 7.8). Die Höchstgeschwindigkeit wird – auf-grund der Fahrtwiderstandskräfte – bei etwa 43 m/s erreicht. Als Getriebeübersetzungwurden die Daten aus Tabelle 3.1 auf Seite 41 verwendet.

Abb. 7.9 zeigt den Geschwindigkeitsverlauf des Fahrzeuges. Kurz nach t = 0 wird dererste Gang eingelegt. Bei etwa t = 500 der zweite. Das Hochschalten in den fünften Gangläßt sich bei etwa t = 2300 erkennen. Das Ausbrechen der Motorkennlinie (grün) ist dar-auf zurückzuführen, daß die Getriebeübersetzung von einem Simulationszeitpunkt aufden nächsten geändert wird. Durch das Einschleifen der Kupplung wird die Verbindungzwischen Motor und Antriebsrädern langsam wieder hergestellt. Die Kennlinie vonMotor, Antriebsrädern und Fahrzeuggeschwindigkeit werden zur Deckung gebracht.Die Zacken zwischen t = 0 und t = 150 sind – so, wie im vorangegangenen Beispiel – aufdas Aufsetzen des Fahrzeuges zurückzuführen.

Das Fahrzeug legt in den 35 sec eine Strecke von gut einem Kilometer zurück.

Abbildung 7.7: Drehmomentkurve

Page 122: Ackerman Geometrisi Diplomarbeit

Beschleunigung auf der Geraden 108

Abbildung 7.8: Antriebs- und Widerstandskräfte

Abbildung 7.9: Fahrzeuggeschwindigkeit

Page 123: Ackerman Geometrisi Diplomarbeit

109 Laufzeitmessungen

Während des Beschleunigungsvorganges kommt es zu einer dynamischen Verteilung derAuflagekräfte. Die Kraft in den Auflagepunkten der Reifen erzeugt neben dem Vortriebauch ein Drehmoment um den Schwerpunkt des Fahrzeuges. Je stärker die Beschleuni-gung, desto stärker werden die Hinterräder auf den Boden gepresst. Die Vorderräder wer-den entlastet.Bei den Schaltvorgängen setzt die Antriebskraft kurzfristig aus. Dadurch werden dieHinterräder entlastet. Diese Zeitpunkte lassen sich in Abb. 7.10 gut erkennen. Durch dasAusfedern der hinteren Radaufhängungen, und durch das vom Rollwiderstand erzeugteMoment um den Schwerpunkt, haben die Vorderräder kurzfristig eine größere Last alsdie Hinterräder zu tragen.

7.3 Kurvenverhalten

Die folgenden Daten wurden bei einer Kurvenfahrt in der Ebene aufgezeichnet. Der sta-tische Reibkoeffizient der Reifen wurde mit gewählt. Der kinetische Reibko-effizient ist .

Abb. 7.12 zeigt den Verlauf der Fahrt. Das Fahrzeug wird an der Position (0,y,0) auseiner Höhe von einem Meter auf ebenes Gelände fallengelassen. Es beschreibt eineRechtskurve und anschließend eine Linkskurve. Vor dem Richtungswechsel läßt sich einAusbrechen der Hinterräder erkennen. Die Reifen können den Seitenkräften beim beimBeschleunigen in der Kurve nicht mehr standhalten. Durch Gegensteuern wird das Aus-brechen des Fahrzeuges abgefangen. Dabei verringert sich seine Geschwindigkeit unddas Fahrzeug erlangt erneut die Bodenhaftung. Ein weiteres Ausbrechen der Räder ist

Abbildung 7.10: Auflagekräfte

µs 1 1,=µk 0 9,=

Page 124: Ackerman Geometrisi Diplomarbeit

Kurvenverhalten 110

am Ende des Kurvenverlaufes zu erkennen, wenn das Fahrzeug bei etwa t = 1300 nacheinem weiteren Beschleunigungsmanöver abgebremst wird (siehe Abb. 7.13).

Im Kurvenverlauf in Abb. 7.13 lassen sich folgende markante Punkte erkennen: Gleichbeim Aufsetzen am Boden (t = 100) wird der erste Gang eingelegt. Bis das Fahrzeug unddie Reifen die Geschwindigkeit erreicht haben, die durch die Motordrehzahl vorgegebenwird, vergehen etwa zwei Sekunden. Ab etwa t = 300 folgt der Verlauf der Motorkennli-nie dem von Fahrzeug und Reifen. Ein weiteres Hochschalten ist bei t = 500 zu erken-nen. Durch den Geschwindigkeitsverlust beim Kurvenwechsel wird bei t = 950 auf denersten Gang heruntergeschaltet. Anschließend folgt eine neuerliche Beschleunigungs-phase, bis bei t = 1300 in den Leerlauf geschaltet und die Bremse betätigt wird.Über den gesamten Verlauf des Diagrammes hinweg fällt eine Diskrepanz in den Reifen-geschwindigkeiten auf. Diese ergibt sich aufgrund der Kurvenlage des Fahrzeuges. Dadie Reifen unterschiedlich große Wendekreisdurchmesser besitzen, müssen sie in derKurve auch unterschiedlich große Strecken zurücklegen. Bei etwa t = 900 ist ein Rich-tungswechsel erkennbar. Die Kurven überschneiden sich. Während vorher der linke Vor-derreifen die größte Geschwindigkeit aufweisen konnte, so ist es nach dem Richtungs-wechsel der rechte Vorderreifen (in Abb. 7.12 läßt sich erkennen, daß dieser denkleinsten Wendekreisradius besitzt). Erst durch den Bremsvorgang gleichen sich dieGeschwindigkeiten der Räder an einen Wert an.

Abbildung 7.11: Fahrzeug in Kurvenlage (Linkskurve)

Page 125: Ackerman Geometrisi Diplomarbeit

111 Laufzeitmessungen

Abbildung 7.12: Fahrspur

Abbildung 7.13: Geschwindigkeitsmessung

Page 126: Ackerman Geometrisi Diplomarbeit

Kurvenverhalten 112

Federungsverhalten

Durch die longitudinale und durch die laterale Beschleunigung des Fahrzeuges kommt eszu unterschiedlichen Kräfteverteilungen in den Bodenkontaktpunkten der Reifen (sieheAbb. 7.14). In direktem Zusammenhang mit den Auflagekräften in den Reifen stehen dieAuslenkungen der Radaufhängungen. Abb. 7.15 bis Abb. 7.18 zeigen das Einfedern dereinzelnen Radaufhängungen.

Abbildung 7.14: Auflagekräfte in den Reifen

Page 127: Ackerman Geometrisi Diplomarbeit

113 Laufzeitmessungen

Abbildung 7.15: Radaufhängung vorne links

Abbildung 7.16: Radaufhängung vorne rechts

Page 128: Ackerman Geometrisi Diplomarbeit

Kurvenverhalten 114

Abbildung 7.17: Radaufhängung hinten links

Abbildung 7.18: Radaufhängung hinten rechts

Page 129: Ackerman Geometrisi Diplomarbeit

115 Laufzeitmessungen

7.4 Freie Fahrt im Gelände

Für die Fahrt im Gelände wurden die Federkonstanten in der Lagerung des Starrkörpersetwas hinaufgesetzt. Die Federkonstante in der Radaufhängung beträgt 80 N/mm, die ImReifen 210 N/mm. Der Dämpfer wurde mit 8950 Ns/m proportioniert.

Abb. 7.19 gibt die Position des Fahrzeuges wieder. Das Fahrzeug wurde an der Position(0,y,0) aus einer Höhe von etwa 0,5 Meter auf abschüssiges Gelände fallengelassen.

Während dem Fahrverlauf wurden folgende Geschwindigkeiten aufgezeichnet (sieheAbb. 7.21). Am Beginn der Kurve ist ein linearer Anstieg der Geschwindigkeit zu erken-nen. Aufgrund der Gravitation wird das Fahrzeug gleichmäßig nach unten beschleunigt.Haben die Reifen den Bodenkontakt erlangt, geht die Bewegung des Fahrzeuges in eineRollbewegung über. Das Fahrzeug rollt den Hang nach unten. Gleichzeitig findet eineAngleichung der Reifendrehzahlen an die Geschwindigkeit des Starrkörpers statt. DieseAngleichung ist etwa zwischen t = 100 und t = 200 zu erkennen.Zu diesem Zeitpunkt wurde bereits der erste Gang eingelegt. Bei t = 900 wird in denzweiten Gang hochgeschaltet. Bei t = 2000 wird der Leerlauf eingelegt und ein Brems-vorgang eingeleitet.

Abbildung 7.19: Fahrspur

Page 130: Ackerman Geometrisi Diplomarbeit

Freie Fahrt im Gelände 116

Während der Fahrt kommt es immer wieder zum Ausbrechen der Antriebsreifen. Das istdarauf zurückzuführen, daß die Antriebsräder manchmal stärker, und manchmal wenigerstark belastet werden. Durch die Unebenheiten im Gelände variiert die Radlast der Rei-fen relativ stark. Die Räder können den Bodenkontakt verlieren.Die anderen Abweichungen der Reifendrehzahlen sind durch die Kurvenlage des Fahr-zeuges bedingt.

Abbildung 7.20: Fahrzeug im Gelände (erste Rechtskurve)

Abbildung 7.21: Geschwindigkeitsmessung

Page 131: Ackerman Geometrisi Diplomarbeit

117 Laufzeitmessungen

Bleibt die Geschwindigkeit eines nicht angetriebenen Reifens über einen kurzen Zeit-raum hinweg konstant, darf davon ausgegangen werden, daß der Reifen den Bodenkon-takt verloren hat. Durch seinen Drehimpuls wird die Geschwindigkeit aufrechterhalten.

Abb. 7.22 zeigt die Auflagekräfte in den Reifen. Sie variieren relativ stark.

Federungsverhalten

Die nachfolgenden Diagramme zeigen den Federungsverlauf eines jeden der vier Räder.

Abbildung 7.22: Auflagekräfte

Page 132: Ackerman Geometrisi Diplomarbeit

Freie Fahrt im Gelände 118

Abbildung 7.23: Radaufhängung vorne links

Abbildung 7.24: Radaufhängung vorne rechts

Page 133: Ackerman Geometrisi Diplomarbeit

119 Laufzeitmessungen

Abbildung 7.25: Radaufhängung hinten links

Abbildung 7.26: Radaufhängung hinten rechts

Page 134: Ackerman Geometrisi Diplomarbeit

Freie Fahrt im Gelände 120

Page 135: Ackerman Geometrisi Diplomarbeit

Anhang A

Quaternions

In diesem Abschnitt versuche ich, einen groben Überblick über Quaternions zu geben.Es werden sowohl Aufbau, als auch Rechenoperationen behandelt. Die Ausführungenbasieren auf [PeWe 82], [TMQF 97] und [Sobe 00]. Für die Implementierung der Starr-körperdynamik wird die in Abschnitt A.1.2 besprochene Multiplikation benötigt. Außer-dem werden die Umrechnungen aus Abschnitt A.2.1 und Abschnitt A.2.2 verwendet.

Quaternions sind eine Erweiterung der Komplexen Zahlen. Anstatt eines einzigen Imagi-näranteils i bestitzen Quaternions drei imaginäre Anteile i, j und k, sodaß

Ein Quaternion hat folgende Darstellungsform:

r ist eine reelle Zahl. x, y und z sind komplexe Zahlen. Faßt man x, y und z in einen Vektor v zusammen, erhält man folgende, ebenfalls gängigeDarstellungsform für Quaternions:

i i⋅ 1–=

j j⋅ 1–=

k k⋅ 1–=

q r xi yj zk+ + +=

q r v,[ ]=

121

Page 136: Ackerman Geometrisi Diplomarbeit

Rechenoperationen 122

Der Anteil wird als Vektor bezeichnet, r als Skalar. Man darf sich v aller-dings nicht als typischen 3-dimensionalen Vektor vorstellen. Es ist ein Vektor im 4-dimensionalen Raum.

Die Länge eines Quaternions ist definiert als .

Das konjungierte Quaterionin q’ ist gleich r – xi – yj – zk.

Außerdem gilt folgender Zusammenhang:

Das Eins-Element bezüglich der Multiplikation ist [1,(0, 0, 0)], das Null-Elementbezüglich der Addition ist [0,(0, 0, 0)].

A.1 Rechenoperationen

A.1.1 Addition und Subtraktion

Zwei Quaternions werden addiert, indem man ihre Komponenten addiert. Und sie wer-den subtrahiert, indem man ihre Komponenten subtrahiert.

q = (r,x,y,z) = r + xi + yj + zk,

p = (s,a,b,c) = s + ai + bj + ck,

q+p = (r+s, x+a, y+b, z+c),

q-p = (r-s, x-a, y-b, z-c).

A.1.2 Multiplikation

Die Multiplikation zweier Quaternions entspricht der Multiplikation zweier Polygone:

q = (r,x,y,z),

p = (s,a,b,c),

qp = (r+xi+yj+zk)(s+ai+bj+ck)

= ...

= ( rs-xa-yb-zc,

ra+xs+yc-zb,

rb-xc+ys+za,

rc+xb-ya+zs )

In der zweiten Darstellungsform läßt sich die Multiplikation zweier Quaternions folgen-dermaßen anschreiben:

v x y z, ,( )=

q sqrt r2 x2 y2 z2+ + +( )=

q 1 q1–⇒ q ′= =

Page 137: Ackerman Geometrisi Diplomarbeit

123 Quaternions

Achtung: Die Multiplikation von Quaternions ist assoziativ, nicht aber kommutativ!

A.2 Umrechnungen

A.2.1 Rotationsmatrix in Quaternion

Eine Rotationsmatrix kann mit Hilfe des folgenden Algorithmus in ein Quaternionumgerechnet werden:

1. Berechne die Spur der Matrix M:

S = 4 - 4x² - 4y² - 4z² = 4( 1 - x² - y² - z² ) = mat[0] + mat[5] + mat[10] + 1

2. Ist die Spur größer Null, so ist das Quaternion durch folgende Gleichungen bestimmt:

u = 0.5 / sqrt(S); r = 0.25 / u; x = ( mat[9] - mat[6] ) * u; y = ( mat[2] - mat[8] ) * u; z = ( mat[4] - mat[1] ) * u;

Andernfalls ( ) bestimme das größte Element der Hauptdiagonale. In Abhängig-keit von diesem Wert, berechnet sich das Quaternion wie folgt:

// 1. Element der Hauptdiagonale am größten: u = sqrt( 1.0 + mat[0] - mat[5] - mat[10] ) * 2;

x = 0.5 / u; y = (mat[1] + mat[4] ) / u; z = (mat[2] + mat[8] ) / u; r = (mat[6] + mat[9] ) / u;

// 2. Element der Hauptdiagonale am größten: u = sqrt( 1.0 + mat[5] - mat[0] - mat[10] ) * 2;

x = (mat[1] + mat[4] ) / u; y = 0.5 / u; z = (mat[6] + mat[9] ) / u; r = (mat[2] + mat[8] ) / u;

// 3. Element der Hauptdiagonale am größten: u = sqrt( 1.0 + mat[10] - mat[0] - mat[5] ) * 2;

x = (mat[2] + mat[8] ) / u;

r1 v1,[ ] r2 v2,[ ] r1r2 v1 v2⋅– r1v2 r2v1 v1 v2×+ +,[ ]=

S 0≤

Page 138: Ackerman Geometrisi Diplomarbeit

Umrechnungen 124

y = (mat[6] + mat[9] ) / u; z = 0.5 / u; r = (mat[1] + mat[4] ) / u;

A.2.2 Quaternion in Rotationsmatrix

Die Umrechnung eines Quaternions in eine Rotationsmatrix wird wie folgt durchgeführt:

Verwendet man ein Quaternion der Länge 1 verkürzt sich der Ausdruck auf:

A.2.3 Rotationsachse und -winkel in Quaternion

Bei gebener Rotationsachse axis und gegebenem Rotationswinkel angle wird das Qua-ternion nach folgender Fomel berechnet:

sin_a = sin( angle / 2 ) cos_a = cos( angle / 2 )

x = axis.x / sin_a y = axis.y / sin_a z = axis.z / sin_a r = cos_a

A.2.4 Quaternion in Rotationsachse und -winkel

Die Umrechnung des Quaternions in Rotationsachse und -winkel sieht wie folgt aus:

cos_angle = r; angle = acos( cos_angle );

sin_angle = sqrt( 1.0 - cos_angle * cos_angle ); if ( fabs( sin_angle ) < 0.0005 ) sa = 1;

Mr2 x2 y2– z2–+ 2xy 2rz– 2xz 2ry+

2xy 2rz+ r2 x2– y2 z2–+ 2yz 2rx–

2xz 2ry– 2yz 2rx+ r2 x2– y2– z2+

=

M1 2y2– 2z2– 2xy 2rz– 2xz 2ry+

2xy 2rz+ 1 2x2– 2z2– 2yz 2rx–

2xz 2ry– 2yz 2rx+ 1 2x2– 2y2–

=

Page 139: Ackerman Geometrisi Diplomarbeit

125 Quaternions

axis.x = x / sa; axis.y = y / sa; axis.z = z / sa;

Page 140: Ackerman Geometrisi Diplomarbeit

Umrechnungen 126

Page 141: Ackerman Geometrisi Diplomarbeit

Anhang B

Frustum Culling

Die folgenden Codeauszüge sind im wesentlichen dem Paper von Mark Morley[Morl 00] entnommen. Morley verwendet jedoch für seine Beispielcodes die Graphik-Schnittstelle OpenGL. Die Berechnung der Clipping Planes mußte auf DirectX ange-passt werden.

01 void extractFrustum()02 {03 double t;0405 // Get the current PROJECTION matrix06 D3DXMATRIX proj;07 g_pd3dDevice->GetTransform( D3DTS_PROJECTION, &proj );0809 // Get the current MODELVIEW matrix10 D3DXMATRIX view;11 g_pd3dDevice->GetTransform( D3DTS_VIEW, &view );1213 // Combine the two matrices (multiply projection by modelview)14 D3DXMATRIX clip = view * proj;1516 // Extract the RIGHT plane ---------------------------17 frustum[0][0] = clip._14 - clip._11;18 frustum[0][1] = clip._24 - clip._21;19 frustum[0][2] = clip._34 - clip._31;20 frustum[0][3] = clip._44 - clip._41;21 t = sqrt( frustum[0][0] * frustum[0][0] +22 frustum[0][1] * frustum[0][1] +23 frustum[0][2] * frustum[0][2] );24 frustum[0][0] /= t;25 frustum[0][1] /= t;26 frustum[0][2] /= t;27 frustum[0][3] /= t; // ...Normalize the result28

127

Page 142: Ackerman Geometrisi Diplomarbeit

128

29 // Extract the LEFT plane ----------------------------30 frustum[1][0] = clip._14 + clip._11;31 frustum[1][1] = clip._24 + clip._21;32 frustum[1][2] = clip._34 + clip._31;33 frustum[1][3] = clip._44 + clip._41;34 t = sqrt( frustum[1][0] * frustum[1][0] +35 frustum[1][1] * frustum[1][1] +36 frustum[1][2] * frustum[1][2] );37 frustum[1][0] /= t;38 frustum[1][1] /= t;39 frustum[1][2] /= t;40 frustum[1][3] /= t; // ...Normalize the result4142 // Extract the BOTTOM plane --------------------------43 frustum[2][0] = clip._14 + clip._12;44 frustum[2][1] = clip._24 + clip._22;45 frustum[2][2] = clip._34 + clip._32;46 frustum[2][3] = clip._44 + clip._42;47 t = sqrt( frustum[2][0] * frustum[2][0] + 48 frustum[2][1] * frustum[2][1] +49 frustum[2][2] * frustum[2][2] );50 frustum[2][0] /= t;51 frustum[2][1] /= t;52 frustum[2][2] /= t;53 frustum[2][3] /= t; // ...Normalize the result5455 // Extract the TOP plane -----------------------------56 frustum[3][0] = clip._14 - clip._12;57 frustum[3][1] = clip._24 - clip._22;58 frustum[3][2] = clip._34 - clip._32;59 frustum[3][3] = clip._44 - clip._42;60 t = sqrt( frustum[3][0] * frustum[3][0] +61 frustum[3][1] * frustum[3][1] +62 frustum[3][2] * frustum[3][2] );63 frustum[3][0] /= t;64 frustum[3][1] /= t;65 frustum[3][2] /= t;66 frustum[3][3] /= t; // ...Normalize the result6768 // Extract the FAR plane ----------------------------69 frustum[4][0] = clip._14 - clip._13;70 frustum[4][1] = clip._24 - clip._23;71 frustum[4][2] = clip._34 - clip._33;72 frustum[4][3] = clip._44 - clip._43;73 t = sqrt( frustum[4][0] * frustum[4][0] +74 frustum[4][1] * frustum[4][1] +75 frustum[4][2] * frustum[4][2] );76 frustum[4][0] /= t;77 frustum[4][1] /= t;78 frustum[4][2] /= t;79 frustum[4][3] /= t; // ...Normalize the result8081 // Extract the NEAR plane -----------------------------82 frustum[5][0] = clip._14 + clip._13;83 frustum[5][1] = clip._24 + clip._23;84 frustum[5][2] = clip._34 + clip._33;85 frustum[5][3] = clip._44 + clip._43;86 t = sqrt( frustum[5][0] * frustum[5][0] +87 frustum[5][1] * frustum[5][1] +88 frustum[5][2] * frustum[5][2] );89 frustum[5][0] /= t;

Page 143: Ackerman Geometrisi Diplomarbeit

129 Frustum Culling

90 frustum[5][1] /= t;91 frustum[5][2] /= t;92 frustum[5][3] /= t; // ...Normalize the result93 }

Zur Entscheidungsfindung, ob ein Würfel mit Mittelpunkt (x, y, z) und Größe size zurGänze oder teilweise innerhalb des Frustums liegt, kann folgende Funktion verwendetwerden:

01 bool cubeInFrustum( float x, float y, float z, float size )02 {03 int p;04 for( p = 0; p < 6; p++ )05 {06 if( frustum[p][0] * (x - size) + frustum[p][1] * (y - size) +07 frustum[p][2] * (z - size) + frustum[p][3] > 0 )08 continue;0910 if( frustum[p][0] * (x + size) + frustum[p][1] * (y - size) +11 frustum[p][2] * (z - size) + frustum[p][3] > 0 )12 continue;1314 if( frustum[p][0] * (x - size) + frustum[p][1] * (y + size) +15 frustum[p][2] * (z - size) + frustum[p][3] > 0 )16 continue;1718 if( frustum[p][0] * (x + size) + frustum[p][1] * (y + size) +19 frustum[p][2] * (z - size) + frustum[p][3] > 0 )20 continue;2122 if( frustum[p][0] * (x - size) + frustum[p][1] * (y - size) +23 frustum[p][2] * (z + size) + frustum[p][3] > 0 )24 continue;2526 if( frustum[p][0] * (x + size) + frustum[p][1] * (y - size) +27 frustum[p][2] * (z + size) + frustum[p][3] > 0 )28 continue;2930 if( frustum[p][0] * (x - size) + frustum[p][1] * (y + size) +31 frustum[p][2] * (z + size) + frustum[p][3] > 0 )32 continue;3334 if( frustum[p][0] * (x + size) + frustum[p][1] * (y + size) +35 frustum[p][2] * (z + size) + frustum[p][3] > 0 )36 continue;3738 return false;39 }40 return true;41 }

Zu beachten ist, daß das Ergebnis von cubeInFrustum() in gewissen Spezialfällen falschsein kann. Das ist genau dann der Fall, wenn die getesteten Punkte zwar innerhalb derjeweiligen Ebenen liegen, der Wüfrel aber dennoch keinen Schnittkörper mit demFrustum aufweist (siehe dazu Abb. B.1). Diese Fehler können allerdings vernachlässigtwerden, da sie nur sehr selten auftreten. Außerdem wird die Sichtbarkeitsentscheidung

Page 144: Ackerman Geometrisi Diplomarbeit

130

hierarchisch auf immer kleinere Ausschnitte der Landschaft ausgeführt, wodurch eineFehlinterpretation auf der nächst-tieferene Ebene in den meisten Fällen wieder kompen-siert wird. Im schlimmsten Fall werden ein paar überflüssige Dreiecke an die Render-Pipeline geschickt. Das stört aber nicht weiter, da sich daraus kein merklicher Einflußauf die Ausgabegeschwindigkeit ergibt. Um einen merklichen Einbruch in der Frameratezu erhalten, müßten sich in der fälschlicherweise akzeptierten Region vergleichsweiseviele Polygone befinden. Aufgrund der Anordnung der Geländedaten darf man davonaber nicht ausgehen. Die Berücksichtigung der eben angesprochenen Spezialfälle würdeim Vergleich mehr an Rechenzeit kosten, als jemals durch eine Fehlentscheidung in derBestimmung der Ausgabemenge entstehen könnte.

Abbildung B.1: Mögliche Fehlentscheidung beim Frustum Culling

Page 145: Ackerman Geometrisi Diplomarbeit

Anhang C

DirectX Render-Framework

Für das Verständnis der Abarbeitungsreihenfolge ist es wichtig, sich mit dem von Win-dows verwendeten Nachrichtenkonzept vertraut zu machen. Inwieweit die Graphikaus-gabe in dieses Konzept eingebunden werden kann, wird im Anschluß daran behandelt.

C.1 Das Nachrichtenkonzept unter Windows

Wenn der Benutzer über Maus oder Tastatur mit einem Windows Programm interagiert,so geschieht dies über Nachrichten (Messages): Bei jedem Systemereignis (z.B. Maus-klick auf das Fenster) wird vom Betriebssystem eine Nachricht erstellt und in der Nach-richten-Queue des betroffenen Fensters abgelegt. Um darauf reagieren zu können, müs-sen die Nachrichten aus der Queue ausgelesen werden. Dies geschieht in der Hauptnach-richtenschleife

C.1.1 Hauptnachrichtenschleife (Windows Message Loop)

Das folgende Codestück zeigt eine Implementierung des Windows Message Loops. Siebildet den Kern der Win32 Anwendung und wird solange durchlaufen, solange GetMes-sage keine WM_QUIT Message aus der Queue des Programm-Threads ausliest.

01 MSG msg; // Datenstruktur für Nachricht

02

03 while( GetMessage( &msg, NULL, 0, 0 ) )

04 {

05 TranslateMessage( &msg );

06 DispatchMessage( &msg );

07 }

131

Page 146: Ackerman Geometrisi Diplomarbeit

Das Nachrichtenkonzept unter Windows 132

Innerhalb der Schleife werden die Anweisungen TranslateMessage und DispatchMes-sage ausgeführt. Den beiden Prozeduren haben folgende Verwendung:

• TranslateMessage sendet die Nachricht an Windows zurück. Dort wird sie übersetzt1

und erneut an die Nachrichten-Queue des Fensters übergeben.

• DispatchMessage sendet die Nachricht abermals an das Betriebssystem. Von dortwird sie an die passende Windows-Prozedur für Nachrichtenverarbeitung weitergelei-tet. Diese Prozedur muß beim Registrieren der Fensterklasse angegeben werden undträgt üblicherweise den Namen WndProc (siehe Abschnitt C.1.2). Der Methodenaurufvon WndProc wird innerhalb von DispatchMessage durchgeführt.

C.1.2 Nachrichtenverarbeitung des Hauptfensters

Innerhalb des Hauptfensters kann über eine Windows-Prozedur auf bestimmte Ereig-nisse reagiert werden. Die Ereignisse werden vom System in Form von Nachrichten indie Message-Queue des betroffenen Fensters gestellt und beim Aufruf von DispatchMes-sage an die Prozedur weitergeleitet, die beim Registrieren der Fensterklasse angegebenwurde. Der folgende Codeausschnitt zeigt eine auf das Wesentlichste beschränkte Win-dows-Prozedur (normalerweise werden hier mehrere Ereignisse abgefangen).

01 LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)

02 {

03 switch( msg )

04 {

05 case WM_DESTROY:

06 PostQuitMessage(0);

07 return 0L;

08 default:

09 return DefWindowProc( hWnd, msg, wParam, lParam );

10 }

11 return 0;

12 }

• PostQuitMessage in Zeile 06 signalisiert dem System, daß der Thread zu terminierenbeabsichtigt. Dazu sendet sie eine WM_QUIT Nachricht an die Message-Queue desThreads. PostQuitMessage wird typischerweise als Antwort auf eineWM_DESTROY Nachricht eingesetzt.

• DefWindowProc in Zeile 09 ruft die Standard Windows-Prozedur eines Fensters auf.Sie bearbeitet alle Nachrichten, die von Applikation nicht behandelt wurden. Sie wirdmit der selben Parameterliste wie die Windows-Prozedur aufgerufen.

1. Hierbei handelt es sich im wesentlichen um die Übersetzung von virtuellen Tastencodes in länderspezifische Zeichen. Näheres dazu kann [Petz 98] entnommen werden.

Page 147: Ackerman Geometrisi Diplomarbeit

133 DirectX Render-Framework

C.2 Einbindung der Graphikausgabe

Auf Basis der vorliegenden Implementierung kann im Hauptprogramm mit nur wenigenBefehlen ein Fenster für die Direct3D Ausgabe bereitgestellt werden (siehe nachfolgen-der Quellcode). Die Aufgaben der Hauptnachrichtenschleife werden in Zeile 04 durchden Befehl readInput übernommen. Das Programm bricht beim Drücken der Escape-Taste ab.

01 gfx_engine.init( hInstance, "Fenstertitel", 1024,768, false );02 // weitere Einstellungen für das Ausgabefenster (optional)03

04 while( gfx_engine.readInput() && !gfx_engine.keyPressed( VK_ESCAPE ))05 {06 gfx_engine.beginRendering();

07 // Graphikausgabe über D3D-Device08 gfx_engine.swapBuffers( true );

09 }

C.2.1 Nachrichten

Die Methode readInput übernimmt die Funktionalität der Hauptnachrichtenschleife. Siefragt anliegende Nachrichten ab und übernimmt deren Abarbeitung:

01 bool GFX_Engine::readInput()

02 { 03 MSG msg;04 if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )

05 {06 if ( msg.message == WM_QUIT )

07 return false;08 else09 {

10 TranslateMessage( &msg );11 DispatchMessage( &msg );12 }

13 }14 return true;

15 }

C.2.2 Graphikausgabe

Die Graphikausgabe wird durch den Befehl beginRendering eingeleitet und durch denBefehl swapBuffers abgeschlossen. swapBuffers präsentiert gerenderte Graphik im Aus-gabebereich des Applikationsfensters.

beginRendering

In beginRendering wird zuerst der Status des Fensters geprüft: Die Graphikausgabebraucht nur erfolgen, soferne das Fenster nicht

Page 148: Ackerman Geometrisi Diplomarbeit

Einbindung der Graphikausgabe 134

• minimiert

• durch ein maximiertes Fenster verdeckt

• inaktiv (ohne Fokus)

ist. Andernfalls wird die Methode verlassen.Falls keine der obigen Bedingungen zutrifft, wird Position und Orientierung der referen-zierten Kamera in die View-Matrix übertragen. Die Welt-Matrix wird zurückgesetzt.Und das Direct3D Ausgabefenster wird vorbereitet:

01 void GFX_Engine::beginRendering()02 {03 if( !s.bActive ) return;04 if( camera ) camera->update();05 D3DXMatrixIdentity( &matWorld );06 g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,07 cSky, 1.0f, 0 );08 g_pd3dDevice->BeginScene();09 }

swapBuffers

Im Anschluß befindet Sie der Code der Methode swapBuffers (in gekürzter Fassung).Die Methodenaufrufe in Zeile 06 ud 08 werden zwingend durch DirectX vorgegeben.

01 void GFX_Engine::swapBuffers( bool printFPS )02 {03 /* Ausgabe der Frames per Second (fps)04 ...05 */06 g_pd3dDevice->EndScene();07 if( s.bActive ) 08 g_pd3dDevice->Present( NULL, NULL, NULL, NULL );09 }

Page 149: Ackerman Geometrisi Diplomarbeit

Anhang D

Blit Funktion

Unter Blitting versteht man das Kopieren von Bilddaten aus einem Speicherbereich ineinen anderen (bit block transfer). Üblicherweise werden damit zweidimensionale Bild-daten direkt in den Framebuffer geschrieben. Dabei müssen Pixelformate, Clipping undScanline-Stufen berücksichtigt werden. Das Win32 GDI (Graphics Device Interface)stellt einen Befehl zur Verfügung, der dies über den Treiber der Graphikkarte als direktenZugriff auf den Bildschirmspeicher realisiert. Der Befehl heißt BitBlt. In Kombinationmit der Verwendung eines Direct3D-Devices ist die Verwendung dieses Befehles aller-dings nicht zu empfehlen. Den gleichen Effekt erzielt man unter DirectX durch die Aus-gabe von zwei vortransformierten Polygonen innerhalb der Bildebene. Ein großer Vorteildieser Methode liegt darin, daß die Bilddaten nicht nur in rechteckige Bereiche des Bild-schrimes eingebelendet werden können, deren Kanten parallel zum Rand des Monitorsverlaufen. Als Zielregion können Polygone in allgemeiner Lage verwendet werden.

Mit Hilfe dieser Technik sollen die Instrumente (Speedometer, Tachometer, Gangan-zeige) in den Bildschirm eingeblendet werden. Um die Angabe der Eckpunkte in Bild-schirmkoordinaten durchführen zu können, muß DirectX mitgeteilt werden, daß die Ver-tices bereits vortransformiert sind. (Sie brauchen die Transformationspipeline nicht mehrzu durchlaufen.) Dies erreicht man mit Hilfe des flexiblen Vertexformates. Durch Setzendes D3DFVF_XYZRHW-Flags in der Strukturdefinition der Daten wird die Anwendungder Vertextransformation (und die Belechuchtungsberechnung) außer Kraft gesetzt.

Die folgenden Code-Segmente sind aus [Dunl 01] entnommen. Für die Verwendung inder Graphik Engine wurden ein paar minimale Veränderungen durchgeführt.

01 #define D3DFVF_TLVERTEX D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX10203 typedef struct _D3DTLVERTEX 04 {05 float sx;

135

Page 150: Ackerman Geometrisi Diplomarbeit

136

06 float sy;

07 float sz;

08 float rhw;

09 D3DCOLOR color;

10 float tu;

11 float tv;

12 _D3DTLVERTEX() { }

13 _D3DTLVERTEX( const D3DVECTOR &v, float _rhw,

14 D3DCOLOR _color,

15 float _tu, float _tv )

16 { sx = v.x; sy = v.y; sz = v.z; rhw = _rhw;

17 color = _color;

18 tu = _tu; tv = _tv;

19 }

20 } D3DTLVERTEX;

sx und sy sind die Bildschirmkoordinaten der Eck-Vertices. sz wird in einem Bereich von0,0 (nahe) bis 1,0 (ferne) übergeben. Der Wert gibt die Tiefe des Rechtecks an und kannverwendet werden, um mehrere Darstellungsebenen zu realisieren.

Die folgende Funktion wird zum Einblenden eines rechteckigen Bildes in Normallageverwendet. g_pd3dDevice ist ein Pointer auf das Direct3D Device. lpScr zeigt auf einezuvor geladene Textur. Der Wert rhw ermittelt sich aus der Distanz der Near-Clipping-Plane und der Far-Clipping-Plane des Viewing Frustums.

01 void GFX_Engine::blitRect( LPDIRECT3DTEXTURE8 lpSrc,

02 float left, float top,

03 float right, float bottom,

04 D3DCOLOR col, float z )

05 {

06 // reciprocal of homogeneous w

07 float rhw = 1.0f / ( z * frust.zFar + frust.zNear );

08

09 D3DTLVERTEX verts[4];

10 verts[0] = D3DTLVERTEX( vec3( left, top, z ), rhw, col, 0.0f,0.0f );

11 verts[1] = D3DTLVERTEX( vec3( right, top, z ), rhw, col, 1.0f,0.0f );

12 verts[2] = D3DTLVERTEX( vec3( right, bottom, z ), rhw, col, 1.0f,1.0f );

13 verts[3] = D3DTLVERTEX( vec3( left, bottom, z ), rhw, col, 0.0f,1.0f );

14

15 g_pd3dDevice->SetTexture( 0, lpSrc );

16

17 g_pd3dDevice->SetVertexShader( D3DFVF_TLVERTEX );

18

19 g_pd3dDevice->DrawPrimitiveUP(

20 D3DPT_TRIANGLEFAN, 2, verts, sizeof( D3DTLVERTEX ) );

21 }

Für die Anwendung der Funktion muß die Beleuchtung ausgeschaltet sein (RenderstateD3DRS_LIGHTING auf FALSE setzen). Transparente Stellen in der Ausgabe erzielt mandurch die Verwendung einer Alphamap.

Page 151: Ackerman Geometrisi Diplomarbeit

137 Blit Funktion

Abbildung D.1: Darstellung eines rechteckigen Bildes mit Hilfe der Blit-Funktion

Page 152: Ackerman Geometrisi Diplomarbeit

138

Page 153: Ackerman Geometrisi Diplomarbeit

Anhang E

Das Terrain Dateiformat

Der Header des Terrain Dateiformates ist die folgt spezifiziert:

Datei:terrain/header.h

01 #ifndef __TER_HEADER02 #define __TER_HEADER0405 #define NTEX 15 // maximale Anzahl an Texturen06 // (bzw. Geotypen)0708 typedef struct09 {10 WORD size; // Breite der Map (2^n+1)11 float rasterScale; // Rasterbreite (in m)12 float heightScale; // Höhenraster (in m)1314 BYTE texUsed; // Anzahl verwendete Texturen15 CHAR texFile[32][NTEX]; // Textur-Referenzen16 float texScale[NTEX]; // Textur-Skalierung (1 Kachel auf17 // wieviele Meter Seitenlänge?)18 float Yofset[NTEX]; // relative 0-Höhe1920 float friction[NTEX]; // Reibwert21 float rollResist[NTEX]; // Rollwiderstandswert2324 } TER_Header;2526 #endif

Im Anschluß an den Header folgen die Höhendaten und die Geotyp-Daten in einemjeweils size*size großem Feld. Die Messpunkte liegen im BYTE-Format vor.

139

Page 154: Ackerman Geometrisi Diplomarbeit

140

Page 155: Ackerman Geometrisi Diplomarbeit

Anhang F

Tastaturbelegung

Steuerung des Fahrzeuges:

OBEN ........... Gas gebenUNTEN......... bremsenLINKS .......... links lenkenRECHTS....... rechts lenkenA ................... Gang hochschaltenY ................... Gang herunterschaltenSPACE .......... Fahrzeug an Startposition zurücksetzen

Wahl der Kamera-Ansicht:

1 .................... fixe Position, fixe Orientierung2 .................... fixe Position, Sicht auf das Fahrzeug3 .................... Kameraverfolgung (nahe)4 .................... Kameraverfolgung (weit)5 .................... Cockpitansicht6 .................... Motorhaube7 .................... Stoßstange8 .................... Reifen-Kamera9 .................... Draufsicht (starr)0 .................... Draufsicht (rotierend)

Darstellung der Gelände-Triangulierung

T.................... Umschalten zwischen gefüllter Darstellung, Drahtgitterdarstellung und Überblendung der beiden Darstellungsformen.

141

Page 156: Ackerman Geometrisi Diplomarbeit

142

Sonstige

F1.................. Inhalt des Bildschirmes in eine Datei schreiben(die Dateien werden in dem Verzeichnis capture\screenshots\ abgelegt)

Page 157: Ackerman Geometrisi Diplomarbeit

143

Literaturverzeichnis

[Arce 02] Tomas Arce: Zen-X engine. Internet, http://www.zen-x.net, 2002.

[BWAK 99] David Baraff, Witkin, Andrew and Kass: Physically Based Modelling.SIGGRAPH Course Notes, 1999.

[Beck 01] Brian Beckman: The Physics of Racing Series. Internet, http://www.esbconsult.com.au/ogden/locost/phors/phors.html, 2001.

[BeHa 78] Norman H. Beachley, Howard L. Harrison: Introduction to DynamicSystem Analysis. Addison Wesley Longman, Inc. 01/1978.

[Bloo 00] Charles Bloom: Terrain Texture Compositing by Blending in theFramebuffer. Internet, http://cbloom.com/3d/techdocs/splatting.txt, 2000.

[Boer 00] William H. de Boer: Fast Terrain Rendering Using GeometricalMipMapping.Internet, http://www.flipcode.com/tutorials/tut_geomipmaps.shtml, 2000.

[Bosc 97] Robert Bosch: Automotive Handbook. Robert Bosch GmbH, 4th ed.,1997.

[Bour 99] Paul Bourke: Direct-X File Format. Internet, http://astronomy.swin.edu.au/~pbourke/geomformats/directx/, 1999

[Clar 76] J. H. Clark: Hierarchical Geometric Models for Visible SurfaceAlgorithms. J. H. Clark – Communications of the ACM (19), pp. 547-554,1976.

[D3DP 98] Microsoft Corporation: The Direct3D Transformation Pipeline.White Paper, MSDN Library/Graphics and Multimedia/Directx/TechnicalArticles, April 1998.

[D3DX 02] Philip Taylor: Exploring D3DX. MSDN Library/Graphics and Multi-media/DirectX/Columns/Driving DirectX, 2002.

[DIN50323] DIN 50323: Teil 3: Tribologie, Reibung. Beuth Verlag GmbH, Berlin1998.

[Dubb 90] W. Beitz, K.-H. Küttner: Dubbel – Taschenbuch für den Maschinenbau.17., neubearbeitete Auflage. Springer Verlag, Berlin, 1990.

[Dunl 01] Robert Dunlop: A Simple Blit Function for Direct3D. Internet, http://www.mvps.org/directx/articles/blit3d.htm, 2001.

Page 158: Ackerman Geometrisi Diplomarbeit

144

[DWSM 97] Mark Duchaineau, Murray Wolinsky, David E. Sigeti, Mark C. Miller,Charles Aldrich, Mark B. Mineev-Weinstein: ROAMing Terrain: Real-time Optimally Adapting Meshes. Los Alamos National Laboratory,Lawrence Livermore National Laboratory, 1997.

[DX8 00] Philip Taylor: Introduction to DirectX 8.0. MSDN Library/Graphics andMultimedia/DirectX/Columns/Driving DirectX, 2000.

[Efun 02] Engineering Fundamentals: Damped Vibration of Free SDOF Systems.Internet,http://www.efunda.com/formulae/vibrations/sdof_free_damped.cfm,2002

[Gent 97] Giancarlo Genta: Motor Vehicle Dynamics. World Scientific, Singapore,1997.

[Gnup 99] Gnuplot Central. Internet, http://www.gnuplot.info/, 1999.

[Gold 99] Peter Goldkuhle: Einsatz des Rechners im Physikunterricht zurModellbildung und Simulation. Unterlagen zur Vorlesung Modellbildungund Simulation, Universität Paderborn, 1999.

[LCRH 96] Peter Lindstrom, David Coller, William Ribarsky, Larry F. Hodges, NickFaust, Gregory A. Thurner: Real-Time, Continous Level of DetailRendering of Height Fields. In Proceedings of ACM SIGGRAPH 96,August 1996, pp. 109-118.

[Low 00] Colin Low, Games and Physics: Design Issues. Hewlett PackardLaboratories, Technical Report, 2000.

[Mits 02] Mitsubishi Motors: Lancer Evolution VII GT-A. Press Information,January 2002.

[Mons 01] Marco Monster: Car Physics for Games. Internet, http://home.planet.nl/~monstrous/tutcar.html, 2001.

[Morl 00] Mark Morley: Frustum Culling in OpenGL. Internet,http://www.markmorley.com/opengl/frustumculling.html, 2000.

[OpGL 98] Silicon Graphics: OpenGL - The Industry's Foundation for HighPerformance Graphics. Internet, www.opengl.org, 1998.

[Petz 98] Charles Petzold: Programming Windows. Microsoft Press, 1998.

[PeWe 82] Edward Pervin, Jon A. Webb: Quaternions in Computer Vision andRobotics. Technical Report, Carnegie Mellon University, School ofComputer Science, cmu-cs-82-150, 1982.

Page 159: Ackerman Geometrisi Diplomarbeit

145

[RHSS 97] Stefan Röttger, Wolfgang Heidrich, Philipp Slusallek, Hans-Peter Seidel:Real-Time Generation of Continuous Levels of Detail Height Fields.Technical Report, Universität Erlangen-Nürnberg, 13/1997.

[Rill 01] Prof. Dr.-Ing. G. Rill: Fahrzeugdynamik. Skriptum, FachhochschuleRegensburg, 2001.

[SaHa 95] Michael W. Sayers and Dongsuk Han: A Generic Multibody VehicleModel for Simulating Handling and Braking. Presented at the 1995Symposium of the International Association of Vehicle SystemDynamics, Ann Arbor, USA. To appear in a special edition of the JournalVehicle System Dynamics, 1996.

[Sobe 00] Sobeit Void: Quaternion Powers. Internet, http://www.gamedev.net/reference/articles/article1095.asp, 2000.

[StSG 88] Steger, Sieghart, Glauninger: Technische Mechanik 2: Festigkeitslehre,Kinematik, Kinetik, Hydromechanik. B. G. Teubner Stuttgart, 1988.

[TMQF 97] The Matrix and Quaternions FAQ. Internet, http://skal.planet-d.net/demo/matrixfaq.htm, 1997.

[UML 99] Cris Cobryn: UML 2001 - A Standardization Odyssey. Communicationsof the ACM, vol. 42, no. 10, October, 1999.

[VTP 01] Virtual Terrain Project: Detail Textures. Internet, http://www.vterrain.org/Textures/detail.html, 2001.

[Witk 99] Andrew Witkin: Constrained Dynamics. SIGGRAPH Course Notes,1999.

[Zuvi 00] Ted Zuvich: Vehicle Dynamics for Racing Games. Game DevelopersConference Proceedings, 2000.