Visa ett inlägg
Gammal 2021-05-09, 18:59   #2
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 716
Standard

Ja, den där knorr_brake_lever är ju lite knöligt scriptat av mig.
Jag ska försöka förklara varför det fungerar som det gör. Du får gärna fråga om något är oklart

Problemet jag stötte på när jag skulle scripta den till STL:s Ångloksscript är att N3V kör med en förenklad implementation av Knorr (eller om det är så att Westinghouses system fungerar på det sättet) med fyra steg: "release" = 0, "lap" = 1, "application" = 2 och "emergency" = 3. När jag säger 0-3 här så menar jag de interna värdena som dessa steg motsvarar, vilket releterar till limits och notches i configen.
Kollar man på andra lokhytter i spelet så använder de antagligen limits 0, 3 och fyra stycken notches på 0, 0.333, 66.666 och 1.0, vilket då resulterar i att man får 0, 1, 2 och 3 som värden ut. Men Trainz använder decimaltal för att representera alla lägen som en lever i hytten kan vara i och avrundar det till närmaste heltal när det behövs, så i vårt fall blir värdet för maxutslaget 3.49 just 3 (= emergency)

Så varför knöla till det?

Jo, jag ville matcha de vinklar som en K16 ventil har och notches är ju både hur många procent av vinkeln som den notchen motsvarar och hur många procent mellan min och max limits som det värdet motsvarar, om du fattar vad jag menar. Båda dessa är linjära, men avstånden mellan stegen på en K16-ventil är ju inte det!

N3Vs implementation saknar ju mittläget, så det måste vi hoppa över. Dessutom så separerar inte N3v på loss och laddläget från gångläget så jag har skippat det förstnämnda. Så om man låter Y-axeln i attachmenten peka på loss- och gångläget i Blender så sätter första vinkeln i "angles" till 0.8 så kommer den peka på gångläget som första notch. Sedan har jag räknat ut notches och limits så att handtaget ska hoppa över mittläget, men stanna på bromsslutläget, driftbromsläget samt nödbromsläget och att dessa värden efter att de har avrundats av Trainz skall motsvara 0, 1, 2 och 3. Samma sak baklänges; om du trycker på "A" i Trainz och byter till application-läget så kommer värdet internt att vara 2, men Trainz hittar den närmsta notchen som är definierad i configen och flyttar meshen till att peka åt det hållet (vilket motsvarar driftbromsläget på K16-ventilen)
Knöligt, men det fungerar.

Så för att svara på dina frågor:

1. Nej, de har ingen enhet, utan är tal som skall avrundas till 0, 1, 2 och 3, vilket Trainz tolkar som de olika bromslägena. Anledningen till att jag inte kan välja ett högre tal än 3.49 är att 3.5 ju avrundas till 4.

2. Japp! 0.8 betyder ju att reglagets minimum-vinkel är 0.8 radianer medsols om dit Y-axeln på emptyn pekar på i Blender. 2.52 att maimum-vinkeln är så många radianer medsols om Y-axeln på emptyn.

3. Exakt, 0.8 och 2.52 är ju minsta och största vinkeln. Notches är sedan procentuellt hur långt mellan dessa vinklar notchen ligger. Samma sak med limits som ju är vilka "värden" min och max-vinklarna motsvarar. Har man 0 och 3.49 som i vårat fall så motsvarar notchen 0.58 alltså 58% av "utslaget" 3.49 - 0 vilket är 2.0242. Det avrundar sedan Trainz till 2 (= application)

Så som du kanske kommit fram till så borde allt fungera om du kopierar den delen ur configen från Sb-loket och låter Y-axeln peka på loss- och laddningsläget. Har du använt ritningen i Ånglokläran som underlag till modellen så borde vinklarna stämma, annars får du justera notches och/eller angles lite. Håll bara koll, om du ändrar för mycket kan avrundningen som Trainz gör bli fel och du får att fel visuella läge på handtaget motsvarar fel läge (release, lap, application..) som Trianz anger!
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat