Sådan laves der lys på lokomotiver og vogne

 

 

Download som PDF-fil, klik på billedet.

 

Oversat frit fra How_To_Specify_Lights.doc der følger med MS Train Simulator

 

Af

Kenneth Fogh Jakobsen

[YAZZY]

www.train-sim.dk

Indledning *

Afsnit 1: Indstilling af betingelserne *

Mulige Betingelser *

Afsnit 2: Definitioner af lys *

a). Type *

b). Fade-in og Fade-out tider *

c). Cycle *

d). States *

Angle (n) ( Kun til lyskegler ) radiusen af lyskeglen i grader. *

Bilag A – Eksempler *

Eksempel 1 – Me1505’s frontlanterner *

Eksempel 2 – Me1505’s computer kontrollerede lys. *

Eksempel 3 – Me1505’s røde slutlygter *

Bilag B – En kort forklaring til hexadecimaltal ( På engelsk ) *

Indledning

Når du laver lokomotiver og vogne til Microsoft Train Simulator, kan du bruge det indbyggede belysnings system for at simulere de forskellige slags lys, så som front og baglanterner, advarselslys, markeringslys og lysskilte. Både computer-kontrollerede og spiller styrede tog kan have lys på. Dette lys kan være konstant eller det kan blinke, eller det kan skifte alt efter bestemte parametre (vejret, nødbremsninger) og det kan sættes til at tænde automatisk alt efter tidspunktet på dagen eller vejret.

"Light" er en særlig del af lokomotivets/vognens .eng fil (den fil der angiver de fysiske kendetegn for enheden, så som højde, vægt og dets førerrums kontroller). I bund og grund, kan vilkårene defineres, så det lys der skal være tændt også er tændt.

Lige som alle filer der kan redigeres i Train Simulator, kan også .eng filen redigeres i det i Windows medfølgende program WordPad.

 

 

Afsnit 1: Indstilling af betingelserne

Den første ting du skal gøre er, at bestemme hvornår du vil have lygterne eller lyset til at være tændte. Dette gøres ved at tilføje et antal parametre for at definere betingelserne for det lys det drejer sig om. Hvis der ikke er angivet nogle betingelser, vil lyset altid være tændt.

Mulige Betingelser

Headlight (0) ( Ignorer lygtekontakt stilling )

Headlight (1) ( Lygtekontakt er sat til "Slukket" )

Headlight (2) ( Lygtekontakt er sat til "Kort Lys" )

Headlight (3) ( Lygtekontakt er sat til "Langt Lys" )

Unit (0) ( Ignorer lygtens placering )

Unit (1) ( Lygten er i toget, men er hverken forrest eller bagerst i toget )

Unit (2) ( Lygten er placeret forrest i toget )

Unit (3) ( Lygten er placeret bagerst i toget )

Penalty (0) ( Ignorer nødbremse status )

Penalty (1) ( Toget er ikke standset p.g.a. en "nødbremse situation" )

Penalty (2) ( Nødbremset ) ( Toget er standset p.g.a. en "nødbremse situation". Bruges især i forbindelse med advarselslys )

Control (0) ( Ignorer enhedens kontrol status )

Control (1) ( Spilleren kontrollerer ikke enheden [dvs. at det er et hjælpe lokomotiv eller en vogn )

Control (2) ( Spilleren kontrollerer enheden )

Service (0) ( Ignorer enhedens drift status )

Service (1) ( Enheden er ikke i drift. F.eks. Et nedbrudt tog på et sidespor )

Service (2) ( Enheden er i drift )

TimeOfDay (0) ( Ignorer tidspunkt på dagen )

TimeOfDay (1) ( Lyset tændes kun I dagen )

TimeOfDay (2) ( Lyset tændes kun om natten )

Weather (0) ( Ignorer vejr situationen )

Weather (1) ( Lyset tændes kun hvis vejret er fint )

Weather (2) ( Lyset tændes kun hvis det regner )

Weather (3) ( Lyset tændes kun hvis det sner )

Coupling (0) ( Ignorer enhedens koblings status )

Coupling (1) ( Der er koblet noget på enhedens originale forende )

Coupling (2) ( Der er koblet noget på enhedens originale bagende )

Coupling (3) ( Der er koblet noget på begge ender af enheden )

 

 

 

 

 

 

Afsnit 2: Definitioner af lys

Når først du har defineret betingelserne, skal du opliste alle de lygter der skal lyse når de opfylder betingelserne.

a). Type

