Licht

Aus wiki.3d-modell.design
Wechseln zu: Navigation, Suche

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, werden in Omsi diese Zusammenhänge jeweils einzeln erstellt und genau angepasst. Das wiederrum bedeutet, dass man nicht einfach eine Lichtquelle setzen kann, sondern dazu, aber seperat, auch noch den Lichtschein 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 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ß. 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.


Inhaltsverzeichnis

Lichtarten und Bezeichnung

Um in einem Fahrzeug Licht einzubringen, gibt es viele verschiedene Möglichkeiten. Diese müßen einzeln erstellt werden, ergeben aber zusammen ein relativ original getreues Lichtverhalten, das aber nie perfekt oder gar real werden kann. Da jede Art von Licht, unterschiedliche Vor- und Nachteile haben, stehen diese im Anschluß an die genannten Möglichkeiten.

Die verschiedenen Möglichkeiten im Überblick

Für die Fahrzeuge in Omsi gibt es 4 verschiedene Möglichkeiten Licht umzusetzen. Im einzelnen sind dies:

  1. Lichttexturen - diese werden aufgelegt oder gewechselt,
  2. Lichtpunkte - das sind die Lichtquellen, die keinen Schein erzeugen, aber sichtbar sind,
  3. Lichtschein - das unabhängig von Lichtpunkten erzeugte Licht und nur den Lichtschein bringt, also nur die Lichtwirkung,
  4. Spotlicht - Dieses Licht gehört zum Fahrzeug, erzeugt nur den Lichtschein, kann aber auch Fremdobjekte anleuchten, die nicht zum Fahrzeug gehören (Kartenobjekte, Fahrzeuge, Passanten).

Jede einzelne Variante, wird einzeln und unabhängig von anderen umgesetzt. Zusammen ergeben diese die komplette Lichtbeleuchtung.

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 genutzt werden kann, aber nur ein Zusammenspiel mehrerer Varianten, kann ein zufriedenstellendes Ergebniss erbringen. Jede Variante einzeln, kann zwar leicht umgesetzt werden, aber ein Zusammenspiel mehrere Lichtvarianten ist teilweise Problematisch. 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 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.


Lichttexturen

Lichttexturen finden sich im und am Bus an vielen Orten. Im Bus dienen sie zum Beispiel als Kontrolleuchten, oder für Lichtquellen, wie Innenleuchten oder Leuchten am Bus, wie Scheinwerfer oder Rückleuchten. Hierbei wird ein Objekt mit sogenannten Tagestexturen gemappt, die die Kontrolleuchte 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.

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. 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.

Zusammenfassung:
Vorteile <-> Nachteile
Leicht umsetzbar Kein langsames Ein- und Ausschalten

möglich

Helligkeit bestimmt die Leuchtkraft Lichttexturen erzeugen keinen

Lichtschein

Nachtexturen können aufgelegt oder

gewechselt werden

Kein Überstrahlen auf benachbarte Objekte

Objekte können dimmbar gemacht werden

die Qualität der Lichttextur entscheidet

über das Aussehen des leuchtenden Objektes

Farbe über das Script leicht wechselbar

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- und Rollbandbeleuchtungen. 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 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.

Umsetzung von Lichttexturen

Die Umsetzung ist denkbar einfach. Zum einen benötigt man zwei Texturen. Beim Objektbau in einem 3D-Programm, wird jedes Objekt mit einer ausgeschalteten Textur versehen. Diese kann hell oder auch dunkel gemacht werden. Allerdings sollte man beim Erstellen der Texturen darauf achten, dass man kein Schwarz verwendet (Farbcode 0, 0, 0). Die zweite Textur darf wiederrum schwarze Flächen haben, damit die Sachen nicht leuchten, die später nicht leuchten sollen. Beispielsweise ein kleines Thermometer in schwarz oder eine Hellen Haltewunschanzeige. Somit leuchtet später nur das was leuchten soll, während der Körper ansich nicht leuchten darf.

Um Nachttexturen zu erstellen, ist es hilfreich, die Tagestextur zu verwenden. Diese wird komplett 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 verlieren, sondern da bleiben wo diese auch auf der Tagestextur sind.

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.

Eintragung der Lichttexturen in der model.cfg

