Hallo zusammen,
ich bin Chris und neu hier.
Aber ich bin kein RS/RW-Newbie, ich hab angefangen, als das ganze noch Railsimulator und nicht Railworks hieß.
Ich finds toll das es hier so ein gutes Forum gibt mit jeder Menge Tips und Tricks.
Womit wir beim Thema wären.
Ich hab nämlich auch ein paar Tips & Tricks für euch.
In meinem RW3-Lokschuppen steht schon seit längerer Zeit die Class 66.
So weit, so gut.
Mit der Zeit ist die "66er" iwie zu der meistgefahrenen Lok geworden.
Allerdings und jetzt komme ich endlich zur Sache, hab ich mir gedacht, das ist doch unrealistisch, wenn da immer die gleiche Menge Rauch in der gleichen Farbe aus dem Auspuff kommt.
Daraufhin kam die 66 ins AW und ich begann erste Überlegungen, wie man den Rauch ändern könnte.
Nach einiger Zeit fand ich -auch durch Recherche in diesem Forum- einen Weg, die Menge und Farbe des Rauches zu ändern.
Das habe ich getan und bald fuhr die Lok mit anthrazitfarbenem Rauch über meine Strecken.
Damit war ich aber noch nicht zufrieden, denn es kam immer noch, egal welche Generatorladung, die gleiche Menge in der gleichen Farbe raus.
Da habe ich mir gedacht, das kann nicht sein und die 66 kam wieder ins AW und ich überlegte weiter.
Jedenfalls, um das ganze hier etwas abzukürzen; ihr merkt, ich beginne zu labern, zeig ich euch einfach mal, wie man ladungsabhängigen Rauch scripted.
Als Beispiel dient die Class 66.
Beginnen wir mit der Menge und Farbe, noch undynamisch.
Im Verzeichnis /Railsimulator/Railvehicles/Class66 ist der Ordner "Particles"
In ihm findet ihr die Datei "emd_66_exhaust" als .bin und .xml.
Zur korrekten Funktion müssen wir die .bin über Serz.exe in eine .xml umwandeln, welche wir mit Editor u.ä. bearbeiten.
Das sieht dann so aus:
<_fEmissionRate d:type="sFloat32" d:alt_encoding="000000A09999B93F" d:precision="string">0.01</_fEmissionRate>
<_fVelocityVariance d:type="sFloat32" d:alt_encoding="000000000000F03F" d:precision="string">1</_fVelocityVariance>
<_fResistanceFactor d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</_fResistanceFactor>
<_bIntense d:type="cDeltaString">eFalse</_bIntense>
<cHcColour>
<Red d:type="sFloat32" d:alt_encoding="000000009695D53F" d:precision="string">0.337255</Red>
<Green d:type="sFloat32" d:alt_encoding="000000009695D53F" d:precision="string">0.337255</Green>
<Blue d:type="sFloat32" d:alt_encoding="000000009695D53F" d:precision="string">0.337255</Blue>
<Alpha d:type="sFloat32" d:alt_encoding="000000A01611B13F" d:precision="string">0.066667</Alpha>
</cHcColour>
</_HcInitialColor>
<_HcMidColor>
<cHcColour>
<Red d:type="sFloat32" d:alt_encoding="000000009695D53F" d:precision="string">0.237255</Red>
<Green d:type="sFloat32" d:alt_encoding="00000040D4D2D23F" d:precision="string">0.194118</Green>
<Blue d:type="sFloat32" d:alt_encoding="00000040D4D2D23F" d:precision="string">0.194118</Blue>
<Alpha d:type="sFloat32" d:alt_encoding="000000A01E14A43F" d:precision="string">0.039216</Alpha>
</cHcColour>
</_HcMidColor>
<_HcFinalColor>
<cHcColour>
<Red d:type="sFloat32" d:alt_encoding="000000201615C53F" d:precision="string">0.164706</Red>
<Green d:type="sFloat32" d:alt_encoding="000000201615C53F" d:precision="string">0.164706</Green>
<Blue d:type="sFloat32" d:alt_encoding="000000201615C53F" d:precision="string">0.164706</Blue>
<Alpha d:type="sFloat32" d:alt_encoding="000000A0FD0F903F" d:precision="string">0.015686</Alpha>
</cHcColour>
</_HcFinalColor>
<_fPercSwitchToMidColor d:type="sFloat32" d:alt_encoding="000000A09999C93F" d:precision="string">0.2</_fPercSwitchToMidColor>
<_fSpin d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</_fSpin>
<_fSize d:type="sFloat32" d:alt_encoding="000000000000D03F" d:precision="string">0.25</_fSize>
<_fFinalSize d:type="sFloat32" d:alt_encoding="000000000000E83F" d:precision="string">0.55</_fFinalSize>
<_fLifeCycle d:type="sFloat32" d:alt_encoding="0000000000000040" d:precision="string">2</_fLifeCycle>
<_fParticleTemp d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</_fParticleTemp>
<_fParticleMass d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</_fParticleMass>
<_vSpinAxis>
Damit könnt ihr schonmal die Farbe und Menge verändern.
Die Farbe legt ihr mit den Zahlen vor Red, Green, Blue & Alpha fest.
1 heißt weiß, 0 ist pechschwarz.
Emission Rate legt die Menge fest, 0 ist nichts, 0.05 aufwärts schon ne Menge.
Unter den Farben legt ihr die Größe der Rauchsäule fest.
Bei fSize> und fFinalSize>; 0 ist nichts, 1 schon ziemlich riesig; es geht aber mehr als 1.
So weit, so gut.
Dynamischen Rauch bekommt man mit einem .xml File genannt EngineScript.
Diese findet ihr z.B. bei der Class 166.
Diese sieht so aus (schon für die Class 66 angepasst):
--------------------------------------------------------------------------------------
-- Engine Script for Class 66
--
-- (c) Railsimulator.com 2011
--
-- Provides script for variable exhaust smoke.
--
--------------------------------------------------------------------------------------
-- maximum tractive effort for determining smoke density. Acceleration rate for AI.
MAXTE = 0.7
ACCELRATE = 0.25
gSmokeColourR = 1.0
gSmokeColourG = 1.0
gSmokeColourB = 1.0
gEmitRate = 0.05
-------------------------------------------------------------------------------------
function Initialise ()
-- Get emitter values.
gSmokeColourR, gSmokeColourG, gSmokeColourB = Call( "Exhaust:GetEmitterColour" )
-- Stores for checking when values have changed.
gDriven = 0
Call( "BeginUpdate" )
end
-------------------------------------------------------------------------------------
function OnControlValueChange ( name, index, value )
if Call( "*:ControlExists", name, index ) then
Call( "*:SetControlValue", name, index, value );
end
end
-------------------------------------------------------------------------------------
function Update ( time )
-- Check for player train.
if Call( "GetIsPlayer" ) == 1 then
-- Check if player is driving this engine.
if ( Call( "GetIsEngineWithKey" ) == 1 ) then
if gDriven == 0 then
gDriven = 1
Call( "*:SetControlValue", "Active", 0, 1 )
end
else
if gDriven == 1 then
gDriven = 0
Call( "*:SetControlValue", "Active", 0, 0 )
end
end
-- Get tractive effort values for this vehicle.
TractiveEffort = Call ( "GetTractiveEffort" )
TractiveEffort = math.abs ( TractiveEffort )
else -- This is an AI train.
-- Tractive effort doesn't work for AI, so use acceleration.
Accel = Call( "GetAcceleration" )
Speed = Call( "GetSpeed" )
-- Unfortunately acceleration is signed based on direction loco is facing (sic).
if Speed < 0 then
Accel = Accel * -1
end
if Accel > ACCELRATE then
TractiveEffort = MAXTE
elseif ( math.abs(Speed) > 1 ) and ( Accel > -0.1 ) then
TractiveEffort = MAXTE/2
else
TractiveEffort = MAXTE/11
end
end
if TractiveEffort < MAXTE/10 then
gSmokeColourR = 0.197255
gSmokeColourG = 0.197255
gSmokeColourB = 0.197255
Call ( "Exhaust:SetEmitterColour", gSmokeColourR, gSmokeColourG, gSmokeColourB )
Call ( "Exhaust:SetEmitterRate", gEmitRate )
end
if ( TractiveEffort <= MAXTE/2 ) and ( TractiveEffort >= MAXTE/10 ) then
gSmokeColourR = 0.237255
gSmokeColourG = 0.194118
gSmokeColourB = 0.194118
Call ( "Exhaust:SetEmitterColour", gSmokeColourR, gSmokeColourG, gSmokeColourB )
Call ( "Exhaust:SetEmitterRate", 0.01 )
end
if TractiveEffort > MAXTE/2 then
gSmokeColourR = 0.164706
gSmokeColourG = 0.164706
gSmokeColourB = 0.164706
Call ( "Exhaust:SetEmitterColour", gSmokeColourR, gSmokeColourG, gSmokeColourB )
Call ( "Exhaust:SetEmitterRate", 0.005 )
end
end
Bitte lasst euch davon nicht einschüchtern, da müsst ihr nichts großartig programmieren, eigentlich läuft die Sache wieder nur mit den Zahlen.
Die Farben sind gleich wie bei der ersten Datei, die Zahlen laufen auch genauso.
Erweiternd könnt ihr bei "Exhaust:SetEmitterRate", 0.01" noch die Menge bei der angegebenen Ladung festlegen.
Damit der Rauch aber ladungsabhängig wird, müssen in der Datei "emd_66_script" die Drehzahlen angepasst werden.
Bei idlerpm muss 300, bei maxrpm 903.
Was auch noch zu tun ist, und das ist eigentlich das wichtigste, es muss bei z.B. "emd_66_green" noch "emd_66_script" in "emd_66_EngineScript" geändert werden. Bei der "emd_66_green" ists auch wieder der gleiche "Terz mit Serz"
Das mit der Ladungsabhängigkeit und der Farbe könnt ihr übrigens für jede Lok anders einstellen.
Ich denke, das wars fürs erste. Wenn ihr Fragen habt, nur zu, dafür sind wir ja hier im Forum.