Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.06.2009, 14:18

Zugsimulator - Strecke vorgeben

Hallo,

ich bin gerade dabei einen einfachen Zugsimulator in 3D zu programmieren. Ich bin schon soweit, dass ich den Zug habe und einen kleinen Teil der Strecke worauf man den Zug bewegen kann.
Jetzt will ich natürlich eine Gleisstrecke anlegen die der Zug entlang fährt wenn man Gas gibt.
Wie schaffe ich es nun, dass der Zug eine bestimmte Strecke entlang fährt? Muss ich das mit If-Abfragen machen, d.h. wenn der Zug an eine Kurve kommt, muss ich ihn an der Stelle P(0|1) um 1° nach links drehen, an der Stelle P(1|2) dann wieder um 1° und immer so weiter? Dass wär ja dann aber schon ziemlich aufwendig für jede Kurve die Koordinaten prüfen...

Was wäre euer Vorschlag?

Danke schonmal!

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

2

12.06.2009, 14:20

Ich würde eine Liste mit Wegpunktewn anlegen, die die Strecke des Zugs bestimmen. Dann bestimmst du die Richtung deiner aktuellen Position zur Position des Wegpunkts und bewegst den Zug in diese Richtung.

3

12.06.2009, 14:28

Also so ungefär:


(Link)



Dann von P1 nach P2 berechnen, dann P2 nach P3, P3 und P4?

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

4

12.06.2009, 14:39

Definier die Strecke einfach über B-Splines -->Die Richtungsänderung dann einfach über die Tangente ablesen

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

12.06.2009, 14:49

Ich würde die Strecke aus Kreisbögen und Geraden zusammensetzen. Erstens is das wohl realistischer und zweitens hast du bei Splines das Problem dass du einen Spline nicht so einfach mit konstanter Geschwindigkeit durchfahren kannst...

6

12.06.2009, 14:55

Zitat von »"dot"«

Ich würde die Strecke aus Kreisbögen und Geraden zusammensetzen. Erstens is das wohl realistischer und zweitens hast du bei Splines das Problem dass du einen Spline nicht so einfach mit konstanter Geschwindigkeit durchfahren kannst...


Hm..die Idee mit den Splines find ich eigentlich ganz gut, wieso kann ich nicht mit konstanter Geschwindigkeit fahren?

Wenn ich jetzt auch noch Steigungen einbauen will, dann müsst ich ja einfach nur eine zweites Spline parallel dazu laufen lassen und den Y-Wert als Höhe benutzen, oder?

SilentWriter

Frischling

Beiträge: 13

Wohnort: Berlin

  • Private Nachricht senden

7

30.08.2010, 19:33

Hallo,

ich weiß zwar nicht ob du das noch brauchst:

Beim Zugsimulator benötigst du für deine Strecke eine Gleisdatenbank (Gdb). In dieser Gdb stehen dann alle benötigten Informationen bezüglich der Gleise: Position, Ausrichtung, Radius, Länge, ... . Tipp: Erzeuge bestimmte Datenstrukturen und packe die Gdb mit ZLIB. Gdb-Dateien der Strecke werden sonst ziemlich groß. Auch sollten Informationen auf dem Gleis gespeichert werden (Bahnsteigbeginn, Länge, Signalindex, Wo, . . .)

Bei der großen Bahn gibt es:
  • Geraden
  • Kurven mit konstanten Radius
  • Klotoidenkurven (Parabeln) [Verwendung: Einfädelung in die Kurve]
  • Einfache Weichen
  • Bogenweiche
  • Mehrwegweichen (eine Gerade, zwei Abzweige)
  • Kreuzung
  • Kreuzungsweiche
  • Doppelte Kreuzungsweiche
Also ziemlich viel ;). Und Splines an sich brauchst du relativ selten (z.B. um Verbindungsgleise zu erstellen, um Lücken zwischen zwei Enden zu schließen).

Weichenabzweige haben einen konstanten Radius (abgesehen von einigen Ausnahmefällen). Von daher lohnt es sich, die Schienen als 3D-Modell nachzubauen und das Gleisbett nachzuberechnen (aus Mesh-Templates).

Ansonsten musst du noch beachten, dass Steigungen am Anfang auch eine Kurve sind (eben auf der y-Achse). Je nach dem musst du dann die Gleisdaten als Objekt in verschiedene Gleisobjekte bzw. Gleissegmente unterteilen. Beachte auch, dass jede Kurve eine Neigung hat. Daraus resultiert eine Überhöhung - diese ist dann maßgebend für die maximal befahrbare Geschwindigkeit des Zuges.

Ich hoffe, du weißt was du dir damit antust? ;) Viel Spaß!...
Arbeitest du eigentlich noch am Zugsimulator? Wenn ja, können wir uns ja per Mail austauschen bzgl. weiter Informationen.

Werbeanzeige