Auch diese Einträge sind schnell gemacht. Hier gibt es die Standardbefehle, die es immer gibt und zwei Befehle die wahlweise eingesetzt werden, je nachdem welchen Effekt man erreichen möchte.

 [mesh]
 Objektname.o3d

 [matl_change]
 Tagestextur.bmp
 0
 Variable zum aktivieren

 [matl_item]

 [matl_nightmap]
 Nachttextur.tga

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.

Damit ein Objekt direkt leuchtet, verwendet man den Befehl:

[matl_nightmap]

Möchte man ein Objekt beleuchten, aber 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.


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.

Vor- und Nachteile von Lichtpunkten

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 Wirkung.

Zusammenfassung:
Vorteile <-> Nachteile

Erzeugt sichtbare Lichtquelle

Keine Wirkung auf Objekte

Mehrere Lichtpunkte übereinander

möglich

Keine weitere Funktion

Sehr viele Einstellungsmöglichkeiten

Gerichtetes Licht möglich

Lichtpunkte können unterschiedliche

Chorona erzeugen (Blendeffekte)

Verwendung in Fahrzeugen

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 verschiedene 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.

Umsetzung 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 mit 2 Präfixe.

  • [light_enh]
  • [light_enh_2]

Der Unterschied liegt in der Anzahl der auszulesenden Strings unter dem Befehl.

Eintragung der Lichtpunkte in der model.cfg

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]

  1. Position auf der X-Achse
  2. Position auf der Y-Achse
  3. Position auf der Z-Achse
  4. Richtung auf der X-Achse
  5. Richtung auf der Y-Achse
  6. Richtung auf der Z-Achse
  7. Vektor des Lichtkegels auf der X-Achse
  8. Vektor des Lichtkegels auf der Y-Achse
  9. Vektor des Lichtkegels auf der Z-Achse
  10. Ausrichtung des Lichtpunktes
  11. Rotationsausrichtung
  12. Farbwert Rot
  13. Farbwert Grün
  14. Farbwert Blau
  15. Größe in Meter
  16. Winkel des inneren Lichtkegels
  17. Winkel des äußeren Lichtkegels
  18. Variable zum Aktivieren des Lichtpunktes
  19. Helligkeitsvariable
  20. Multiplizierungsfaktor
  21. Ausrichtung zur Sicht des Spielers
  22. Lichteffekt
  23. Lichtkegel
  24. Zeitkonstante
  25. Effekt-Textur

Es folgen nun die Erklärungen der einzelnen Strings (Zeilen).

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.

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.

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 nur einen positiven Wert haben. Bei einem negativen Wert, liegt der Lichtpunkt unterhalb der Straße.

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.

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

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.

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° und die Zwei für einen Maximalen Winkel von Maximal 180°. 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°

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.

Lichtkegelvektor auf der Z-Achse

Hier können die Werte für die Winkelweite auf der Z-Achse eingetragen werden. 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 45° und die 1.5, die 150% entsprechen, setzten den Winkel auf 135°.

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 Objkete beachtet werden. Soll ein Lichtpunkt, durech 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 Schaeibe, 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 einegtragenen Werte

1 = Licht in alle Richtungen.

Rotationsausrichtung

Die Rotationsausrichtung nimmt direkten Bezug auf den 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).

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 und 255 für maximales Rot.

Farbwert Grün

Der zweite Farbwert, steuert die Farbintensität der grünen Farbe, von 0 für kein Grün und 255 für maximales Grün.

Farbwert Blau

Der dritte Farbwert, steuert die Farbintensität der blauen Farbe, von 0 für kein Blau und 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 wie dem Windowseigenen Paint oder externen Programmen wie Paint.net, Gimp oder anderen Beispielen, den RGB-Farbwert einzustellen und auszulesen.

Größe in Meter

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 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 einzige Quelle hat, während sich bei einer Leuchtstoffröhre die Lichtquelle in die Länge zieht.

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.

Winkel des äußeren Lichtkegels

Der äußere Winkel des Lichtkegels bestimmt dann die Reichweite der durch den Lichtpunkt erzeugten Corona. Die Corona 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 Leuchtweite auf andere uhmliegenden Werten erzeugt werden. Auch diese Winkel wird in Grad angegeben.

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.

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 eine 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, 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.

Multiplizierungsfaktor

Um ein helles Licht noch stärker und strahlender erscheinen zu lassen, 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.

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 also 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.