Der kan defineres to typer lys i Train Simulator.

Lysskæret. Et lysskær er forholdsvis simple i form af fremstillingstiden og er perfekte til at bruge, når du blot vil vise, at en lygte er tændt i stedet for at være slukket. Det har ingen virkning på polygonerne omkring sig ( Det vil ikke oplyse omgivelserne ).

Lyskeglen. Et "rigtigt lys" som oplyser de omkringliggende omgivelser. Denne kræver lidt mere fremstillingstid end lysskæret, og vil være brugeligt når du oplyse et område, frem for at vise, at det bare er en tændt lygte. Frontlanterne kan med fordel udnytte denne mulighed, da man så kan simulere lyset fra lysskæret i frontlanternen.

Type (n) ( n=0 er et lysskær, n=1 er lyskeglen )

b). Fade-in og Fade-out tider

Disse værdier lader dig simpelt definere antallet af sekunder det vil tage lyset at skifte fra den ene til den anden lysstyrke når det er tændt, og det antal sekunder det tager for lyset at dø ud når man slukker det. Hvis du angiver 0 i begge værdier, vil lyset tænde eller slukke øjeblikkeligt.

FadeIn (t) ( t = tiden i sekunder )

FadeOut (t) ( t = tiden i sekunder )

c). Cycle

Hvis værdien er sat til 1, vil lyset skifte mellem stadierne, først frem og derefter tilbage igen ( F.eks. 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4… ) Hvis værdien er sat til 0, vil stadierne skifte i samme rækkefølge gentagne gange ( F.eks. 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2… )

Cycle(n) ( n = 0 kører lyset i samme rækkefølge, n = 1 kører lyset skiftevis frem og tilbage )

d). States

Et lys har et antal stadier – et stadie er den lysstyrke som lygten brænder med i en bestemt periode. Stadierne kan køres igennem i samme rækkefølge eller skiftevis frem og tilbage ( se ovenover ). For eksempel, for at definere en blinkende rød lygte, vil du definere et stadie hvor lygten lyser i et sekund og derefter et stadie hvor den er slukket i et sekund. Når der så derefter skiftes mellem de to stadier, vil det se ud som om lygten blinker. Ved at ændre farverne, placeringen og varigheden, kan du få lyset til at virke som om det skifter farve, flytter sig rundt eller blinker.

 

 

 

Et stadie kan indeholde følgende værdier :

Duration (t) Specificerer varigheden af dette lysstadie hvor t er tiden i sekunder.

Colour (aarrggbb) Dette er en 32-bit hexadecimal værdi der angiver farven og gennemsigtigheden af lyset.  aa, rr, gg, bb er 8-bit hexadecimal værdier der angiver gennemsigtigheden ( hvor "solidt" lyset er - dette har kun effekt på lysskæret ) og de røde, grønne og blå farvekomponenter af lysets farver henholdsvis.

( Hvis du ikke har kendskab til hexadecimaltal, er der en kort forklaring inkluderet i bilag B ).

Position (x y z) Lygtens placering afsat efter koordinaterne målt fra centrum af enheden.

Radius (r) Dette er radiusen på virkefeltet i lyskeglen og radiusen af polygon "skiven" for lysskæret.

Azimuth (min centre max) Denne angiver retningen (rotationen omkring Y-aksen ) af lysskæret – i det enkleste tilfælde kan min, centre and max alle sættes til dem vinkel ( målt i grader ). I mere kompleks situationer, hvor du ønsker at definere lysbuen, kan du f.eks. specificere henholdsvis -45, 0 og 45 grader for at producere en 90 graders lysbue.  I bund og grund vil lysskæret altid prøve at vende sig mod kameraet, men kan begrænses af azimuth og elevation indstillingerne.  Den bedste måde at se hvad værdierne gør, er at eksperimentere – indstil en lygte med nogle værdier og flyt så rundt med kameraet, for at se hvad der sker.

