Ampel,Animation,Leveldesign
Transcrição
Ampel,Animation,Leveldesign
C.I.T.Y. - Das Leben in der Stadt WS 2009/2010 Projektarbeit von Marko Flod – 110511 76 Mentor Prof. Dr.-Ing. Friedbert Jochum Inhaltsverzeichnis Realisierung eines Ampelsystems........................................................................................................3 Einleitung ........................................................................................................................................3 Prototypischer Editor zur Regelung einer Ampelschaltung.............................................................3 Modellierung der Fußgänger- und Autoampel.................................................................................4 Realisierung in Unity3D..................................................................................................................4 Modellierung und Animation...............................................................................................................6 Modellierungsrichtlinien..................................................................................................................6 Beispiel Modellierung einer Taube mit Animation..........................................................................6 Stadtgeneriung und Leveldesign........................................................................................................10 Eine Stadt wird gebaut...................................................................................................................10 Anforderungen an die Stadt...........................................................................................................10 Stadtgenerierung mit blended cities...............................................................................................11 Fazit...............................................................................................................................................14 Realisierung eines Ampelsystems Einleitung Reale Verkehrssituationen zu simulieren und nachzubauen ist eine der zentralen Themen in C.I.T.Y. Dementsprechend ist es erforderlich, ein Ampelsystem zu realisieren. In unserem Fall kann ein Ampelsystem aktiv oder passiv sein. In einem passiven Ampelsystem schalten die Ampeln ohne die Beeinflussung des Spielers. In einem aktiven System ist der Spieler gezwungen, den Knopf an der Fußgängerampel zu betätigen, damit die Ampel grün wird. In der realen Welt können beide Formen zwar gemischt in einem Ampelsystem existieren, doch um die Komplexität erst einmal gering zu halten, werden beide Formen getrennt eingesetzt. Prototypischer Editor zur Regelung einer Ampelschaltung Zuerst wurde über die Erstellung eines Editor überlegt, der die Schaltung der Ampeln regeln könnte. Dadurch sollten komplexere sowie einfachere Verkehrskreuzungen realisiert werden können. Da aber der Aufwand zu hoch wäre, jede Kreuzung in der Stadt Individuell zu erstellen, ist der Editor vorerst prototypisch verblieben. Aufbau des Prototyps: Für jedes Ampelsystem müssen alle Ampeln in der Liste eingetragen werden. Jede Ampel kann zwei verschiedene Zustände einnehmen: grün oder rot. Dann ist es möglich, eine Schaltgruppe hinzuzufügen. Sie bestimmt den Zustand der einzelnen Ampeln. Eine einzige Schaltgruppe in der Tabelle wäre zwecklos, es sind mindestens zwei erforderlich. Zu jeder kann angeben werden, wie lange sie automatisch angeschaltet bleiben soll oder ob sie nur angeschaltet werden soll, wenn eine Ampel vom Fußgänger gedrückt wurde. Durch einen solchen Editor wird es möglich, komplexere Straßenkreuzungen zu realisieren, wie z.B. die Realisierung einer geschalteten Abbiegespur. Diese Komplexität würde aber erfordern, dass mehr Aufwand betrieben wird, um aktive und passive Ampelsysteme zu kombinieren. Modellierung der Fußgänger- und Autoampel Um ein Ampelssystem zu realisieren sind zwei verschiedene 3D-Modelle nötig: die Fußgänger- und die Autoampel. Beide ähneln einander sehr, daher kann man aus der Autoampel sehr leicht die Fußgängerampel ableiten. Beim Modellieren ist es wichtig, die Lichter als einzelne Objekte zu erstellen. Dadurch ist es möglich die Textur für die Lichter später anzusprechen und zu wechseln. Durch den Texturwechsel kann man zwischen den verschiedenen Zuständen der Ampel wechseln – Bei einer Autoampel: rot, rot-gelb, grün, gelb. Lichter der Ampel Fußgängerampel in Blender Realisierung in Unity3D Das Schalten der Ampel wurde in Unity3D realisiert. Ampelüberquerung in Unity3D Wenn der Spieler nah genug an der Ampel ist, wird ein Trigger ausgelöst, der einen Zeitstempel für die jeweiligen Zustände setzt. Die grüne Box ist der Trigger Durch mehrere Zeitstempel wird reguliert, wann welche Ampel welchen Zustand hat. startGreenPed = Time.time + waitTime; endGreenPed = startGreenPed + waitTime; //trafficlight car values endGreenCar = startGreenPed - changeTime*2; endYellowCar = startGreenPed - changeTime; endRedCar = startGreenPed + waitTime + changeTime; endRedYellowCar = startGreenPed + waitTime+ changeTime*2; Bei der passiven Kreuzung besteht nicht die Notwendigkeit eines Triggers. Die Ampelschaltung befindet sich in einem Kreislauf, der nicht von außen beeinflusst wird. Modellierung und Animation Modellierungsrichtlinien Bevor wir beginnen zu modellieren, ist es wichtig, sich an bestimmten Richtlinien zu halten. Die Polygonanzahl bei den Modellen sollte zwischen 500-60001 liegen. Sonst erhält man nicht genügend FPS ( Frames per Second) und das Spiel fängt an zu ruckeln. Texturierung sollte über eine UVmap gemacht werden. Dadurch müssen weniger Texturen während des Spiel geladen werden. Beispiel Modellierung einer Taube mit Animation Tauben in einer Stadt sind keine Seltenheit und sie würden in der virtuelle Stadt eine Atmosphäre erschaffen. Es wäre jedoch zwingend notwendig, dass sie sich bewegen können, denn welche Taube bleibt starr auf der Straße stehen? Als Vorlage für die Modellierung habe ich ein Bild einer Taube gewählt. Ich kann es in Blender2 einfügen und es als Hintergrundbild verwenden. Die Verwendung eines Backgroundimages Somit kann man Objekte aus der Realität vereinfacht in ein 3D-Modell übertragen. Das Modell wurde in zwei verschiedene Teile getrennt: den Körper und die Füße. Somit wird nur ein Fuß modelliert, der dann dupliziert wird. 1 http://unity3d.com/support/documentation/Manual/Modeling%20Optimized%20Characters.html 2 http://www.blender.org/ - einem kostenlosen 3D-Modellierungsprogramm Damit die Modelle lebendiger und realer aussehen, werden sie texturiert. Eine Textur ist ein Bild, das auf das Modell gelegt wird. Um das Modell zu texturieren wird eine UVmap der Taube benötigt. Eine UVmap ist eine 2D-Abbildung des 3D-Modells. Das Modell hat Seiten, welche auf eine Textur gelegt werden können. Dies nennt sich UVmapping. Die Texturierung findet über eine UVmap statt: UVmap der Taube, die auf eine Textur gelegt wurde In Blender kann man Animationen erzeugen, die im Spiel abspielbar sind. Dafür ist es jedoch zwingend notwendig, die Animation mit Knochen zu realisieren, weil Unity3D nur solche Animationen unterstützt. Ein Kochen, der den Hals repräsentiert In dem Actioneditor verwaltet man die Animationen. Zuerst wähle ich einen Name für die Action aus, damit sie später ansprechbar ist. Für die Grundposition muss ich einen Keyframe einfügen. Der Keyframe speichert die Position, Rotation und die Skalierung des Knochens. Dann spult man ein paar Frames vor und bewegt die Knochen in die gewünschte Position. Dann wird nochmals ein Keyframe eingefügt. Zum Schluss dupliziere ich den ersten Keyframe (die Grundposition) und füge ihn am Ende hinzu. Somit hat die Animation einen fließenden Übergang. Ausschnitt aus dem Actioneditor mit Keyframes Die fertige Taube Nach einem ähnlichen Verfahren wurde die U-Bahn-Station realisiert. Bild gerendert in Blender U-Bahn-Station in Unity eingefügt Stadtgeneriung und Leveldesign Eine Stadt wird gebaut "Rom wurde auch nicht an einem Tag gebaut." (Deutsches Sprichwort) Aus der Realität ist es uns bereits bekannt, dass das Bauen z.B. von Häusern, Straßen und Parks ein sehr komplexes Unterfangen darstellt. Es gibt verschiedene Kriterien (Wasser und Heizung in der Wohnung, Breite der Straßenspuren, DIN-Normen usw.), die eingehalten werden müssen. Um diese jedoch alle gemeinsam einzuhalten, ohne dass sie ineinander überfließen, benötigt es Planung. Dies trifft in unserem Projekt C.I.T.Y. ebenfalls zu. Wenn man den Projektaufbau anderer weltweit bekannten Spiele3 richten, ist es anhand der Anzahl der Mitarbeiter fürs Level Design erkennbar, dass dieses von zentraler Bedeutung für die Spielentwicklung ist. Level Design beschäftigt sich viel mehr mit dem Aufbau des Levels, als mit den dort stattfindenden Interaktionen. Die Aufgabe besteht viel mehr darin, eine Realisierung der ausgearbeiteten Nutzeraufgaben und Interaktionen im Level zu ermöglichen. Anforderungen an die Stadt Im Projekt C.I.T.Y. wird ein 3D-Lernspiel entwickelt, dass sich zu dem Genre Serious Games bekennt. Die Anforderungen beinhalten neben der Vermittlung von Lerninhalten, drücken des Knopfes führt zu grünen Ampel , oder Verhaltensregeln, nicht über eine Rote Ampel gehen, die Erschaffung einer virtuellen 3D-Stadt, mit welcher der Spieler auf folgende Arten interagieren kann: • U-Bahn fahren • Bus fahren • Taxi fahren • Straßen verkehrsgerecht überqueren Die genannten Interaktionsarten lassen erahnen, dass lange Fahrtstrecken umgesetzt werden müssen. Schon während einer Bahnfahrtzeit von 10 Minuten wird eine weite Strecke zurück gelegt. Dies ist teils mit einem Rennspiel zu vergleichen, wo der Spieler eine längere Strecke zurück zu legen hat. Dies lässt die Gefahr aufkommen, dass das Level Design derart komplex wird, dass es ein zu hoher Zeitaufwand nötig wird. Aber hierfür gibt es Lösungen, die wir später kennen lernen werden. Da der Spieler mit der U-Bahn fahren soll, ist es erforderlich, dass die Stadt noch folgende Objekte 3 Siehe Credits von GTA 4, Super Mario Galaxy, Zelda – Twilightprincess, Metal gear solid enthält: • U-Bahn-Station • U-Bahn-Netz • U-Bahn Um das Bauen der Stadt zu vereinfachen, wird die U-Bahn unterirdisch angelet. In manchen Städten verläuft die U-Bahn zwar sowohl unter- als auch oberirdisch. Jedoch ist es durch die notwendige Komplexität bei der Simulation des Autoverkehrs und der Einbindung von Modellen wie Gleisen oder Absperrungen übersichtlicher, die U-Bahn nur unterirdisch fahren zu lassen. Für den Fußgängern ergeben sich folgende wichtige Objekte in der virtuellen Stadt: • • • Fußgängerüberweg Fußgängerampel Bürgersteig In der Realität existieren des Öfteren zwei Fahrstreifen pro Fahrbahn für Autos. Ein hohes Verkehrsaufkommen erschwert die Übersicht der Verkehrssituation, wodurch es ein wichtiges Lernziel ist, in solchen Situationen die Übersicht zu bewahren. Daraus ergeben sich für das Verkehrsnetz der KFZs und LKWs folgende Eigenschaften: • • • Fahrbahnen können auch zweispurig sein Kreuzungen Autoampeln Weitere Verkehrsobjekte, die in der Verkehr betreffen in der Stadt gebraucht werden: • • Verkehrszeichen Verkehrsschilder Da es unser Ziel ist, eine Stadt zu bauen, die die Realität möglichst widerspiegelt, haben wir uns entschieden, haben wir uns am Kölner Straßennetz orientiert. Auch der Städtischen Stil von Köln sollte berücksichtigt werden. Stadtgenerierung mit blended cities Die Stadt per Hand zu realisieren, wäre ein zu hoher zeitlicher Aufwand. Dies hat sich schon gezeigt beim Nachbauen des Kölner Straßennetzes in Blender. Straßenbau in Blender Viele Fragen sind offen geblieben. Die Realisierung von Bürgersteigen zeigt sich als sehr problematisch. Und die Dauer der Umsetzung ist viel zu hoch. Eine andere Alternative muss her. Das Straßennetz rechteckig zu realisieren, wäre eine andere Möglichkeit, wie im folgendem Beispiel: Straßenbau in Blender Eine solche Umsetzung würde dem Straßennetz von Köln dann allerdings nicht ähneln. Auch in diesem Falle würde die Zeit zu lange dauern um dies für eine größere Stadt zu realisieren. Diese Lösung stellt ebenfalls keine zufriedene Lösung dar. Leider gibt es fast nur kostenpflichtige Stadtgeneriungstools4, bis auf eines: Blended Cities (http://jerome.le.chat.free.fr/index.php/en/blender/scripts/city-engine.html) Blended Cities ist ein Skript, das in Blender ausgeführt wird. Wenn das Skript geladen ist, kann man an Hand vieler Einstellenungsmöglichkeiten eine Stadt generieren lassen. Das Straßennetz wird An Hand eines Meshs generiert. Ein solches Mesh läßt sich sehr einfach erstellen: 4 Cityengine: http://www.procedural.com/ Anhand dieses Meshs werden die Straßen erstellt Wie man erkennen kann, müssen die Straßen nicht rechtwinklig zueinander stehen. Dies wäre zum Nachbauen des Kölner Straßenverkehrs sehr passend. Des Weiteren kann man für jede einzelne Straße bestimmen ob es eine Einbahn- oder mehrspurige Straße sein soll. Zu den jeweiligen Straßen werden dann Bürgersteige generiert. Aber nicht nur Straßen und Bürgersteige werden erstellt, sondern Häuser ebenfalls. Blended Cities bietet eine Vielzahl an Einstellungen. Man kann hier durch z.B. bestimmen, ob die Stadt viele oder wenige Hochhäuser haben soll. Nach der Generierung erhält man eine Stadt: Fertig generierte Stadt Fazit Blended Cities bietet eine sehr gute Grundlage, um eine Stadt zu generieren. Es gibt Plugins für das Tool, welche noch bessere Häuser generieren lassen. Es besteht zudem die Möglichkeit eigene Häuser ebenfalls mitgenerieren zu lasssen, was sich für unser Projekt als vorteilhaft erweist.