Lichteffekt

Jedes Licht erzeugt einen gewissen Effekt der meist durch die Augenfeuchtigkeit und eine Lichtkappe beeinflußt wird. Mit diesem Parameter wird die Form des Lichteffects erzeugt. Es gibt vier Werte, die sich addieren um beide Effekte zu bekommen.

0 = kein Effekt

1 = Sterneneffekt

2 = Kein Nebeleffekt (kreisrunde Corona)

4 = beide Effekte zusammen

Beim letzten Parameter wird ein kreisrunder Effekt erzeugt der von einem sternenartige Effekt leicht überlagert wird.

Lichtkegel

Jedes Licht erzeugt einen Kegeleffekt, wenn dieser Effekt nicht unter einer matten Lichtkappe gefiltert wird. Der Kegeleffekt ist bhä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.

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.

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.

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.

Rotierender Lichtpunkt

Die wahrscheinlich schwerste Variante liegt darin den Lichtpunkt mit einer wiedersprü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.

Blinkender Lichtpunkt

Wem diese Vorgehensweise zu kompliziert erscheint, kann auch alternativ den Lichtpunkt in allen Richtungen mit dem Parameter 1 unter Ausrichtung des Lichtpunktes stellen. 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 und steuert das Licht so, dass es schnell heller und dunkler wird, erscheint es, als würde das Licht drehen.

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.


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 Passagieren, die gern einen bestimmten Punkt erreicht haben und den Passagieren, die einen bestimmten Punkt erst noch erreichen möchten.

Vor- und Nachteile des Lichtschein

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, dass wie ein Sitz 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 bei Fahrzeugbau darauf achten, wie sich das Licht später verhalten soll. Dies wiederspricht 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 ist 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 die Lichttextur dazu nutzen, Schatteneffekte zu erzeugen. Ein weiterer Nachteil ist die geringe Anzahl an Lichtquellen, die man dem Objekt oder den Objekten 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 realativen 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, 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 Beide 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.

Zusammenfassung:
Vorteile <-> Nachteile
Lichtquellen können mit vielen

Einstellungen angepasst werden

Lichtquelle die den Lichtschein erzeugt,

ist für den Spieler nicht sichtbar

Abnahme der Helligkeit auf Objekten

wenn die Entfernung zunimmt

Objekte erzeugen keine Schatten
Bewegliche Objekte werden auch während

der Animation richtig beleuchtet

Es können nur maximal 4 Lichtquellen

pro Objekt zugeorndet werden

Es können sehr viele Lichtquellen

verbaut werden

Passagiere werden erst ins Licht

gesetzt, wenn sie im Bus sind

Objekte können so eingestellt werden, dass

die Lichtquelle keine Wirkung auf diese haben

laufende Passagiere nutzen nur die vier

naheliegensten Lichtquellen

Beim Fahrzeugbau muß die Lage der

Lichtquellen beachtet werden

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 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 Lichtquellen die einen Lichtschein auf dem Kennzeichen erzeugen, zu 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.

Umsetzung des Lichtschein

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]

  1. Variable
  2. Reichweite in Metern
  3. Farbwert Rot
  4. Farbwert Grün
  5. Farbwert Blau
  6. Position auf der X-Achse
  7. Position auf der Y-Achse
  8. 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 sher hell, wenn diese sich in 3 Metern Reichweite befinden. Aber diese Objekte erscheinen nicht schwarz.
  • 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 Lichtpunkte einstellen, wie man möchte. Wieviele Sinn machen, sieht man 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 Ergebniss später im Fahrzeug, sollte man sich auch eine Skizze anfertigen. Das erleichtert die Arbeit später, wenn man den vielen Objekten im Bus, die Lichtquellen zuweist.

Zuweisung des Lichtschein auf Objekte

Um einem Objekt ein oder mehrer Lichtquellen zuzuweisen, gibt es nur einen sehr einfachen Befehl.

[illumination_interior]

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 Zahlen 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 Lichtschein 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

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