Elevation (min centre max) Denne angiver højden ( rotationen omkring X-aksen ) af lysskæret og ( til forskel fra den anden akse effekt ) virker identisk med azimuth.

Transition (n) Denne angiver hvordan overgangen fra et stadie til det næste indtræffer - hvis n er lig med nul vil overgangen ske øjeblikkeligt, hvis den er sat til et, vil parametrene for lyset være indføjet fra dette stadie til det næste.

 

Angle (n) ( Kun til lyskegler ) radiusen af lyskeglen i grader.

 

Bilag A – Eksempler

Her er nogle få eksempler, taget fra min ændrede Me1505.eng fil.

 

Eksempel 1 – Me1505’s frontlanterner

Lights ( 19

Light (

comment ( Spiller kontrolleret Lys )

comment ( 1 )

comment ( Langt lys )

Type( 1 )

Conditions (

Control ( 2 )

Headlight ( 3 )

Unit ( 2 )

)

Cycle ( 0 )

FadeIn ( 0.5 )

FadeOut ( 0.5 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffff )

Position ( 0.0 3.5 10.28 )

Transition ( 0 )

Radius ( 400.0 )

Angle ( 45.0 )

)

)

)

Light (

comment ( Kort lys )

comment ( 2 )

Type( 1 )

Conditions (

Control ( 2 )

Headlight ( 2 )

Unit ( 2 )

)

Cycle ( 0 )

FadeIn ( 0.5 )

FadeOut ( 0.5 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( 80ffffff )

Position ( 0.0 3.5 10.28 )

Transition ( 0 )

Radius ( 90.0 )

Angle ( 45.0 )

)

)

)

Light (

comment ( Øverste frontlanterne med langt lys )

comment ( 3 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 3 )

Unit ( 2 )

)

FadeIn ( 0.5 )

FadeOut ( 0.5 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffff )

Position ( 0.0 3.58 9.463 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 1 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment ( Højre frontlanterne med langt lys )

comment ( 4 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 3 )

Unit ( 2 )

)

FadeIn ( 0.5 )

FadeOut ( 0.5 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffff )

Position ( -0.867 1.497 9.927 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 0.95 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment ( Venstre frontlanterne med langt lys )

comment ( 5 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 3 )

Unit ( 2 )

)

FadeIn ( 0.5 )

FadeOut ( 0.5 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffff )

Position ( 0.868 1.497 9.927 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 0.95 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment ( Øverste frontlanterne med kort lys )

comment ( 6 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 2 )

Unit ( 2 )

)

FadeIn ( 0.5 )

FadeOut ( 0.5 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffbb )

Position ( 0.0 3.58 9.463 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 0.75 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment ( Højre frontlanterne med kort lys )

comment ( 7 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 2 )

Unit ( 2 )

)

FadeIn ( 0.5 )

FadeOut ( 0.5 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffbb )

Position ( -0.867 1.497 9.927 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 0.65 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment ( Venstre frontlanterne med kort lys )

comment ( 8 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 2 )

Unit ( 2 )

)

FadeIn ( 0.5 )

FadeOut ( 0.5 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffbb )

Position ( 0.868 1.497 9.927 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 0.65 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Eksempel 2 – Me1505’s computer kontrollerede lys.

Light (

comment ( Computer kontrolleret Lys )

comment( Øverste frontlanterne med kort lys )

comment ( 13 )

Type( 0 )

Conditions (

Control ( 1 )

Unit ( 2 )

Service ( 2 )

TimeOfDay ( 0 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffbb )

Position ( 0.0 3.58 9.463 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 0.75 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment( Højre frontlanterne med kort lys )

comment ( 14 )

Type( 0 )

Conditions (

Control ( 1 )

Unit ( 2 )

Service ( 2 )

TimeOfDay ( 0 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffbb )

Position ( -0.867 1.497 9.927 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 0.75 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment( Venstre frontlanterne med kort lys )

comment ( 15 )

Type( 0 )

Conditions (

Control ( 1 )

Unit ( 2 )

Service ( 2 )

TimeOfDay ( 0 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffffffbb )

Position ( 0.868 1.497 9.927 )

Azimuth ( 0.0 0.0 0.0 )

Transition ( 0 )

Radius ( 0.75 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

 

Light (

comment( Venstre slutlygte med kort lys )

comment ( 16 )

Type( 0 )

Conditions (

Control ( 1 )

Unit ( 2 )

Service ( 2 )

TimeOfDay ( 0 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffff0000 )

Position ( -0.593 1.497 -9.950 )

Azimuth ( -180 -180 -180 )

Transition ( 0 )

Radius ( 0.6 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment( Højre slutlygte med kort lys )

comment ( 17 )

Type( 0 )

Conditions (

Control ( 1 )

Unit ( 2 )

Service ( 2 )

TimeOfDay ( 0 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffff0000 )

Position ( 0.589 1.497 -9.950 )

Azimuth ( -180 -180 -180 )

Transition ( 0 )

Radius ( 0.6 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Eksempel 3 – Me1505’s røde slutlygter

Light (

comment( Venstre slutlygte med langt lys )

comment ( 9 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 3 )

Unit ( 3 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffff0000 )

Position ( -0.593 1.497 -9.950 )

Azimuth ( -180 -180 -180 )

Transition ( 0 )

Radius ( 0.6 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment( Højre slutlygte med langt lys )

comment ( 10 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 3 )

Unit ( 3 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffff0000 )

Position ( 0.589 1.497 -9.950 )

Azimuth ( -180 -180 -180 )

Transition ( 0 )

Radius ( 0.6 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment( Venstre slutlygte med kort lys )

comment ( 11 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 2 )

Unit ( 3 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffff0000 )

Position ( -0.593 1.497 -9.950 )

Azimuth ( -180 -180 -180 )

Transition ( 0 )

Radius ( 0.6 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

Light (

comment( Højre slutlygte med kort lys )

comment ( 12 )

Type( 0 )

Conditions (

Control ( 2 )

Headlight ( 2 )

Unit ( 3 )

)

FadeIn ( 0.0 )

FadeOut ( 0.0 )

Cycle ( 0 )

States ( 1

State (

Duration ( 0.0 )

LightColour ( ffff0000 )

Position ( 0.589 1.497 -9.950 )

Azimuth ( -180 -180 -180 )

Transition ( 0 )

Radius ( 0.6 )

Elevation ( 0.0 0.0 0.0 )

)

)

)

 

Bilag B – En kort forklaring til hexadecimaltal ( På engelsk )

Hexadecimal is a base 16 counting system used by computers. Humans generally use base 10.  In base 10, we have a units column, a tens column, a hundreds (ten squared) column, etc. and numbers can be described by specifying a value for each column. For example, 57 has 5 in the tens column and 7 in the units column and (5 * 10) + 7 * 1 = 57. 

In base 16 you have a units column, a sixteens column, a 256s (16 squared) column, etc.  The extra
digits are A to F so you count in hex like this : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (10 in decimal), B (11 in decimal), C (12), D (13), E (14), F (15), 10 (remember this is hex so that's one in the 16s column and zero in the units column giving you 16). 

Another example the hex number 4D is 4 in the 16s column and D in the units column, but D is 13 so that’s (4 * 16) + (13 * 1) =64 + 13 = 77.

In the case of lights, hexadecimal values are used to set an alpha, red, green and blue value for a light. Each value is set by a two-digit hexadecimal number, so can be anything between 00 (zero) and FF (F in the 16s column and F in the units column, so since F=15 that’s (15*16) + (15*1) = 240 + 15 = 255). So a two-digit hexadecimal number can be anything between 0 and 255, i.e. there are 256 possible values.

Therefore the following setting:

0000FF00

…would result in a light that has no alpha (i.e. it’s completely "transparent"), no red, full green and no blue. The result would be a transparent green light.

A more realistic example is:

80ff0000

The first two values (80) control the alpha. 80 = 8*16 = 128, so this light will be half-alphaed, or semi-transparent.

The two red values are set to ff (255, as explained above) so the light’s red value is at maximum. Since the green and blue values are set to 00, the light will be bright red (if they were set to ff as well, the colours would combine together to form a bright white light).

One final example. The value:

60808000

Would result in a yellow, slightly more than half transparent (i.e. more transparent than the red light above) yellow light.