_________________________________________________________________________________________________________________________________
1. Grundlegendes zum Licht
Das Licht ist in Omsi ein sehr komplexes und aufwendiges Thema. Während in der Realität eine Lichtquelle (Lichtpunkt), einen Lichtschein verursacht und damit Objekte beleuchtet oder erhellt und die selben Objekte auch Schatten werfen, müssen in Omsi diese Zusammenhänge jeweils einzeln erstellt und genau angepasst werden. Das wiederrum bedeutet, dass man nicht einfach eine Lichtquelle setzen kann, sondern dazu und separat, auch noch den Lichtschein, Schatten und die zum Objekt zugehörigen Lichtquellen und Schattierungen setzen muß. Außerdem gibt es auch die Möglichkeit, Lichttexturen zu erstellen. Jede einzelne Variante hat ihre Vor- aber auch Nachteile.
Der große Vorteil, beim Licht in Omsi, ist die hohe Qualität der Beleuchtung, die man in Omsi erreichen kann. Der Nachteil dazu, ist allerdings der erhebliche Aufwand. Je höher die Qualität werden soll, die man erzielen möchte, desdo höher ist der Aufwand, den man dafür betreiben muß. Nur das richtige Zusammenspiel der einzelnen Möglichkeiten ergibt im und am Fahrzeuge die richtige und fast reale Lichtatmophäre. Eine 100%-ige Umsetzung ist dennoch nicht möglich. Man kann lediglich versuchen das Licht so real wie möglich anzupassen.
In diesem Tutorial, soll es in erster Linie um die Beleuchtungsmöglichkeiten in Fahrzeugen gehen. Für die Objektbeleuchtung, gibt es wiederrum abweichende Formen. Lediglich die Grundlagen sind dabei gleich. Eine gewisse Grundlage, für die Scripte, sind für dieses Tutorial leider unerläßlich. Auch auf die Erstellung von 3D-Objekten kann hier nicht eingegangen werden. Daher wird auch der Umgang mit einem 3D-Programm, als gegeben vorausgesetzt. Deshalb beschränkt sich dieser Beitrag auf die Lichtarten und die Einstellungen, sowie die Umsetzung des Lichtes.
Um Licht in oder an einem Fahrzeug zu bringen, gibt es mehrere Möglichkeiten. Alle zusammen ergeben ein relativ originales Lichtverhalten. Die Eintragungen zum Licht finden sich in der jeweiligen model.cfg eines Fahrzeuges. Die Lichtsteuerung, also wann ein Licht an oder ausgehen soll, finden sich in den Scripten. Dort wird festgelegt, wann eine Lichtvariable den Zustand Null (Licht aus) oder den Zustand Eins (Licht an) hat. Desweiteren kann man auch eine Lichtart mit einem Dimmer ausstatten. Für eine Anpassung des Lichtes, sind der Umgang mit einem 3D-Programm nicht zwingend erforderlich. Je nach Objektbau, kann aber eine Veränderung der 3D-Objekte erforderlich werden, wenn das Lichtverhalten angepasst oder verändert werden soll.
1.1. Die verschiedenen Lichtarten
Für die Fahrzeuge in Omsi gibt es 5 verschiedene Möglichkeiten Licht umzusetzen. Im einzelnen sind dies:
- Lichttexturen - diese werden aufgelegt oder gewechselt,
- Lichtpunkte - das sind die Lichtquellen, die keinen Schein erzeugen, aber sichtbar sind,
- Lichtschein - das unabhängig von Lichtpunkten erzeugte Licht und nur den Lichtschein bringt, also nur die Lichtwirkung,
- Spotlicht - Dieses Licht gehört zum Fahrzeug, erzeugt nur den Lichtschein, kann aber nur Fremdobjekte anleuchten, die nicht zum Fahrzeug gehören (Kartenobjekte, KI-Fahrzeuge, Passanten).
- Objekterhellung - Hiermit werden Objekte ohne Rücksicht auf die tatsächliche Helligkeit der Spielumgebung, mit ihren Tagestexturen umgesetzt und erzeugen dann den Anschein, angeleuchtet zu werden.
Jede einzelne Variante, wird einzeln und unabhängig von anderen umgesetzt. Zusammen ergeben diese die komplette Fahrzeugbeleuchtung. Der Aufwand für eine der Möglichkeiten ist noch überschaubar. Die Komplexität nimmt aber zu, wenn die einzelnen Lichtmöglichkeiten aufeinander angepasst werden sollen.
1.2. Grundlagen der einzelnen Lichtvarianten
Die einzelnen Lichtvarianten können recht einfach umgesetzt werden. Allerdings gibt es in Omsi Grenzen, die dazu führen, dass eine Lichtvariante allein, zwar genutzt werden kann, aber nur ein Zusammenspiel mehrerer Varianten, kann ein zufriedenstellendes Ergebnis bringen. Das leichte Umsetzen der einzelnen Varianten, macht aber die Zusammensetzung in einem Fahrzeug nicht einfach. In der Realität, gibt es eine Lichtquelle, die ein Lichtschein, direkt und gerade von der Lichtquelle aussendet. Dabei können diese Lichtstrahlen Objekte nicht durchdringen, wenn diese nicht transparent sind oder die Lichtstrahlen die Dichte der Objekte nicht richtig durchdringen kann. Somit erzeugen Objekte Schatten. Außerdem reflektieren Lichtstrahlen von Objekte. Je heller die Oberfläche eines Objektes, desdo mehr Lichtstrahlen reflektieren von den Objekten und beleuchten andere Objekte indirekt. In Omsi werden alle Objekte durchdrungen. Somit werden in Omsi keine realen Schatten erzeugt und keine Lichtstrahlen reflektieren. Diese Schatten und Lichtreflektionen, müßen also mittels Texturen umgesetzt werden. Daher ist ein Zusammenspiel aller Möglichkeiten für die Qualität unumgänglich, was leider auch den Aufwand erheblich macht. Da mehrere Lichtquellen aus unterschiedlichen Richtungen, auch die Schatten der Objekte beeinfussen, gibt es in Omsi Grenzen, die die Schattung beeinflusst. Weitere Nachteile sind die zulässige Anzahl an Zuweisungen von Lichtquellen auf ein Objekt oder das einmalige Spotlicht.
_________________________________________________________________________________________________________________________________
2. Lichttexturen
Lichttexturen finden sich im und am Bus an vielen Stellen. Im Bus dienen sie zum Beispiel als Kontrolleuchten, oder für Lichtquellen, wie Innenleuchten oder Leuchten am Bus, wie Scheinwerfer oder Rückleuchten. Lichttexturen finden sich meist an den Stellen, die ein oder eine kleine Gruppe von Lichtpunkten oder beleuchtete Objekte erhellen sollen.
Hierbei wird ein Objekt mit sogenannten Tagestexturen gemappt, die dias Objekt im ausgeschaltetem Zustand zeigt. Durch die Veränderung der zugehörigen Variable, wird eine Nachttextur entweder aufgelegt oder ausgewechselt. Die Umsetzung ist bei beiden gleich, wobei sich nur der zugehörige Befehl ändert. Die Änderung des Befehls bewirkt das ein Objekt sich so verhält als würde es direkt leuchten oder indirekt angestrahlt werden. Am Tage werden alle Objekte von der Omsi-Sonne beleuchtet. In der Nacht werden diese Objekte nichtmehr erhellt. Mit Hilfe des Texturwechsel, wird auf einem Objekt eine weitere Textur aufgelegt oder ausgewechselt. Diese Textur wird dabei so hell dargestellt, das diese Textur als leuchtend erscheint. Je heller die Nachttextur ist, umso heller leuchtet das Objekt. Eine dunkle Lichttextur vermitteln den Eindruck einer indirekten Beleuchtung.
2.1. Vor- und Nachteile der Lichttexturen
Lichttexturen sind am leichtesten von allen anderen Lichtvarianten umzusetzen. Durch die Helligkeit der Wechseltextur, kann die Helligkeit über die Textur sehr leicht geregelt werden. Außerdem kann die Helligkeit mittels Script auch dimmbar gestaltet werden. Diese Umsetzung ist etwas schwerer, aber immerhin machbar. Außerdem können Lichttexturen durch die Texturen farblich gesetzt werden. Und es können auch Texttexturen leuchtend dargestellt werden.
Die drei größten Nachteile der Lichttexturen sind zum einen, dass Lichttexturen nicht langsam an- und ausgeschaltet werden können (Nachleuchten der Leuchtkörper). Es gibt nur den Zustand Ein oder Aus. Außerdem haben Lichttexturen keinen Lichteffekt, können also andere Objekte im Bus nicht anstrahlen. Der letzte Nachteil ist der Punkt des Überleuchtens. Nicht immer sind die leuchtenden Felder so abgeschirmt, das das Licht darunter nicht auch benachbarte Lichtfelder etwas erhellt. Das geht mit Lichtttexturen nicht.
Auch das Umsetzen von Lichttexturen ist nicht ganz einfach, da hier teilweise Licht und Schattierungen zusammen auftreten können oder sollen. Hier ist das saubere Arbeiten mit einem entsprechendem Bildbearbeitungsprogramm wichtig. Man darf nicht vergessen, dass die meisten beleuchteten Objekte, wie Kontrolleuchten, mit einem Glühlämpchen oder einer Diode gesteuert werden. Es gibt also einen hellen Mittelpunkt, der nach außen etwas an Helligkeit verliert.
Vorteile | Nachteile |
---|---|
Leicht umsetzbar |
kein langsames Ein- oder Ausschalten möglich |
Qualität entscheidet über das Aussehen |
Lichttexturen erzeugen keinen Lichtschein |
Texturhelligkeit bestimmt die Leuchtkraft |
kein Übertrahlen auf benachbarte Objekte |
Nachttexturen werden unterschiedlich aufgelegt |
Batterieabhängige Helligkeit nur über Scripte steuerbar (wenige Stufen) |
Objekte können dimmbar gemacht werden |
kein Strahlen möglich |
Einige der Nachteile kann man, durch die Kombination der anderen Lichtarten, etwas reduzieren. Mit den Farben kann man beispielsweise auch den Unterschied zwischen einer Glühlampe oder einer LED simulieren. Die Gestaltung von Lichtkörpern läßt auch Unterschiede zwischen einfachen Glühlampen, Halogenlampen, LEDs oder Leuchtstoffröhren zu. Der größte Nachteil ist die Abstufung der Helligkeit. So kann man Lichttexturen nicht von der Kapazität der Batterie abhängig machen. Je weniger Batteriekapazität vorhanden ist, desdo dunkler wird ein Licht. Die maximale Helligkeit wird erst dann erreicht, wenn der Motor und damit auch die Lichtmaschine läuft und eine maximale Bordspannung von 26 Volt (Ladespannung) anliegt. Ohne laufendem Motor hat die Batterie nur einen theoretischen Wert von maximal 24 Volt. In realen Werten beträgt die Ladespannung 26,8 Volt und die maximale Batteriespannung liegt bei 21,6 Volt. Dieser Unterschied läßt sich allein mit Lichttexturen in Omsi nicht umsetzen. Den Unterschied zwischem laufendem und stehendem Motor kann man aber mit den Scripten regulieren. Auch hier entscheidet der Arbeitsaufwand, über das endgültige Ergebnis. Theoretisch kann man viele Abstufungen einsetzen, aber kein langsames Erlischen der Lichttexturen bei abnehmender Batteriekapazität.
2.2. Anwendungen in Fahrzeugen
Lichttexturen findet man in Fahrzeugen an sehr vielen Stellen. Unter anderem werden damit Kontrollleuchten im Amaturenbrett umgesetzt, äußere Lichtkappen und Scheinwerfer, Innenlichtlampen, Display-, Matrix-, Rollband- oder Zielschildbeleuchtungen. Indirekte Beleuchtung ist natürlich auch möglich, wie zum Beispiel die Beleuchtung von Rundinstrumenten, Tasten und Schaltern oder auch die Beleuchtung der hinteren Kennzeichen am Fahrzeug. Man kann diese auch Verwenden um den Innenraum zu erhellen. Da das Fahrzeuglicht in Omsi keine Schatten erzeugen kann, kann man mit entsprechenden Schatten-Texturen auch Schatteneffekte umsetzen.
Je mehr Lichtvarianten man zusammen erstellt, desdo besser wird das Licht im Bus. Aber desdo größer wird auch der erforderliche Arbeitsaufwand. Und dieser kann dann schon erheblich werden. Andererseits gibt es auch Grenzen. Diese Grenzen lassen sich am besten bei den Schattentexturen sehen. Wenn mehrere Lichtquellen aus verschiedenen Richtungen auf ein Objekt strahlen, ändern sich die Schattenwürfe und die Ausleuchtung der Bereiche unter dem Objekt. Hier können zwar mehrere verschiedene Schatten mittels Textur umgesetzt werden, allerdings stehen dem die Nachteile gegenüber, das Omsi mit weniger Texturen besser arbeitet, als mit vielen und der Aufwand, die verschiedenen Schattentexturen zu setzen, in keinem Verhältnis zum Endergebnis steht.
2.3. Umsetzung von Lichttexturen
Die Umsetzung ist denkbar einfach. Zum einen benötigt man mindestens, zwei Texturen. Beim Objektbau in einem 3D-Programm, wird jedes Objekt mit einer ausgeschalteten Textur versehen (der sogenannten Tagestextur). Diese sollte kein reines Schwarz haben (Farbcode 0, 0, 0). Durch die Verwendung von reinem Schwarz, kann das Objekt am Tage nicht hell erscheinen. Eine Graustufe ist ausreichend. Die zweite Textur darf wiederrum schwarze Flächen haben, damit die Sachen nicht leuchten, die später nicht leuchten sollen. Beispielsweise ein kleiner Kasten in schwarz oder eine helle Haltewunschanzeige. Alle Bereiche auf der Nachttextur, die später nicht leuchten sollen, wie das Gehäuse eines Lichtkastens, müssen auf der Nachttextur schwarz gemacht werden. Somit leuchtet später nur das was leuchten soll, während der Objektkörper ansich nicht leuchtet.
Um Nachttexturen zu erstellen, ist es hilfreich, die Tagestextur zu verwenden. Diese wird kopiert, schwarz gemacht, wobei nur die Flächen nicht schwarz werden, die später leuchten sollen. Diese späteren Leuchtflächen werden dann erhellt und so umgesetzt, das diese aussehen als würden sie leuchten. Wichtig dabei ist nur, das die Leuchtflächen in der Nachttextur nicht ihre Position verändern, sondern da bleiben wo diese auch auf der Tagestextur sind. Sonst werden die Positionsänderungen im Spiel später sichtbar, womit die Texturen hin und her zucken. Gleichzeitig kann man aber zum Beispiel Symbole invertiert anzeigen oder Zeichen verändern.
Zum Schluß werden beide Texturen in den Texturenordner kopiert. Wenn das Objekt im Modell-Ordner eingesetzt wurde, erstellt man noch die notwendigen Einträge in der model.cfg.
Beispielbild:
Auf der linken Seite befindet sich die Tagestextur. So werden die Kontrolleuchten am Tage abgebildet, wenn die Kontrolleuchten ausgeschaltet sind. Hiermit kann man 10 verschiedenen Objekten, eine Textur zuweisen. Die selbe Textur gibt es zweimal. Die rechte Seite zeigt die Textur ein zweites Mal. Diese wird als Nachttextur verwendet. Ist die jeweilige Variable zum aktivieren des Texturwechsels aktiv, dann schaltet Omsi um und der rechts, zu sehende Texturausschnitt, wird auf das Objekt aufgelegt. Hierbei ist es egal, ob es in Omsi hell oder dunkel ist, die aufgebrachte Nachttextur leuchtet immer, da diese als direktes Licht konzipiert werden muss. Würde man es als indirektes Licht einstellen, würde man den Effekt nur Nachts sehen.
Texturbeispiel stammen aus dem Add-On MAN Stadtbusfamilien von Chrizzly92 und wurden leicht verändert.
2.4. Eintragung der Lichttextur in der model.cfg
Auch diese Einträge sind schnell gemacht. Hier gibt es die Standardbefehle, die den Texturwechsel steuern und zwei Befehle die wahlweise eingesetzt werden, je nachdem welchen Effekt man erreichen möchte:
Eintragung in der model.cfg |
Erklärung der Eintragungen |
---|---|
[mesh] Objektname.o3d |
Befehl, das ein Objekt hinzugefügt wird Dateiname und Dateiendung der Modelldatei |
[matl_change] Tagestextur.jpg 0 Aktivierungsvariable |
Befehl, das etwas mit der Textur gemacht werden soll Texturname und Dateiendung, der Tagestextur, womit das Objekt gemappt wurde Texturebene, die gewechselt werden soll Variable zum aktivieren des Texturwechsels |
[matl_item] | Befehl, dass die Texturebene gewechselt werden soll |
[matl_nightmap] oder [matl_lightmap] Nachttextur.jpg |
Befehl, das und wie, folgende Lichttextur genutzt werden soll Dateiname und Dateiendung der Nachttextur |
Der Rest wird über das Script gesteuert. Wenn die Variable zum aktivieren 1 ist, dann wird die Textur ausgewechselt. Die eingetragene Variable entscheidet dann, wann die Umsetzung des Leuchteffektes zum Einsatz kommt. Hier sind die Einsatzmöglichkeiten vielfälltig.
Die eingetragene Variable "Null" entspricht der ausgewählten Texturebene.
Wichtig! Der eingetragene Texturname unter dem Befehl [matl_change] MUSS unbedingt, mit dem Dateiname der gemappten Textur
übereinstimmten. Andernfalls funktioniert der Texturwechsel nicht und Omsi meldet diesen Fehler in der Logfile. Dieser Fehler macht
sich in Omsi dadurch bemerkbar, das viele Scriptvariablen nichtmehr funktionieren.
2.4.1. Direktes oder indirektes Licht
Damit ein Objekt direkt leuchtet, verwendet man den Befehl:
[matl_nightmap]
Damit wird die Lichttextur sehr hell dargestellt, womit man auch bei großer Helligkeit (am Tage bei Sonnenlicht), das leuchten sehen kann. Das Licht hat also eine eigene Leuchtkraft, weil man den Lichtkörper in gewisser Weise, sehen kann. Dies findet sich bei Lichtquelle mit halbtransparenten Lichtkappen, wie Kontrollichter oder Blinklichter.
Möchte man ein Objekt anleuchten lassen, also den Effekt erzielen, dass das Objekt nur angeleuchtet wird (indirekte Beleuchtung), dann verwendet man den Befehl:
[matl_lightmap]
Bei dem Befehl [matl_lightmap] ist es egal, ob die Textur der Leuchtfläche, schneeweiß ist, oder eine farbige Nachttextur hat. Denn hierbei wird die Textur nicht ausgewechselt, sondern die Tagestextur wird von der Nachttextur überlagert und aufgehellt. Sinnvoll ist diese Variante bei indirekt leuchtenden Objekten, wie der Kennzeichenbeleuchtung, Ziel- oder Rollbändern oder bei Rundinstrumente, die nicht hintergrundbeleuchtet und nicht teiltransparent sind.
Der Unterschied bei beiden Texturen ist auffällig. Während die direkte Lichttextur [matl_nightmap] Nachts genauso leuchtet wie auch am Tage, so ist der Lichteffekt bei der indirekten Beleuchtung nur in der Nacht zu sehen. Am Tage ist der Unterschied kaum zu erkennen. Bei starker Sonneneinstrahlung, gibt es kaum noch einen erkennbaren Unterschied. Nachts gibt es wieder einen Unterschied. Gegenüber dem Befehl [matl_nightmap], wo die Textur stark leuchtet, ist die Leuchtkraft bei der indirekten Beleuchtung, mit dem Befehl [matl_lightmap] viel geringer.
_________________________________________________________________________________________________________________________________
3. Lichtpunkte
Lichtpunkte simulieren das Vorhanden sein, von Lichtquellen, die man direkt sehen kann. In der Realität entspricht das dem, was man sieht wenn man eine Glühlampe einschaltet, während man die Glühlampe direkt sehen kann. In Omsi wird damit das Vorhanden sein einer Lichtquelle sichtbar gemacht. Lichtpunkte haben in Omsi aber keine weitere Funktion. Während Texturen lediglich leichten, können Lichtpunkte auch einen optischen Lichteffekt, für den Spieler haben. Somit kann man einer Lichtquelle, einen gewissen Beldeffekt geben, womit für den Betrachter, eine Lichtkorona erzeugt wird.
3.1. Vor- und Nachteile der Lichtpunkte
Diese Liste ist sehr kurz. Man kann Lichtquellen sichtbar machen und man kann mehrere Lichtpunkte an gleicher Stelle setzen, um diese mit unterschiedlicher Intensität und / oder Farbe zu erstellen. Die große Anzahl an Einstellungsmöglichkeiten gestatten es, den Lichtpunkt in eine bestimmte Richtung sichtbar zu machen, aus Objekten rauszuleuchten und vieles andere. Ansonsten hat diese Lichtvariante keine weitere Funktion in Omsi. Es erzeugt keinen Lichtschein und hat somit keine Lichtwirkung auf Objekte.
Vorteile | Nachteile |
---|---|
Erzeugt nur eine sichtbare Lichtquelle |
Keine Wirkung auf Objekte, weder buseigene Objekte, noch Mapobjekte |
Mehrere Lichtpunkte übereinander möglich |
Keine weitere Wirkung |
Sehr viele Einstellmöglichkeiten |
|
Gerichtetes Licht möglich |
|
Lichtpunkte können unterschiedliche Koronen erzeugen (aber keine Aureole) |
3.2. Verwendung von Lichtpunkten
In Fahrzeugen findet man diese Lichtpunkte an sehr vielen Stellen, hauptsächlich aber außen am Bus. Ein Einsatzgebiet finden sich vorn an den Scheinwerfern. Ein normaler Scheinwerfer kann bis zu drei verschieden helle Lichter erzeugen. Standlicht, Abblendlicht und das Fernlicht. Während man das Standlicht am besten mit einer Lichttextur umsetzt, kann man das Abblendlicht und das Fernlicht mit unterschiedlichen Lichtpunkten umsetzen. Damit werfen diese Lichtpunkte aber keinen Lichtschein auf die Straße. Diese Lichtpunkte haben nur den Sinn und Zweck einen Lichtpunkt darzustellen.
Weiterhin findet man Lichtpunkte auch an den Zusatzleuchten, Rückleuchten und Positionsleuchten. Im Fahrzeuginneren, kann man diese Lichtpunkte am Innenlicht anwenden (Halogenspots, Türleuchten, Innenleuchten oder auch Kontrollleuchten.
Durch die hohe Anzahl an Einstellungsmöglichkeiten ist der Einsatz eines Lichtpunktes sehr variabel und vielfälltig einsetzbar. Weitere Vorteile erklären sich im Abschnitt Eintragung der Lichtpunkte in der model.cfg. Wann ein solcher Lichpunkt aktiv wird, entscheidet sich wieder über die Variable, deren Zustand im Script berechnet wird.
3.3. Umsetzen von Lichtpunkten
Lichtpunkte können sehr einfach umgesetzt werden. Hierfür trägt man lediglich die Lichtpunkte in der model.cfg ein. Mit Hilfe der vorgegebenen Variable zum aktivieren, kann man den Lichtpunkt gezielt steuern. Für einen Lichtpunkt gibt es einen Befehl, einmal ohne und einmal mit einem Präfix.
- [light_enh]
- [light_enh_2]
Der Unterschied liegt in der Anzahl der auszulesenden Strings unter dem Befehl. Ohne den Präfix _2, ist der Umfang geringer.
Wichtiger Hinweis! In Grunde ist es egal, wo die Lichtpunkte in der model.cfg eingetragen werden. Aber die Lichtpunkte dürfen auf keinen Fall unter [mesh]-Einträge mit Animationen eingetragen werden, wenn diese nicht animiert werden sollen. Da man Lichtpunkten keine separate Animation geben kann, besteht die Möglichkeit Lichtpunkten zu einer eingetragenen Animation zuzuweisen. Hierzu werden die Lichtpunkte unter dem animierten Objekt eingetragen. Werden Lichtpunkte fälschlicherweise unter einem animierten Objekt eingetragen, obwohl die Lichtpunkte ansich unbeweglich sein sollen, dann bewegen sich die Lichtpunkte mit. Im folgendem Bildbeispiel wurden die Lichtpunkte der Rückleuchten, unter dem Lenkrad eingetragen.
Da diese Lichtpunkte unter dem Lenkrad eingetragen wurden, nutzen
die Lichtpunkte nicht nur die Animation des Lenkrades, sondern auch
den Objektursprung des Lenkrades, für den Animationsursprung. In
diesem Beispielbild ist die Animation ungewollt. In anderen
Beispielen, kann eine Animation gewünscht sein, beispielweise, wenn
sich die Rückleuchten auf einer animierten Heckklappe befinden, wie
im zweitem Beispielbild zu sehen ist.
Andersfalls werden die Lichtpunkte unter einem nichtanimierten Objekt eingetragen. Bei dem nichtanimierten Objekt, darf der [mesh]-Eintrage auch keine vererbte Animationszuweisung [animparent] besitzen.
3.4. Koordinatensystem in Omsi
Das Koordinatensystem in Omsi, wird im Beitrag Blender Import/Export genau erklärt.
3.5. Eintragung von Lichtpunkten
Dieser Abschnitt wird etwas umfangreich. Denn es gibt zwei verschiedene Befehle um Lichtpunkte einzutragen. Der gewählte Befehl entscheidet über die Menge an Einstellungen. Der Einfachheit wegen, wird hier der lange Befehl erklärt.
[light_enh] mit 11 folgenden Strings (auszulesende Zeilen).
[light_enh_2] mit 25 folgenden Strings.
[light_enh_2]
- Position auf der X-Achse
- Position auf der Y-Achse
- Position auf der Z-Achse
- Richtung auf der X-Achse
- Richtung auf der Y-Achse
- Richtung-auf-der-Z-Achse
- Vektor des Lichtkegels auf der X-Achse
- Vektor des Lichtkegels auf der Y-Achse
- Vektor des Lichtkegels auf der Z-Achse
- Ausrichtung des Lichtpunktes
- Rotationsausrichtung
- Farbwert Rot
- Farbwert Grün
- Farbwert Blau
- Größe des Lichtpunktes
- Winkel des inneren Lichtkegels
- Winkel des äußeren Lichtkegels
- Variable zum Aktivieren des Lichtpunktes
- Helligkeitsvariable
- Multiplizierungsfaktor
- Ausrichtung zur Sicht des Spielers
- Lichteffekt
- Lichtkegel
- Zeitkonstante
- Effekt-Textur
Es folgen nun die Erklärungen der einzelnen Strings (Zeilen).
3.5.1. Position auf der X-Achse
Hiermit wir festgelegt, wo sich der Lichtpunkt im Bezug auf die X-Achse (Seitliche Ausrichtung) befindet, bezogen vom Mittelpunkt des Busses. Die X-Achse zieht sich von vorn des Busses bis nach hinten und teilt den Bus in eine Linke und rechte Seite auf. Ein positiver Wert, verschiebt den Lichtpunkt nach Rechts (Sicht nach Vorn) und alle Angaben werden in Meter gesetzt.
Bei einer Fahrzeugbreite von 2,50 Meter, befindet sich ein Lichtpunkt der nach rechts außen soll, also bei maximal 1.25. Ein negativer Wert verschiebt den Lichtpunkt nach Links. Hierfür wird dem Positionswert lediglich ein "Minus" vorrangestellt.
3.5.2. Position auf der Y-Achse
Mit dem zweiten String, wird der Lichtpunkt auf der Längsachse des Busses positioniert. Die Y-Achse liegt in der Mitte des Busses und teilt den Bus in eine vordere und eine hintere Hälfte. Ein positiver Wert, verschiebt den Lichtpunkt nach vorn, während ein negativer Eintrag, den Lichtpunkt nach hinten verschiebt.
3.5.3. Position auf der Z-Achse
Der dritte Eintrag entspricht dann der Ausrichtung des Lichtpunktes in der Höhe. Allerdings liegt die Z-Achse nicht in der waagerechten Höhe des Busses, sondern am tiefsten Punkt des gesamten Busses, also auf dem untersten Punkt der Räder. Somit kann die Z-Position eines Objekts oder Lichtpunktes, meist nur einen positiven Wert haben. Bei einem negativen Wert, liegt der Lichtpunkt unterhalb der Straße.
3.5.4. Richtung auf der X-Achse
Die Richtungsangabe, regelt die Ausrichtung des Lichtpunktes zum Fahrzeug. Hier werden allerdings keine Grad-Werte eines Winkels eingetragen, sondern die Ausrichtung wird als Variable mit einem festen Maximalwert eingegeben. Für die X-Achse bedeutet dies, dass man mit einem positiven Wert, den Lichtpunkt nach Recht ausrichtet und ein negativer Wert nach Links. Hierbei gilt:
- 0 = keine Ausrichtung auf der X-Achse
- 1 = maximale Ausrichtung nach Rechts (entspricht 90°)
- -1= maximale Ausrichtung nach Links
Werte die größer sind als Eins, sind damit nicht nötig. Allerdings sind Werte zwischen Null und Eins möglich. Um ein Lichtpunkt nach Rechts vorn auszurichten, muß der Wert mit dem nächten beiden Strings abgestimmt werden.
3.5.5. Richtung auf der Y-Achse
Auf der Y-Achse wird der Lichtpunkt nach vorn oder nach hinten ausgerichtet, entsprechend der Y-Achse in Omsi. Hier gilt:
- 0 = keine Ausrichtung auf der Y-Achse
- 1 = maximale Ausrichtung nach vorn
- -1= maximale Ausrichtung nach hinten
3.5.6. Richtung auf der Z-Achse
Wie bei den beiden vorherigen Abschnitten, wird hier das Licht auf der Z-Achse in Omsi ausgerichtet. Die Z-Achse entspricht die Ausrichtung nach oben oder unten. Hier gilt:
- 0 = keine Ausrichtung auf der Z-Achse
- 1 = maximale Ausrichtung nach oben
- -1= Ausrichtung nach unten
Ein Zusammenwirken der 3 Werte für die Ausrichtung, bewirkt eine direkte Veränderung der Ausrichtung in zwei oder drei Richtungen. Um das Licht nach rechts vorn auszurichten, wird der Wert für die Ausrichtung auf der X-Achse auf 1 gesetzt und auf der Y-Achse ebenfalls auf 1. Hierbei wird der Lichtpunkt nach rechts vorn ausgerichtet, wobei die Sichtweite auf eine direkte Richtung ausgerichtet ist. Mit halben Werten (0.5) kann diese Ausrichtung minimiert werden. Auch alle anderen Werte von 0.1 bis 1 sind möglich um die Ausrichtung des Lichtes einzugrenzen.
Bitte unbedingt Beachten:
Die Werte der Ausrichtung, entsprechen den Prozentualen Werten eines Winkels. Der maximale Wert 1 entspricht 100%,
was einem Winkel von 180° entspricht. Eine Reduktion um die Hälfte, entspricht einen Wert von 0.5 und somit einen Winkel von 90°.
3.5.7. Lichtkegelvektor auf der X-Achse
Mit der Ausrichtung des Lichtkegels, wird die sichtbare Hauptrichtung des Lichtpunktes festgelegt. Mit dem Vector wird nun die sichtbare Winkelweite des Lichtpunktes festgelegt. Leider werden auch hier keine Winkelwerte in Grad eingetragen, sondern Zahlenwerte. Während Null keine Winkelgröße vorgibt, steht die Eins für einen Winkel von 90° (100%) und die Zwei für einen Maximalen Winkel von 180° (200%). Die Grundrichtung wird mit den vorherigen Werten angegeben. Mit Kommawerten kann die Winkelweite genau eingestellt werden.
- 0 = kleinster Winkel
- 1 = Winkel von 90°
- 2 = Winkel von 180°
3.5.8. Lichtkegelvektor auf der Y-Achse
Hier werden die Winkel für die Winkelweite auf der Y-Achse eingetragen. Es gelten die selben Werte, wie die Vektorausrichtung auf der X-Achse.
3.5.9. Lichtkegelvektor auf der Z-Achse
Hier können die Werte für die Winkelweite auf der Z-Achse eingetragen werden.
Bitte unbedingt Beachten:
Die Zahlen stehen hierbei für einen prozentualen Wert, wobei Eins 100% entspricht und die Zwei für die maximale
Ausrichtung von 200%. Die 0.5 steht demnach für einen Winkel von 45° und die 1.5, die 150% entsprechen, setztet den Winkel
auf 135°.
3.5.10. Ausrichtung des Lichtpunktes
Mit den oben angegebenen Werten, wird die Sichtbarkeit des Lichtpunktes aus bestimmten Richtungen festgelegt. Wenn ein Lichtpunkt aber in allen Richtungen gleichermaßen sichtbar sein soll, werden die oben eingetragenen Werte alle auf Null gesetzt. Der Omnivector wird dann auf Eins gestellt. Damit wäre das Licht aus allen Richtungen sichtbar, die nicht von nichttransparenten Objekten verdeckt werden. Hier muß allerdings auch die Renderreihenfolge der buseigenen Objekte beachtet werden. Soll ein Lichtpunkt, durch eine Glasscheibe sichtbar bleiben, weil der Lichtpunkt sich dahinter befindet, dann muß der Lichtpunkt in der Model.cfg unter der entsprechenden Glasscheibe eingetragen werden. Sollte also beispielsweise eine Tür beim Aufschwenken, sich über einen Lichtpunkt bewegen, so würde das Glas, was ein Omsieigenes Objekt ist, diesen dahinterliegenden Lichtpunkt verdecken. Womit die Sichtbarkeit eingeschränkt wird. Das hat den Vorteil, das man damit den Lichtpunkt stark reduzieren kann, wenn die Scheibe eine starke Tönung hat oder der Farbwert der Glasscheibe den Lichtpunkt nahezu unsichtbar macht oder den Farbwert verändert. Dafür wird ein erster Lichtpunkt über dem Mesheintrag der Scheibe gesetzt. Dazu erstellt man einen zweiten Lichtpunkt der schwächer ist und die entsprechenden Änderungswerte bekommt. Dieser wird in der model.cfg unter der Scheibe eingetragen. Somit sieht man ohne Scheibe nur den hellen Lichtpunkt, der den dunklen überdeckt und durch die Scheibe, sieht man nur den dunklen, geänderten Lichtpunkt, weil die Scheibe den hellen Lichtpunkt filtert. Es gibt hier nur zwei Werte, die eingetragen werden können. Beim Wert Eins, werden die Eintragungen für die Lichtkegelrichtung und die Vectorausrichtung neutralisiert.
- 0 = Gerichtetes Licht durch die oben eingetragenen Werte
- 1 = Licht in alle Richtungen.
3.5.11. Rotationsausrichtung
Die Rotationsausrichtung nimmt direkten Bezug auf die eingestellten Werte für die Ausrichtung des Lichtpunktes und besonders die Vectorgröße. Hier gibt es wieder drei Variablen, womit das Verhalten des Lichtpunktes zur Kamera (Spielersicht) geregelt wird.
- 0 = Der Lichtkegel zeigt nur in die Richtungen der eingestellten Vectoren
- 1 = Der Lichtkegel rotiert um die eingestellte Vectorachse in Richtung der Kamera
- 2 = Der Lichtkegel erscheint immer in Richtung der Kamera (Sichtfeld des Spielers).
3.5.12. Farbwert Rot
Mit den Farbwerten ist es möglich die Farbe des Lichtpunktes auszuwählen. Zur Auswahl stehen 16.581.375 Farben, die sich von Weiß über das gesamte Farbspectrum bis zur nichtsichtbaren Farbe Schwarz erstrecken. Es wird aber nur die Farbe des Lichtpunktes eingestellt, nicht die Leuchtstärke. Man spricht hier auch von der Farbtemperatur. Man kann also mit den Farbwerten, warmweißes oder auch kaltweißes Licht abgeben.
Der erste Farbwert, steuert die Farbintensität der roten Farbe, von 0 für kein Rot bis 255 für maximales Rot.
3.5.13. Farbwert Grün
Der zweite Farbwert, steuert die Farbintensität der grünen Farbe, von 0 für kein Grün bis 255 für maximales Grün.
3.5.14. Farbwert Blau
Der dritte Farbwert, steuert die Farbintensität der blauen Farbe, von 0 für kein Blau bis 255 für maximales Blau.
Zusammen ergeben die 3 Farbwerte eine Auswahl von über 16 Millionen Farben. Um hier eine passende Farbe schnell einstellen zu können, empfiehlt es sich mit einem Bildbearbeitungsprogramm, den RGB-Farbwert einzustellen und auszulesen. Beispielprogramme mit Link, finden sich unter Dateiformate, die für Omsi verwendet werden.
3.5.15. Größe des Lichtpunktes
Hiermit wird nicht die Lichtstärke, sondern lediglich die Größe des Lichtpunktes eingestellt. Der Wert bezieht sich auf die Größe des Lichtpunktes in Meter. Ein Wert von wenigen Millimeter entspricht einer einzelnen Leuchtsiode (0.003, 0.005 usw) oder einer klaren Glühlampe. Werte von etwa 5 Zentimeter entsprechen einer matten Glühlampe. Es ist aber damit nicht möglich Leuchtstoffröhren oder Lichtzeilen zu simulieren, da der Lichtpunkt immer nur eine runde Quelle hat, während sich bei einer Leuchtstoffröhre die Lichtquelle in die Länge zieht.
3.5.16. Winkel des inneren Lichtkegels
Ausgehend vom Lichtpunkt, kann man hier einen inneren Winkel für den Lichtkegel vorgeben. Bei einer Glühlampe entspricht der Lichtpunkt den Wolframfaden. Der innere Lichtkegel entspricht dann dazu, den Glaskörper der Glühlampe. Der eingestellte Wert wird bei voller Lichtintensität erreicht. Eingetragen werden die Winkel in Grad.
3.5.17. Winkel des äußeren Lichtkegels
Der äußere Winkel des Lichtkegels bestimmt dann die Reichweite der durch den Lichtpunkt erzeugten Korona. Die Korona ist ein Effekt der Atmosphärischen Optik. Die Korona wird dann besonders sichtbar, wenn die Augen sehr feucht sind. Da die Lichtintensität an einem Monitor zu gering ist, kann hiermit eine leicht reale Lichtwirkung erzielt werden und das Licht scheint eine Blendwirkung zu haben. Zusammen mit den eingestellten Lichtkegelvectoren, kann man so die simulierte Leuchtstärke auf andere umliegenden Objekte erweitern. Auch dieser Winkel wird in Grad angegeben.
3.5.18. Variable zum aktivieren des Lichtpunktes
Die Variable bezieht sich hierbei auf die Scriptvariable aus den Busscripten. Erreicht die Variable den Wert Eins, so wird der Lichtpunkt aktiviert. Mit dem Wert Null, bleibt der Lichtpunkt inaktiv. Die richtige Variable wird aus den Scripten ermittelt und hier eingetragen.
3.5.19. Helligkeitsvariable
Hier wird nun die Stärke des Lichtpunktes, also die Hellgkeit eingestellt. Dies ist wichtig, wenn mehrere Lichpunkte übereinander liegen. Somit simuliert man stufengedimmtes Licht. Die Helligkeit richtet sich wieder in eine prozentuale Form. Hierbei entspricht also Null ein extrem dunkles Licht (etwa die einer Schwarzlichtlampe) bis zur Zwei, was der doppelten Leuchtstärke entspricht, wie beispielsweise eines Halogenstrahlers. Es sind somit auch Werte von 0% bis über 200% möglich.
- 0 = stark gedämmpfte Helligkeitsvariable
- 0.5 = halbe Leuchtstärke*
- 1 = normale Leuchtstärke
- 2 = doppelte Leuchtstärke
*Ist eine halbe Lichtstärke ungültig, weil die Variable zu schnell wechselt (Stroboskoplicht), dann wird automatisch der konstante Wert 1 angenommen. Werte über Zwei machen hingegen immer weniger aus, weil 200% eigentlich einen maximalen Wert darstellt. Bei großen Scheinwerfern kann es aber notwenig sein, die Helligkeit geringfügig zu erhöhen. Werte von über 3 sind aber nichtmehr sichtbar und lassen somit keinen Unterschied erkennen. Der Monitor ist keine aktive Lichtquelle, wie eine Lampe. Es ist also nur indirektes Licht.
3.5.20. Multiplizierungsfaktor
Um ein helles Licht noch stärker und strahlender erscheinen zu lassen (Hochdruckstrahler oder große Halogenstrahler), kann hier ein Multiplikationsfaktor eingestellt werden. je höher der Multiplikationsfaktor wird, desdo geringer ist die Wirkung, da ein Monitor nur ein indirektes Licht erzeugen kann.
3.5.21. Offsetwert zum Spieler
Der Offsetwert eines Lichtpunktes zur Spielersicht (Kamerasicht) ist der Wert, wenn der Lichtpunkt sich in einem Objekt befindet, die Wirkung des Lichtpunktes aber aus dem Objekt austreten soll. Ist der Lichtpunkt also innerhalb eines solides Objektes (Beipielswesie die Glühlampe unter einer Lichtkappe) so können mit diesem Parameter der Lichtpunkt und die Lichtkegel sichtbar gemacht werden. Wird der Radius verdoppelt, so strahlt der Lichtpunkt aus der Kappe herraus. Die Lichtkappe muß dazu nicht transparent gemacht werden. Aus welcher Richtung der Lichtpunkt sichtbar wird, wird über die oberen Parameter eingestellt. Man kann beispielsweise mit einer Zwei den Radius des Lichtpunktes zur Größe des Objektes verdoppeln. Entscheidend ist nicht der genaue Größenwert des Objektes, sondern das Verhältnis des Lichtpunktes, wie weit der Lichtpunkt aus dem Objekt erstrahlen soll.
3.5.22. Lichteffekt
Jedes Licht erzeugt einen gewissen Effekt, die Korona, die meist durch die Augenfeuchtigkeit und eine Lichtkappe beeinflußt wird. Mit diesem Parameter wird die Form des Lichteffects (Korona) erzeugt. Es gibt vier Werte, die sich addieren um beide Effekte zu bekommen.
- 0 = kein Effekt
- 1 = Sterneneffekt
- 2 = Kein Nebeleffekt (kreisrunde Korona)
- 4 = beide Effekte zusammen
Beim letzten Parameter wird ein kreisrunder Effekt erzeugt der von einem sternenartige Effekt leicht überlagert wird.
3.5.23. Lichtkegel
Jedes Licht erzeugt einen Kegeleffekt, wenn dieser Effekt nicht unter einer matten Lichtkappe gefiltert wird. Der Kegeleffekt ist abhängig von Nebel und Umgebungshelligkeit und nur, wenn es kein omnidirektionales Licht (siehe Ausrichtung des Lichtpunktes in allen Richtungen) ist. Hier sind also nur die Werte Null und Eins möglich.
3.5.24. Zeitkonstante
Soll ein Lichtpunkt langsam zur vollen Lichtstärke gelangen, kann hier ein Zeitwert in Sekunden eingestellt werden. Besonders bei älteren Fahrzeugen, wird die Elektronik etwas Träge. Stellt man hier einen Wert von beispielsweise 5 Sekunden ein, dann braucht der Lichtpunkt 5 Sekunden bis er eine Intensität von 63% erreicht hat. Die vollen 100% werden dann erst mit 7 bis 8 Sekunden erreicht. Dies entspricht einem Licht, dass über einen Kondensator gesteuert wird, damit das Licht nicht schlagartig hell wird, wie eine LED. Somit lassen sich träge Glühlampen oder sogar Energiesparlampen simulieren. Beim Ausschalten dauert es wiederum 5 Sekunden bis das Licht eine Intensität von nur noch 27% erreicht hat. Die Zunahme der Leuchtstärke ist dabei konstant.
Die vielen älteren Fahrzeugen sieht man diesen Effekt beim Blinklicht sehr gut. Das Licht geht nicht komplett aus, sondern wird nur schwächer und wieder stärker.
3.5.25. Effekt-Textur
Bezugnehmen auf den Lichtpunkt, kann hier auch eine Textur (mit Dateiendung) eingetragen werden. Diese Textur sollte die Form der Lichtkappe haben. Ist also rund oder eckig. Somit erscheint der gesamte Lichtkörper erleuchtet. Bei einer einfachen Lichttextur, die mit dem Wechsel der Befehle [matl_nightmap] oder [matl_lightmap] zum leuchten gebracht werden, gibt es keinerlei Lichteffekte oder langsames Ein- und Ausschalten. Es gibt nur die Funktion an oder aus. Hier wird eine einfache Leuchttextur verwendet, die sich den Einstellungen des Lichtpunktes anpaßt. Alle anderen Lichtpunktparameter bleiben dabei erhalten und gehen nicht, durch den Texturwechsel verloren.
3.6. Rundumleuchten
Rundumleuchten sind ein verstärkter Lichteffekt. Das bedeutet, dass dieses Licht nicht durch die Einschränkungen der Ausrichtung vollständig begrenzt werden soll, aber auch nicht zu jeder Zeit aus allen Richtungen gleichzeitig gesehen werden darf. Die Sichtrichtung dieses Licht, soll um eine feste Achse rotieren. Um diesen Effekt zu erreichen, gibt es mehrere Möglichkeiten, die nun beschrieben werden sollen.
3.6.1. Rotierender Lichtpunkt
Die wahrscheinlich schwerste Variante liegt darin den Lichtpunkt mit einer widersprüchlichen Einstellung zu versehen.
Unter dem Punkt Ausrichtung des Lichtpunktes wird der Wert Eins gesetzt, was bedeutet, dass der Lichtpunkt aus allen Richtungen gesehen werden kann. Gleichzeitig wird der folgende Punkt Rotationsausrichtung des Lichtpunktes auf den Wert 2 gestellt. Der Wiederspruch liegt nun darin, dass ein rotierendes Licht, dass zu jeder Zeit aus allen Richtungen gesehen werden kann, nicht rotieren braucht, denn diese Rotation wäre nicht sichtbar. Damit das Licht nicht aus allen Richtungen gleichzeitig gesehen werden kann, muß die Richtung auf Null gesetzt werden, die als Rotationsachse dient, genauso wie die Vektorenwinkel für den Lichtpunkt.
- X-Achse = Ausrichtung nach Links oder nach Rechts
- Y-Achse = Ausrichtung nach Vorn oder nach Hinten
- Z-Achse = Ausrichtung nach Oben oder nach Unten
Fahrzeugrundumleuchten befinden sich meist auf dem Dach und rotieren um eine vetikale Achse, um in allen horizontalen Richtungen sichtbar zu sein. Also wird die Ausrichtung des Lichtpunktes auf der Z-Achse auf Null gesetzt, ebendso die Lichtkegelvectoren der X- und Y-Achsen.
3.6.2. Blinkender Lichtpunkt
Wenn die vorgenannte Vorgehensweise zu kompliziert erscheint, kann auch alternativ der Lichtpunkt in allen Richtungen mit dem Parameter 1 unter Ausrichtung des Lichtpunktes gestellt werden. Im Script wird dann das Licht blinkend gesetzt (beispielsweise im Ein-Sekunden-Takt) und man setzt die Zeitkonstante auf eine halbe Sekunde (Wert 0.5). So wurde dies bei den Rettungswagen auf der Map Spandau gemacht. Auch moderne Signalbrücken von Einsatzfahrzeugen funktionieren auf diese Weise. Der Stroboskopeffekt wird durch ein schnelles Aufblinken erzeugt. Verlangsamt man dieses schnelle Aufblitzen und steuert das Licht so, dass es schnell heller und dunkler wird, erscheint es, als würde das Licht drehen.
3.6.3. Rotierendes Objekt
Die letzte Möglichkeit bietet natürlich das Vorbild. In einer transparenten Lichtkappe wird zentral ein heller Lichtpunkt gesetzt. Dieser soll in alle Richtungen gleichzeitig leuchten. Außerdem erstellt man ein Mesh, dass um diesen Lichtpunkt (auf der Z-Achse) rotiert. Der sichtbare Rotationseffekt kann ein wenig verstärkt werden, wenn man die zum Licht gerichtete Objektseite mit einer sehr hellen Textur versieht. Zusammen mit einem Alphakanal, kann diese Fläche dann verspiegelt werden (ähnlich einem Chromeffekt). Wie das genau funktioniert, wird im Fahrzeug-SDK unter dem Abschnitt Reflexionstexturen genau erklärt. Der Spiegeleffekt ist zwar gering, aber es macht optisch etwas her.
_________________________________________________________________________________________________________________________________
4. Lichtschein
Da ein Lichtpunkt keinerlei Wirkung in Omsi hat, muß der Lichtschein seperat dazu eingestellt werden. Diese Trennung von Lichtpunkt und Lichtschein liegt darin begründet, dass Omsi buseigene Objekte und busfremde Objekte voneinander trennt. Diese Trennung ist notwendig, damit bestimmte Objekte nur von bestimmten Lichtquelle angeleuchtet werden. In der Realität gibt es keine Unterschiede. Eine Lichtquelle strahlt alle Objekte an, die das Licht erreichen kann. Entweder direkt von der Lichtquelle aus, oder indirekt durch Reflektionen. In Omsi ist diese Trennung aber notwendig, da der Lichtschein in Omsi keine Rücksicht auf die Form der Lichquelle oder das Gehäuse der Lichtquelle, sowie auf andere Objekte nimmt. Grundlegend gibt es zwei Lichtscheinarten. Der Lichtschein für busfremde Objekte nennt man Spotlicht. Dieses Spotlicht kann nur in eine Richtung leuchten und Omsi kann auch nur ein einziges Spotlicht unterhalten. Das Spotlicht wird erst im nachfolgenden Abschnitt (Abschnitt 1.5) behandelt. Hier geht es um den Lichtschein für die buseigenen Objekte, also alle Objekte die am eigenen Bus sind und auch in der buseigenen Modeldatei (model.cfg) eingetragen sind.
Dieser Abschnitt, der die internen Lichtmittel behandelt ist sehr umfangreich, da es Abhängigkeiten in einigen anderen Dateien gibt. Denn das Licht im Bus soll nicht nur einige buseigene Objekte beleuchten, sondern auch Fahrkarten, Geld und selbstverständlich die Passagiere. Omsi unterscheidet zwischen sitzenden und stehenden Passagieren, die mitfahren, sowie laufenden Passagieren die durch den Bus laufen oder auf den Ausstieg warten. Also Passagiere, die einen bestimmten Punkt erreicht haben und den Passagieren, die einen bestimmten Punkt erst noch erreichen möchten.
4.1. Vor- und Nachteile
Der Lichtschein kann immer nur in dem Fahrzeug aktiv sein, dass vom Spieler genutzt wird. KI-Fahrzeuge die einen hellen Innenraum haben sollen, müßen mit einer LOD-Textur oder einem LOD-Mesh erstellt werden. Der größte Nachteil am Lichtschein ist aber die Wechselwirkung mit anderen Objekten. Ein Lichtschein leuchtet und erhellt dadurch alle Objektflächen, die dem Licht zugewandt sind. Je heller die Textur der zugewandeten Objektflächen, desdo heller erscheint das Objekt. Das trifft aber leider auf alle Objekte zu, die am Bus verbaut wurden. Dabei ist es egal ob das Licht direkt auf das Objekt trifft oder durch andere nichttransparente Objekte hindurchgeht. Das bedeutet, dass beispielsweise die Räder vom Innenlicht erhellt werden können, obwohl der Fußboden dies eigentlich verhindert. Ein weiterer Nachteil sind die damit verbundenen Schatten im Fahrzeug. Während ein Objekt im Bus erhellt wird, wie ein Sitz der direkt angestrahlt wird, wird der Bereich direkt unter dem Sitz in der Helligkeit angestrahlt, wie der Abstand zur Lichtquelle ist. Der Sitz erzeugt also keinen Schatten. Genauso erzeugt die Lehne keinen Schatten auf der Sitzfläche, wenn die Lichtquelle auf der Rückseite der Lehne ist. So wird bespielsweise der Fahrerbereich vom Innenlicht erhellt, auch wenn eine nichttransparente Trennwand dies eigentlich verhindern sollte. Man kann aber natürlich auch Objekte von bestimmten Lichquellen trennen, indirektes Licht und Schattierungen erzeugen. Hier muß man bereits beim Fahrzeugbau darauf achten, wie sich das Licht später verhalten soll. Dies widerspricht etwas dem, was im Abschnitt Fahrzeug-SDK unter dem Tip zum Fahrzeugbau (Außenmodel) beschrieben wurde.
Diesen großen Nachteil, steht aber ein besonderer Vorteil gegenüber. Die Helligkeit der Objekte nimmt mit der Entfernung zur Lichtquelle ab. Ab einer bestimmten Entfernung befindet sich das Objekt im Schatten, weil die Reichweite der Lichtquelle begrenzt ist. Dieser Pluspunkt kann in einem Bus richtig schöne Effekte erzeugen. So erscheint zum Beispiel das Türlicht, im Bereich der Quelle stärker und schwächt sich mit zunehmender Entfernung ab. Außerdem muß man somit keine extra Texturen erstellen, die diesen Effekt erst verdeutlichen oder sichtbar machen. Damit kann man den Lichtschein dazu nutzen, Schatteneffekte zu erzeugen. Dies läßt sich erreichen, wenn man mit unterschiedlichen Lichtreichweiten arbeitet.
Im linken Bild wird die Oberfläsche der Kasse, vom Kassenlicht und vom Türlicht beleuchtet. Das stärkere Türlicht, erzeugt einen leichten Schatten an der oberen Kante des Kassentisches. Die Oberfläche des Kassentisches ist dabei vollständig und gleichmäßig ausgeleuchtet. Im rechten Bild, ist das Türlicht inaktiv und nur das Kassenlicht leuchtet die Oberfläche der Kasse aus. Das schwache Licht, nimmt mit zunehmender Entfernung, auf dem Kassentisch, schnell ab. Der Türraum wird bei diesem Beispiel zu schwach angeleuchtet. Wäre es bei dem Screenshot richtig dunkel, würde der Türraum nur sehr gering erhellt werden.
Ein weiterer Nachteil ist die geringe Anzahl an Lichtquellen, die man einem Objekt zuweisen kann. Es sind nur maximal 4 Lichtquellen möglich, die man einem Objekt zuweisen kann. Für einige Objekte ist es leichter, für andere wiederrum extrem schwer, wenn sich 5 Lichtquellen im realativem Abstand zum Objekt befinden, aber diese 5 Lichtquellen unterschiedlich geschaltet werden können.
Ein weiterer Punkt ist das Verhalten der Lichtquellen zu den Passagieren im oder vor dem Bus. Einerseits kann man sehr viele Lichtquellen im Bus setzen, was auf die Objekte einen wirklich schönen Effekt haben kann. Da man die Lichtquellen nicht auf die Passanten einstellen kann, die sich im Bus bewegen oder auf den Ausstieg warten, können zuviele Lichtquellen einen sehr negativen Lichteffekt auf diese Passagiere haben. Passagiere, die im Bus sitzen oder einen Stehplatz zur Fahrt eingenommen haben, kann man diese Lichtquellen wiederrum zuweisen. Da man den anderen Passagieren diese Lichtquellen nicht zuweisen lassen, ergeben sich Ingame leider auch einige sehr unschöne und negative Effekte, der sich besonders Nachts sehr negativ bemerkbar macht. Wenn man mit einem Bus an der Haltestellen anhält, wo ein Passagier einsteigen möchte, begibt dieser sich sofort zum nächstmöglichen Einsteigspunkt. Solange sich der künftige Passagier vor einer Glastür befindet, wird er vom Innenlicht nicht beleuchtet. Wenn man die Tür öffnet und das Türlicht angeht, wird der Passagier auch von diesem Licht nicht erhellt. Erst wenn der Passagier den ersten Pfadpunkt des Eingangs im Bus betritt, wird er von den 4 naheligenden Lichtquellen erfasst und entsprechend ins Licht gesetzt. Diesen Effekt kann man bei einer Gruppe von einsteigenden Passagieren genauso sehen, genauso wie bei der Gruppe der aussteigenden Passagieren, die sofort im dunkeln stehen, sobald diese den letzten Pfadpunkt des Ausstieges verlassen haben. Befinden sich im Bus zuviele Lichtpunkte, werden Passagiere teilweise falsch beleuchtet, wenn diese durch den Bus laufen. Dies fällt besonders dann auf, wenn sich in einem Reisebus unten am Gang Wegeleuchten befinden. Da diese eventuell näher an den Personen liegen als das Deckenlicht, werden die Beine der Passanten beleuchtet, aber ihre Köpfe bleiben im Schatten, auch wenn diese direkt unter einer hellen Deckenleuchte laufen. Da ein Bus aber meist mehr als 4 Lichtquellen hat, die auch unterschiedlich geschaltet werden, ergeben sich einige Schwierigkeiten. Diese kann man aber mit anderen Mitteln verringern, was wiederrum einen Mehraufwand an Arbeit bedeutet. Es gibt auch einige Tricks, die man nutzen kann um diesen Nachteil zu verringern.
Vorteile | Nachteile |
---|---|
Lichtquellen können mit vielen Einstellungen angepasst werden |
Lichtquelle, die den Lichtschein erzeugt ist unsichtbar |
Abnahme der Helligkeit bei zu- nehmender Entfernung zur Lichtquelle |
Objekte erzeugen keine Schatten |
Animierte Objekte werden auch während der Animation richtig beleuchtet |
Pro Objekt können nur vier Lichtquellen zugeordnet werden |
Es können sehr viel Lichtquellen verbaut werden |
Passagiere werden erst beleuchtet, wenn sie den ersten Pfadpunkt betreten haben |
Objekte können auf bestimmte Lichquellen angepasst werden |
laufende Passagiere nutzen nur die vier naheliegensten Lichtquellen |
Lichtquelle, die den Lichtschein erzeugt, ist unsichtbar |
Lage der Lichtquellen muß beim Busbau beachtet werden (Objektauftrennung) |
Nur im Spielerfahrzeug sichtbar. Keine Wirkung in KI-Fahrzeugen. |
Die Lichtquellen, die einen Lichtschein erzeugen sind unsichtbar. Das ist ein Vor- und ein Nachteil zugleich. Durch die unsichtbare Lichtquellen muß man immer einen Lichtpunkt oder eine Lichttextur als Quelle setzen. Hierbei mußman darauf achten, die Helligkeit der Textur oder die Stärke des Lichtpunktes genau anzupassen, was nicht gerade einfach ist. Im Gegenzug kann man mehrere kleine Lichtpunkt zusammenfassen und den Ursprung des Lichtscheins, über den Bus legen. Diese Lichtquelle ist nicht sichtbar, aber der Lichtschein beleuchtet die Objekte, die davon beleuchtet werden sollen. Somit lassen sich, Lichtquellen zusammenfassen, die dicht beieinander liegen, womit sich mehrere Lichtquellen auf Objekte, einstellen lassen.
4.2. Verwendung in Fahrzeugen
In Fahrzeugen werden Lichtquellen, die einen Lichtschein erzeugen, überall dort eingesetzt, wo eine Lichtquelle Objekte und Passagiere beleuchten soll. Die Wechselwirkung der Positionen der einzelnen Lichtquellen, eine unterschiedliche Helligkeit und die Lage in Bezug auf andere Objekte, kann einen schönen Lichteffekt im Fahrzeug erzeugen. So muß man im Bus alle Deckenleuchten mit einem Lichtschein versehen. Andere Objekte kann man mit Lichtpunkten, als Quelle für einen Lichtschein versehen, wodurch der Lichteffekt besser wird, als mit einer Lichttextur. So hat man die Wahl, dass hintere Kennzeichen mit einer Licht- und Schattentextur oder mit Lichtpunkten als Lichtquellen und mit einem Lichtschein auf dem Kennzeichen versehen. Beispiele gibt es viele, wo man Lichtschein einsetzen kann, wie zum Beispiel Matrixbeleuchtungen. Diese Lichteffekte sind dann teilweise besser, als Lichttexturen. Das erstellen hochwertiger Licht- und Schattentexturen kann hingegen einen enormen Arbeitsaufwand bedeuten und setzt den guten Umgang mit einem Bildbearbeitungsprogramm voraus.
4.3. Umsetzung des Lichtscheins
Der Umfang der einzustellenden Strings (Zeilen) ist sehr übersichtlich und recht einfach. Aber bitte nicht täuschen lassen. Für eine Verwendung gehört etwas mehr dazu. Aber zuerst geht es nur darum, den Lichtschein als Quelle zu erzeugen. Wieder beginnt man mit dem Befehl. Der Aufbau hat eine ganz andere Reihenfolge als alle anderen Lichtpunkte. Direkt nach dem Befehl, folgt zuerst die Variable zum schalten und zum Ende wird die Position eingetragen:
[interiorlight]
- Variable
- Reichweite in Metern
- Farbwert Rot
- Farbwert Grün
- Farbwert Blau
- Position auf der X-Achse
- Position auf der Y-Achse
- Position auf der Z-Achse
- Die Variable entspricht der Variablen aus dem Script, wann die Lichtquelle aktiviert werden soll.
- Die Reichweite des Lichtschein, gibt an, wie weit die Leuchtstärke bis zu 63% reicht. Die Reichweite ist nicht genau festzulegen, da die Leuchtkraft stätig abnimmt. So kann man weiße Objekte in 6 Metern erreichen, wenn die Leuchtreichweite auf 2 Meter gestellt wurde. Hingegen erscheinen Objekte mit dunklen Texturen nicht sehr hell, wenn diese sich in 3 Metern Reichweite befinden. Aber diese Objekte erscheinen nicht schwarz. Farbiges Licht, hat eine veränderte Reichweite. So hat blaues Licht eine geringere Reichweite, wie grünes oder rotes Licht, bei gleicher Lichtstärke.
- Die Farbwerte sind wieder genauso einzustellen, wie bei den vorherigen Lichttern
- Auch die Position entspricht den Einstellungen der anderen Lichtern.
Wie schon erwähnt, kann man soviele Lichtquellen einstellen, wie man möchte. Wieviel Lichtquellen Sinn machen, sieht man aber erst am Ende, wenn die Passagiere durch den Bus laufen und wie die Objekte aufgeteilt wurden. Dazu geht es in einem späteren Abschnitt weiter. Wichtig ist aber die Reihenfolge der Eintragungen. Man kann diese Lichquellen in der model.cfg eintragen wo man möchte. aber die Reihenfolge ist später sehr wichtig. Wie bei vielen anderen Objekten im Bus, ist die Reihenfolge Nullbasiert. Also der erste Lichtscheineintrag hat die Reihenfolgeziffer Null, der zweite Eintrag hat die Nummer 1. Beim Einstellen der Lichtquellen sollte man sich die Reihenfolge unbedingt notieren. Für ein richtig gutes Ergebnis, später im Fahrzeug, sollte man sich auch eine Skizze anfertigen. Das erleichtert die Arbeit später, wenn man den Objekten im Bus, die richtigen Lichtquellen zuweist.
4.3.1. Zuweisung des Lichtscheines auf Objekte
Um einem Objekt ein oder mehrere Lichtquellen zuzuweisen, gibt es nur einen Befehl.
[illumination_interior]
Dieser Befehl erscheint aber nicht nur in der model.cfg, sondern zusätzlich auch in der Passangercabin.cfg. Näheres dazu, findet sich im Beitrag Fahrgastwegewege unter dem Abschnitt 3.1.10 Lichtzuweisung.
Darauf folgen dann maximal 4 Lichtquellen, von denen das Objekt angestrahlt werden soll. Diese Lichtquellen werden dann untereinander eingetragen, wobei die Zuordnung der Reihenfolge, die Nummerierungszahlen der Lichtquellen angibt. Um das ganze zu verdeutlichen erkläre ich es anhand eines Beispiels.
Als Beispiel nehmen wir einen einfachen Wagenkasten mit zwei Türen, wobei sich vorn die Einstiegstür befindet und hinten die Ausstiegstüren. Das Licht über den Türen, die nur einschalten wenn die Türen geöffnet sind, werden zuerst eingetragen. Damit haben diese die Nummern Null und Eins. Eine weitere Lichtquelle befindet sich über dem Fahrersitz und hat als dritter Eintrag die Nummer 2. Abschließend soll es noch 3 weitere Lichtquellen geben, die als Deckenleuchten sich jeweils im ersten Drittel des Wagenkastens, in der Mitte und im letzten drittel des Wagenkastens befinden. Da diese Lichtquellen an vierter, fünfter und sechster Stelle in der Reihenfolge stehen, haben diese Lichtquellen die Nummer 3 für vorn, Vier für die Mitte und die Fünf für hinten.
Desweiteren nehmen wir die Sitze für die Lichtzuweisung. In diesem Beispiel wird angenommen, es befinden sich 9 Sitzreihen im Bus und der Fahrersitz. Objekte die von den gleichen Leuchten angestrahlt werden sollen, können als ein Objekt zusammen gefasst werden. Im Beispiel, bleibt jede Sitzreihe als einzelnes Objekt seperat erhalten.
Für die Zuweisung des Lichtscheins an den Fahrersitz, gibt es bereits einige Einschränkungen. Befindet sich hinter dem Fahrerplatz eine undurchsichtige Trennwand, so wird der Fahrersitz nur von 2 bis höchstens 3 Lichtquellen angeleuchtet. In der Reihenfolge der Eintragungen der Lichtquellen sind dies, die erste Türleuchte und die Fahrerleuchte. Eventuell kommt dann noch die erste Deckenleuchte hinzu. Dementsprechend werden die Lichtquellen dem Objekt Fahrersitz zugewiesen:
[illumination_interior]
0
2
3
-1
Beispielbild, für die vorderste Deckenleuchte im Ikarus 250.59 Reisebus.
Hier erkennt man den Unterschied, wenn die vorderste Deckenleuchte ein- und ausgeschaltet wird. Die Hinteren Leuchten bleiben dabei an. Der Unterschied ist besonders am Fahrersitz zu erkennen. Die erste Leuchte hängt genau neben dem Vorhang, wobei die Seite vom Fahrersitz angeleuchtet wird. Und auch die vorderen Sitzreihen werden mit angeleuchtet.
Die vordere Tür wird von den Lichquellen der ersten Türleuchte, Fahrerplatz und den beiden Deckenlichtquellen angeleuchtet, weil es hier keine undurchsichtige Wand gibt. Die Zuweisung lautet also:
[illumination_interior]
0
2
3
4
Beispielbild der Lichttrennung
Für die hintere Tür kann man nun die hintere Türbeleuchtung nehmen und die 3 Deckenleuchten:
[illumination_interior]
1
3
4
5
Für die Sitzreihen ergeben sich verschiedene Möglichkeiten, die den baulichen Umständen entsprechen. Während die ersten beiden Sitzreihen von dem Türlicht und den Deckenleuchten erfasst werden (folgendes Bildbeispiel Links), kann das Fahrerlicht die Sitzreihen an der Türseite anleuchten, aber nicht die Sitzreihen hinter dem Fahrerplatz (folgendes Beispielbild Rechts), wenn eine undurchsichtige Wand verbaut wurde. Hierfür sollte man auch die ersten beiden Sitzreihen für die jeweilgen Seiten auftrennen.
Für die Sitzreihe an der Türseite, kommen dann die Lichtquellen 0, 2, 3 und 4 in Frage, für die türlose Seite hinter dem Fahrersitz, enfällt die Lichtquelle (2) für den Fahrerplatz (0, 3, 4, -1).
Hier erkennt man den Unterschied beim Schalten der vorderen Deckenleucht und des Fahrerlichts. Der Effekt verstärkt sich dadurch, das die restliche Beleuchtung inaktiv ist. Diese Besipiel verdeutlicht den Unterschied zwischen richtig aufgeteilten Sitzreihen am besten. Während die vordere Deckenleuchte die erstn Sitzreihen hinter dem Fahrplatz erlcuhten, bleiben die Sitze im dunkeln, wenn die vordere Leucht fehlt und nur das Fahrerlicht aktiv ist. Die erste Sitzreihe auf der Türseite, wird auch beleuchtet, aber durch die Entfernung nur ein wenig erhellt.
Die Sitzreihen auf der türlosen Seite werden nur vom Türlicht vorn, der ersten Deckenleuchte und dem vorderen Lichtkreis beleuchtet. Somit gibt es für diese Sitze nur 3 Lichtzuweisungen. Die vierte Lichtzuweisung wird mittels -1 ausgeschlossen.
Als Ersatz kann man dien zweiten Lichtkreis nutzen, was einen negativen Effekt haben kann, weil diese weit weg ist und die Rückseiten der Sitze auf der türlosen Seite, heller erscheinen könnten als die Sitze auf der Türseite, die nicht vom hinteren Lichtkreis angeleuchtet werden.
Für die dritte und vierte Sitzreihe werden generell die drei Deckenleuchten verwendet. Wahlweise kann man hier noch die erste Türleuchte mit zunehmen (0, 3, 4, 5). Für die Sitzreihen Fünf bis Neun, wird statt der vorderen Türleuchte, nur die hintere mit zugewiesen (1, 3, 4, 5).
Beispiel für den mittleren und hinteren Lichtkreis. Beide Lichtkreise werden hier wechselweise geschaltet. Bei der richtigen Lichtzuweisung ergibt sich eine deutlich sichtbare Wechselwirkung auf die Sitze.
Die Zuweisung muß aber nicht für jede Sitzreihe neu geschrieben werden, denn der Befehl [illumination_interior] bleibt für alle folgenden Objekte erhalten, bis er durch eine neue Zuweisung geändert wird.
[mesh]
ObjektA.o3d
[illumination_interior]
0
2
3
4
[mesh]
ObjektB.o3d
[mesh]
ObjektC.o3d
[mesh]
ObjektD.o3d
[illumination_interior]
1
3
4
5
In dieser Beispiel-Reihenfolge werden die Objekte A, B und C von den Lichtquellen an der ersten Tür, dem Fahrersitz und der vorderen, sowie mittleren Deckenleuchte angeleuchtet. Das Objekt D und alle folgenden, werden von der zweiten Türleuchte und den 3 Deckenleuchten erfasst.
Soll ein Objekt von weniger als 4 Leuchtquellen erfasst werden, so kann man die restlichen Stellen mit -1 schreiben, oder die obrigen Zahlen wiederholen. Dadurch ändert sich aber das Lichtverhalten auf die Objekte nicht.
Beispiel für vorderes und hinteres Türlicht.
Da der Lichtschein, durch Objekte hindurch scheint, würden hiermit zum Beispiel, auch die Räder beleuchtet werden. Um dies auszuschließen wird eine Lichtzuweisung ohne Lichtquellennummer erstellt.
[mesh]
Objekt_RadVL.o3d
[illumination_interior]
-1
-1
-1
-1
Soll ein Objekt aber von mehr als 4 Leuchten beleuchtet werden, so geht dies nicht. So kann zum Beispiel der Fußboden nicht von alle Lichtquellen beleuchtet werden, wenn der gesamte Boden als einzelnes Objekt in dem Bus eingesetzt wird. Hier sollte man den Boden auftrennen. Das selbe gilt auch für die gesamte Innenseite der Karosserie.
Beispielbild für die volle Beleuchtung. Hier werden die unterschiedlichen Lichtkreise nacheinander durchgeschaltet.
4.3.2. Zuweisung des Lichtscheins auf Passagiere
Diese Lichtquellen müßen nur für die Sitz- und Stehplätze zugewiesen werden. Hierfür wird der selbe Befehl [illumination_interior] unter den Plätzen in der passengercabin.cfg geschrieben. Für Passagier, die durch den Bus laufen oder im Bus warten (zum Beispiel warten sie auf eine freie Kasse, freien Entwerter oder auf den Ausstieg) brauchen keine Zuweisungen gesetzt werden. Die Fahrkunden richten sich dabei auf die 4 aktivierten Lichtquellen, die ihnen am nächsten sind. Eine genauere Beschreibung, findet sich im Beitrag Fahrgastwege.
4.3.3. Zuweisung des Lichtschein auf Geld und Fahrkarten
Eine besondere Art der Lichtzuweisung bilden das gegebene Geld der Passagiere, der ausgegebenen Fahrkarten und des Wechselgeldes. Diese Objekte werden nicht in der model.cfg eingetragen. Die Objektdateien und Texturen befinden sich in eigenen Ordnern und die Positionen werden in anderen Dateien eingetragen. Die Positionen für die ausgegebenen Fahrkarten, sowie das Geld der Passagiere und das gegebene Wechselgeld, werden in der Datei Passengercabin.cfg eingetragen. Für diese Objekte gelten die Lichzuweisungsbefehle nicht. Die Positionen der Abreißblöcke (zum geben der Fahrkarten) wird in die Busdatei geschrieben. Dort wird aber eine Lichtzuweisung nicht erkannt.
Hierfür übernimmt OMSI die Lichtzuweisung des letzten Objektes aus der model.cfg. Dementsprechend sollte das letzte Objekte ein Objekt sein, das sich an der selben Position befindet. Man kann die Kasse zuletzt eintragen oder ein anderes Objekt, was von den selben Lichtquelle beleuchtet wird. Alternativ kann man auch ein unbeleuchtetes Objekt wählen, dass sich so weit von den Lichtquellen befindet, das es nicht angeleuchtet wird, oder dessen Objektflächen vom Licht abgewand sind. Dieses Objekt wird zuletzt eingetragen und bekommt die Lichtzuweisung für das Geld und die Fahrkarten.
_________________________________________________________________________________________________________________________________
5. Spotlicht
Das Spotlicht ist ein Licht, dass auch nur einen Lichtschein erzeugt. Aber im Gegensatz zum Lichtschein für buseigene Objekte, ist das Spotlicht nur für busfremde Objekte da und beleuchtet alle Szeneryobjekte wie Straßen, Häuser und sonstige Mapobjekte, die verbaut wurden, aber auch die Passanten und alle verkehrenden KI-Fahrzeuge. Allerdings gibt es auch einen großen Nachteil. Omsi kann nur ein einziges Spotlicht im Spiel erzeugen. Real gesehen erzeugen Frontscheinwerfer einen Lichtschein, nicht nur vom eigenen Fahrzeug, sondern auch alle anderen Fahrzeuge. Ebendso erzeugen auch Rücklichter, Bremslichter, Blinklichter oder Rückfahrscheinwerfer einen Lichtschein. Nur das selbst gefahrene Fahrzeug kann mit einem Spotlicht ausgestattet werden. Außerdem kann man nur eine Richtung vorgeben, sowie eine Farbe. Würde man den hinteren Lichtern ein Spotlicht geben, so würde man ohne vorderen Spotlicht auskommen müssen. Damit wird aber vor dem Fahrzeug, die Straße nicht mehr beleuchtet.
In der model.cfg werden aber mehrere Spotlichter eingestellt. So gibt es ein Spotlicht für das Abblendlicht mit einer geringeren Helligkeit und Reichweite. Das Fernlicht bekommt einen weiteren Punkt für das Spotlicht, ist dann heller und hat eine erhöhte Reichweite. Man kann auch noch weitere Spotlichter vorn einstellen. So kann man weitere Spotlichter einsetzten, die Zusatz- und Nebelscheinwerfer einbinden. Diese müssen dann so eingestellt werden, dass diese die einzelnen oder kombinierten Schaltmöglichkeiten einbeziehen. Diese einzelnen Spotlichter werden gleich noch genauer erklärt.
Auch hier ist Ist die eingetragene Reihenfolge, in der Model.cfg entscheidend. Danach kann das entsprechende Spotlicht aktiviert werden.
5.1. Vor- und Nachteile
Wie schon gesagt, kann man immer nur ein Spotlicht in Omsi erzeugen. Das ist der größte Nachteil am Spotlicht. Man kann wieder mehrere Varianten einstellen. In Omsi kann man diese verschiedenen Spotlichter nacheinander durchschalten, womit sich das Frontlicht unterschiedlich gestalten läßt, je nachdem ob Abblendlicht, Fernlicht, mit oder ohne Zusatzscheinwerfer schaltet. Die Reihenfolge wird in der mdoel.cfg festgelegt und im Script eingestellt. Wie das genau geht, wird gleich einzeln erklärt.
Vorteile | Nachteile |
---|---|
Viele Einstellmöglichkeiten |
Nur ein einziges Spotlicht einsetzbar |
Verschiedene Spotlichter nacheinander durchschaltbar |
Nur am aktuellem Spielerfahrzeug sichtbar |
unabhängig von anderen Lichtern und Objekten. |
Spotlicht erzeugt keine Schatten. |
5.2. Umsetzen des Spotlichts
Die Einstellungen sind sehr einfach und schnell erklärt. Zuerst folgt wieder der Befehl, gefolgt von 12 Strings (Zeilen) die entsprechende Werte erhalten.
[Spotlight]
- Position auf der X-Achse
- Position auf der Y-Achse
- Position auf der Z-Achse
- Ausrichtung auf der X-Achse
- Ausrichtung auf der Y-Achse
- Ausrichtung auf der Z-Achse
- Farbwert Rot
- Frabwert Grün
- Farbwert Blau
- Reichweite des Lichts
- innerer Lichtkegel
- äußerer Lichtkegel
Auch hier sind die einzelnen Strings einfach und klar. Mit den ersten drei Zeilen werden die Positionen im Bus festgelegt. Da es nur ein Spotlicht gibt, kann man diesen nicht für zwei Frontleuchten einzeln erstellen. Also wird ein Spotlicht in der Busmitte festgelegt und eingestellt (X = 0). Der Y-Wert sollte vorn am Bus liegen. Dieser sollte nicht zu weit vor dem Bus liegen, aber auch nicht zu weit im Bus drin sein. Wird dieser nicht weit genug nach vorn gesetzt, dann beleuchtet das Spotlicht den Schatten des Busses, unter dem Fahrzeug und tritt seitlich am Bus aus. Zu weit nach vorn gesetzt, wirkt das Licht falsch. Das selbe gilt für die Höhe. Zu tief gesetzt gesetzt, beleuchtet es die Straße nicht richtig und das Licht fällt polygonweise ab. Zu hoch gesetzt, wirkt das Spotlicht wieder unecht. Es sollte sich daher etwa 50 cm bis einen Meter über der Scheinwerferebene befinden.
Die Ausrichtung ist dabei einfach. Da das Licht nicht seitlich scheinen soll, ist er X-Wert für die Ausrichtung immer Null. Für die Aurichtung nach vorn, wird der Y-Wert immer auf Eins gesetzt. Der Z-Wert kann entsprechend dem geschaltetem Licht eingestellt werden. Da das Abblendlicht nicht zu hoch strahlen soll, setzten man den Z-Wert der Ausrichtung leicht nach unten. Eingestellt wird ein negativer Wert zwischen Null und Eins. Null bedeutet, dass das Spotlicht gerade nach vorn leuchtet, der Wert -1 bedeutet, das das Licht nach unten geneigt wird. Ein Wert von etwa -0.3 ist hierbei am besten. Dieser Wert kann noch etwas angepasst werden. Da das Fernlicht nicht begrenzt wird, sollte hier der Winkel auf der Z-Ausrichtung geringer ausfallen, als beim Abblendlicht, oder auf Null gesetzt werden.
Die Farbwerte werden wieder entsprechend den anderen Lichtmöglichkeiten farblich angesetzt. Halogenleuchter strahlen leicht gelblich, Xenonlichter strahlen weiß und LED-Licht leicht ins blaue.
Die Reichweite der Spotlichter richtet sich wieder nach der Art des geschalteten Lichtes. Abblendlich allein hat die geringste Reichweite. Die Angaben werden in Metern eingetragen. Ein Wert von 200 Meter sollten dabei ausreichen. Abblendlicht mit Zusatzscheinwerfern, wie dem vorderen Nebelscheinwerfern, bekommt dagegen einen etwas höheren Wert. Etwa 300 bis 350 Meter sollten reichen. Und das Fernlicht bekommt die größte Reichweite, wobei 500 Meter realistisch sind. Hierbei ist es egal, ob die Nebelscheinwerfer zugeschaltet werden oder nicht, da diese meist unter oder in gleicher Höhe der Fernlichtscheinwerfer liegen. Dafür verändert sich die Ausleuchtung.
Die letzten beiden Werte, ergeben die Ausleuchtung der Spotlichter. Es gibt einen inneren Kreis, der den Hauptteil des Spotlichtes ausleuchtet. Dieser Wert sollte geringer sein, als die äußere Ausleuchtung. Es bedeutet, wie weit das Spotlicht seitlich ausfällt. Für das Abblendlicht und dem Fernlicht sind geringere Werte angebracht, für das Spotlicht mit Zusatzscheinwerfern ist eine höhere seitliche Ausleuchtung passend. Diese werden dann in Winkelgraden eingetragen.
Das waren schon die Einstellungen zum Spotlicht. Da diese Einträge keine Schaltvariable besitzen, wird im Script die Variable (S.L.Spot_select) mit einem Zahlenwert belegt. Ist der Zahlenwert unter Null, also lautet der Wert -1, dann wir kein Spotlicht geschaltet. Da Omsi die Nummerierungsreihenfolge mit Null beginnt, ist der erste Eintrag eines Spotlichtes, das Spotlicht 0. Alle weiteren Einträge erhöhen sich jeweils um eine Ziffer. Mit weiteren Variablen kann dann der Wert weiter erhöht werden, bis alle Spotlichter geschaltet werden können. Die Variable Spot_select ist Omsiseitig nicht fest vorgegeben, gehört aber dennoch zu den festen Omsi-Variablen. Der Befehl [Spotlight] ist aber unveränderlich und es kann immer nur Eine einzige, dieser Befehlsfolgen ausgelesen werden.
Auch die Umsetzung der einzelnen Frontbeleuchtungen ist dabei einfach. In der Model.cfg werden die Spotlichter untereinander eingetragen. In den meisten Bussen ist der erste Eintrag für das Fernlicht und der zweite für das Abblendlicht. Hierfür wird die Variable (spot_select) auf dem Wert Null - für den ersten Eintrag, oder auf dem Wert Eins gesetzt, der für den zweiten Eintrag steht.
Für das Fernlicht gilt: höchste Reichweite, mittlere seitliche Ausleuchtung und direkter nach vorn gerichtet. Für das Abblendlicht verstellt man diese Werte etwas: geringste Reichweite, nicht so hell, etwas nach unten gerichtet und kleinste seitliche Ausleuchtung. Danach kann man die Spotlichter für die Frontbeleuchtung mit den Zusatzscheinwerfern eintragen. Für Fernlicht mit Zusatzleuchten gilt: höchste Reichweite, höhste seitliche Ausleuchtung, direkter nach vorn gerichtet und höchste Helligkeit. Für das Abblendlicht mit Zusatzscheinwerfer gilt dann: mittlere Reichweite, mittlere bis hohe seitliche Ausleuchtung, nicht so direkt nach vorn gerichtet und mittlere Helligkeit. Wenn man möchte, kann man auch noch den Zusatzscheinwerfer, einen eigenen Spotlichteintrag geben, dass dann ohne Abblend- oder Fernlicht funktioniert und nur mit dem Standlicht oder ohne Standlicht geschaltet wird.
Im Script kann man dann die Reihenfolge der Eintragungen nacheinander abfragen:
Spotlicht-Nummer Eintragungsreihenfolge in der Model.cfg |
Lichtvariante Mit oder ohne Zusatzscheinwerfer |
Reichweite Angaben in Meter |
Helligkeit Angaben in Lumen |
seitliche Ausleuchtung Angaben in Grad |
---|---|---|---|---|
-1 |
kein Spotlicht (kein Eintrag in der model.cfg) |
--- | --- | --- |
0 |
Fernlicht ohne Zusatzscheinwerfer |
500 m |
5.000 lm |
60° |
1 |
Abblendlicht ohne Zusatzscheinwerfer |
200 m |
2.000 lm |
45° |
2 | Fernlicht + Zusatzscheinwerfer |
500 m |
6.000 lm |
75° |
3 | Abblendlicht + Zusatzscheinwerfer |
350 m |
4.000 lm |
75° |
4 |
Zusatzscheinwerfer + Standlicht Abblendlicht und Fernlicht sind ausgeschaltet |
350 m |
3.000 lm |
75° |
6. Objekterhellung
Da Omsi, allein nur das Spielerfahrzeug richtig in Licht setzt, ist der Lichtschein bei KI-Fahrzeugen wirkungslos. Mit den Variablen, kann man zwar die Lichtobjekte aktivieren, aber alle Objekte bleiben im dinkeln. Setzt sich ein Spieler als Fahrgast in ein Fahrzeug mit Innenlicht, wird das Innenlicht wieder aktiviert, womit auch der Lichtschein wirkt. Nun hat man die Möglichkeit, die Innenwände und Sitze mittels Lichttexturen zu erhellen, aber nur, wenn die Texturen nicht auf die Objekte gekachelt wurden. Der Arbeitsaufwand ist hierbei sehr groß. Aber damit wirkt das Lichtverhalten im Bus echt und sieht sehr realistisch aus.
Die andere Möglichkeit bietet die Objekterhellung. Hierbei erhalten die Objekte im Bus, den Befehl [matl_allcolor], mit 14 Strings. Somit erscheinen die Objekte im Bus beleuchtet, hat aber den Nachteil, dass die Objekte allgemein erhellt werden und nicht auf die Lichtpositionen ausgerichtet sind. Auch die Lichtreichweite wird hierbei ignoriert. Der Nachteil ist hierbei aber unwichtig, da in den KI-Fahrzeugen die Lichtwirkung ohnehin nicht genau erkannt werden kann. Ohne diesen Eintrag in der model.cfg, bleibt der Innenraum dunkel, obwohl der KI-Bus das Innenlicht aktiviert hat.
6.1. Vor- und Nachteile
Die Objekterhellung nimmt keine Rücksicht auf die tatsächliche Position der Innenleuchten. Die Objekte werden nur allgemein erhellt, womit diese nur in KI-Fahrzeugen einen Sinn haben, oder wenn es mehr Lichtpunkte gibt, als man auf die Objekte zuweisen kann. In Spielerfahrzeugen ist die Objekterhellung nutzbar, wenn man einen großen Lichtkreis hat und der Innenraum komplett erhellt werden soll. Damit sieht das Lichtverhalten in den Fahrzeugen sehr unrealistisch aus. Nur in Zussamenarbeit mit den Lichtquellen und die Zuweisung des Lichtscheins, kann sich ein annehmbares Lichtverhalten zeigen.
Vorteile | Nachteile |
---|---|
Nutzbar für das Innenlicht in KI-Fahrzeugen |
Keine Rücksicht auf Positionen der Lichtquellen |
Zusammen nutzbar mit dem Lichtschein |
Objekte werden allgemein erhellt |
Mehrere unterschiedliche Objekterhellungen verwendtbar |
6.2. Funktion zum Aufhellen
Wenn in Omsi das natürliche Licht im Spiel fehlt (Sonnenuntergang oder Sonne wird durch starke Wolkendecke verdeckt), dann werden Objekte nichtmehr beleuchtet. Diese erscheinen im Bus dunkel. Mit dem Befehl [matl_allcolor] werden die Farben wieder hergestellt. Abgesehen davon kann man Objekte in anderen Fraben leuchten oder Glänzen lassen. Weitere detaillierte Informationen finden sich im Omsi-SDK, im Abschnitt 1.7 (Materialeigenschaften) und im Abschnitt 2.2 ([matl], [matl_change] und [matl_allcolor]).
Eintragungen in der model.cfg
Ganz einfach ist das umsetzen nicht, wenn man sehr genau arbeiten möchte. Daher emphielt es sich, die Standardwerte aus anderen Fahrzeugen zu übernehmen. Möchte man dennoch Änderungen und Anpassungen vornehmen, sollte man mit den Werten experimentieren.
Syntax für die Eintragungen |
Bedeutung |
---|---|
[matl_allcolor] | Befehl |
Diffuse (Rot) Diffuse (Grün) Diffuse (Blau) Diffuse (Alpha-Kanal) |
Grundhelligkeit des Objekts |
Ambient (Rot) Ambient (Grün) Ambient (Blau) |
Farbe des Umgebungslichtes |
Specular (Rot) Specular (Grün) Specular (Blau) |
Farbe des Glanzpunktes |
Emissive (Rot) Emissive (Grün) Emissive (Blau) |
Selbstleuchtender Effekt |
Power | Fokussierung des Glanzpunktes |
Hiermit lassen sich die Innenraumobjekte nach der Lichtfarbe einstellen. Glattlackierte Objekte können damit das Licht, optisch gesehen, stark reflektieren. Bei einer farblich veränderten Innenraumbeleuchtung (beispielsweise Nachtlicht in Reisebusse) verändern, die Einstellungen die Farbe der Objekte bei der entsprechenden farblicher Beleuchtung. Der letzte Wert POWER, entscheidet dann darüber, ob ein Objekt matt oder stark glänzend ist. Hier sind dann Werte von 0 bis über 50 möglich. Bei allen anderen Werten, geben die Zahlen wieder den prozentualen Wert zwischen 0 = 0 % und 1 = 100 % an. Zwischenwerte, werden wieder mit einer Kommastellen angegeben, wobei die Kommastellen mit einem Punkt gesetzt wird.
6.3. Eintragung in die model.cfg
In der model.cfg kann man dann mehrere Varianten einsetzen. Mit dem Befehl [matl_item] werden dann die Variablen gewechselt.
[matl_change]
Tagestextur.bmp
Texturebene
Aktivierungsvariable
[matl_item]
[matl_allcolor]
1. Variante
[matl_chance]
Tagestextur.bmp
Texturebene
nächste Aktivierungsvariable
[matl_item]
[matl_allcolor]
2. Variante
_________________________________________________________________________________________________________________________________
7. Allgemeines zum Licht
Das ganze Lichtthema ist einerseits sehr umfangreich, bietet aber andererseits auch eine sehr größe Möglichkeit der Anpassung. Das Zusammenspiel aller gegebenen Möglichkeiten, wie Licht- und Schattentexturen, Innenlichtpunkten und Lichtschein, kann eine besondere und sehr real wirkende Innenbeleuchtung bewirken. Zusammen mit den richtigen Einstellungen für die Lichtpunkte und dem Spotlicht, ergibt in Omsi eine wirklich real wirkende Ausleuchtung des Spielerfahrzeuges. Man muß nur entscheiden, wieviel Arbeit man sich damit macht. Wer sich zum ersten Mal mit dem Thema Licht beschäftigt, sieht nur einen großen Berg Arbeit vor sich. Für geübte User, die sich damit richtig auseinander gesetzt haben, ist es immernoch viel Arbeit, aber es ist überschaubar und die gesamte Spielszenery kann richtig angenehm, ins passende Licht gesetzt werden. Besonder für ältere Fahrzeugmodelle ist die Mehrarbeit sehr lohnend, wenn diese noch keine reinweißen Leuchtstoffröhren haben, sondern mit alten und kleinen Glühlampen ausgestattet wurden. Hier läßt sich das gesamte Licht richtig in Szene setzen.
_________________________________________________________________________________________________________________________________
8. Danksagungen
Man kann natürlich nicht alles wissen und auch beim Licht gibt es noch eine Menge mehr zu sagen. Der Support seitens Marcel ist sehr mangelhaft geworden. Daher geht mein besonderer Dank an Rüdiger Hülsmann, der mir vieles zum Thema Licht erklärt hat und auch an Busfanat, iTram und NL202Fan, die sich Zeit genommen haben, mir einiges zu zeigen und zu erklären. Außerdem geht noch ein Dank an Darius Bode, für seinen Support, wie man Fahrkarten und Geld beleuchtet, sowie die Umsetzung der Dimmbarkeit und an Chrizzly92, der dieses Omsi-wiki wieder zum Leben erweckt hat und die Möglichkeit gibt, diesem Tutorial einen Platz zu geben.
Dieses Tutorial soll einen genauen Überblick über das gesamte Lichtthema geben, wenn es auch nicht vollständig ist.