Füer 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, kann das Fahrerlicht die Sitzreihen an der Türseite anleuchten, aber nicht die Sitzreihen hinter dem Fahrerplatz, 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). Als Ersatz kann man die dritte Deckenleuchte nutzen, was einen negativen Effekt hat, weil diese weit weg ist und die Rückseiten der Sitze heller erscheinen könnten als die Sitze auf der Türseite.

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).

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 engeleuchtet, 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.Da der Lichtschein, durch objekte hindurch scheint, würden hiermit, zum Beispiel auch die Räder beleuchtet. Um dies auszuschließen wird eine Lichtzuweisung ohne Lichtpunktnummer 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 denm Bus eingesetzt wird. Hier sollte man den Boden auftrennen. Das selbe gilt auch für die gesamte Innenseite der Karosserie.

Zuweisung des Lichtschein 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.

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. Die Positionen der Abreißblöcke (zum geben der Fahrkarten) wird in die Busdatei geschrieben. Dort wird 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.


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üßen. Damit wird aber vor dem Fahrzeug zusammen die Straße nicht beleuchtet. In der model.cfg werden aber mehrere Spotlichter eingestellt. So gibt es eine 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 eindetzten, die Zusatz- und Nebelscheinwerfer einbinden. Diese müßen 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.

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 sehr viele 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.

Zusammenfassung:
Vorteile <-> Nachteile

Viele Einstellmöglichkeiten

Immer nur ein einziges Spotlicht aktivierbar

Verschiedene Spotlichter nacheinander anpassbar

Nur am Spielerfahrzeug einsetzbar

Unabhängig von anderen Lichtern oder Objekten

Umsetzen des Spotlichts

Die Einstellungen sind sehr einfach und leicht erklärt. Zuerst folgt wieder der Befehl, gefolgt von 12 Strings (Zeilen) die entsprechende Werte erhalten.

[Spotlight]

  1. Position auf der X-Achse
  2. Position auf der Y-Achse
  3. Position auf der Z-Achse
  4. Ausrichtung auf der X-Achse
  5. Ausrichtung auf der Y-Achse
  6. Ausrichtung auf der Z-Achse
  7. Farbwert Rot
  8. Frabwert Grün
  9. Farbwert Blau
  10. Reichweite des Lichtes
  11. innerer Lichtkegel
  12. äußerer Lichtkegel

Auch hier sind die einzelnen Positionen einfach und klar. Mit den ersten drei Positionen 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 Bus mitte 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. Wird dieser nicht weit genug nach vorn gesetzt, dann beleuchtet das Spotlicht den Schatten des Busses 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 den Scheinwerfern 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 X-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 ges geschalteten Lichtes. Abblendlich allein hat die geringste Reichweite. Die Angaben werden in Metern eingetragen. Ein Wert von 200 meter sollten bebei 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 auß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 Spotliocht mit Zusatzscheinwerfern ist eine höhere seitliche Ausleuchtung passend. Diese werden ann in Winkelgraden eingetragen.

Das waren schon die Einstellungen zum Spotlicht. Da dieser 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. Mit anderen Variablen kann dann der Wert der Variable "Spot-select" erhöht werden. Der Wert Null, ist dann ausreichend um den ersten eingetragenen Wert anzuzeigen. 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 dieser VBefehlsfolgen ausgelesen werden.

Auch die Umsetzung der einzelnen Frontbeleuchtungen ist dabei einfach. In der Model.cfg werden die Spotlichter unter einander 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: geringeste 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 die Zusatzscheinwerfer, einen eigenem Spotlicht geben, dass dann ohne Abblend- oder Fernlicht funktioniert und nur mit dem Standlicht geschaltet wird.

Im Script kann man dann die Reihenfolge der Eintragungen nacheinander abfragen:

-1 = Kein Spotlicht,

0 = Fernlicht ohne Zusatzscheinwerfer,

1 = Abblendlicht ohne Zusatzscheinwerfer,

2 = Fernlicht mit Zusatzscheinwerfer,

3 = Abblendlicht mit Zusatzscheinwerfer aber ohne Fernlicht (Fernlicht überlagert das Abblendlicht),

4 = Zusatzscheinwerfer ohne sonstiger Frontbeleuchtung.



Allgemeines zu 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 es 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.


Danksagungen

Man kann natürlich nicht alles wissen und auch beim Licht gibt es noch eine Menge mehr zu sagen. Aber 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. Bei Fragen zum Thema Fahrzeugbeleuchtung kann man mich Tatra, auch gern im offiziellen Omsi-Forum anschreiben, solange das Forum noch existiert.

Geschrieben von Tatra