Svenska 3D-Tåg - Forum  
 

Om det här är ditt första besök, se till att gå till vår FAQ (finns även länk till FAQ i navigeringsmenyn ovan). Du kan behöva att registrera dig innan du kan posta (finns även en länk till registrering i navigeringsmenyn ovan). För att titta på inlägg, välj det forum som du vill besöka från de som är listade nedan.

Gå tillbaka   Svenska 3D-Tåg - Forum > N3V Trainz > 3D-design - Trainz

Svara
 
Ämnesverktyg Visningsalternativ
Gammal 2021-05-07, 00:21   #1
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 733
Standard

vovven:
"Preview asset" i CM är ett bra tips, jag använde det verktyget när jag gjorde LOD till mina G3-godsvagnar kommer jag ihåg. I det fallet så testade jag även att sätta ut flera godsvagnar på olika spår i Surveyor och bara flytta kameran fram och tillbaka för att se hur tydliga övergångarna mellan LOD-nivåerna var. I fallet ånglok har man ju oftast bara en sådan per tågset, medan G3-vagnar kan förekomma i långa rader. Det gör ju att det kan vara svårare att dölja LOD-övergångarna, då det lätt märks när man kan jämföra utseendet på två vagnar som står bredvid varandra.

Mazz:
Tackar för svar, för visst gav det lite mer information i saken i alla fall!

Rely:
Ah, hade ingen aning om att du pysslade med verkliga tåg också, kul!
Tack för mycket nyttig info!
Det låter som att NS fungerar snarlikt som N, bara att NS har enbart ett glasrör som alla 6 pumpar får samsas om, medan N har ett glasrör per pump.

Nu blir det lite räknande, för sådant tycker jag är kul!
Jag kollade lite närmare i Ånglokläran och upptäckte att det faktiskt står angivet hur mycket olja ett pumpslag ger! Inte första gången man upptäcker att de mest till synes oväsentliga detaljer finns beskrivna. Bra bok det där! Det är angivet till 0.4 cm³ per slag för inställning 10 och en tiondel av det på inställning 1. Då kan man börja räkna lite:
För en Friedmann typ N så är volymen på glasröret ungefär 9.5 cm³. Dessutom så är volymen på en behållare (alltså för en av de 6 smörjställena) ungefär 1350 cm³ enligt ritningen i Ånglokläran. Dessutom så styrs smörjpumpen av en vickaxel som drivs av drivhjulen plus ett spärrhjul som roterar pumpens axel. Så pumpen pumpar alltså snabbare ju snabbare man kör. Enligt mina uppskattningar på min modell över Sa-loket där jag hjälpligt modellerat drivningen med vickaxeln inne i hytten med ögonmått så är utslaget på vickaxeln som driver spärrhjulet ungefär 15 grader per drivhjulsvarv. Så det ger att vi har 24 drivhjulsvarv per helt smörjpumpsslag. Sb:n drivhjulsdiameter är 1.75 meter, vilket ger en omkrets på ca 5.5 meter. Med lite matte får jag det till ~7.6 smörjpumpslag per kilometer. På inställning 10 innebär det att en tur på 18 mil på inställning 10 drar 546 cm³ (=ca en halvliter), alltså ~40% av den totala mängden i behållaren för en pump. Det låter ändå rimligt baserat på Mazz uppskattningar. Enligt mina beräkningar innebär det att 2 mil med inställning 10 på alla rattarna ger en total oljeåtgång på 0.36 liter för alla de 6 pumparna, vilket stämmer hyfsat med Mazz uppskattning om hur mycket han brukar fylla på vid varje utsmörjning också. Kanske att jag tog i lite för lite med 15 grader per drivhjulsvarv på utslaget till vickaxeln plus att man ju rullar lite till och från stall och kanske vevar lite på pumpen manuellt osv.
Enligt mina beräkningar skulle ett helt varv med veven på en Friedmann typ N på inställning 5 suga ca 1.8 mm ur cylindern. Så det låter även rimligt med Relys uppskattning. Mätte lite på typ NS i Ånglokläran och de verkar ha typ samma mått på glasröret som N, men det är lite svårt att mäta på en så liten ritning. Hittade ingen angivelse om mängd olja per slag för NS, men misstänker att den är snarlik typ N.

Nu ska jag ta med mig det här och se om det går att få till någon simulering av detta i spelet.
__________________
-k-
korvtiger besöker inte forumet just nu  
Svara med citat
Gammal 2021-06-05, 19:02   #2
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 733
Standard

Sedan sist har jag fortsatt att greja med olika saker. Har bland annat scriptat/simulerat Friedmann pumpen. Kanske visar någon video på det längre fram.

En sak som jag inte riktigt gjorde klart på den exteriöra modellen var luckorna till kolboxen och vattentanken. Jag fixade kolboxen efter att ha detaljgranskat en drös med bilder och videos. Detta var inte jättesvårt då man ofta verkar lasta Sa-lok med så pass mycket kol att luckorna inte går att stänga. Bra, för då kan vi modellerare lätt se hur luckorna ser ut! Luckorna till vattentankarna var desto svårare att klura ut hur de såg ut. Och så plötsligt häromdagen så tipsades det om en kortfilm på SVT play där man faktiskt ser det hela uppifrån! Det löste de sista pusselbitarna till hur luckorna skulle utformas och animeras.

Såhär ser det ut i spelet:

WIP33_ingame_water_hatch.jpg
Har varit lat och inte mappat om de nya ytorna, så texturerna ser inte så bra ut (än)

Testade även displacementmapping på kolet i kolfickan. Kanske ska prova att köra det på hela loket för att få detaljerna att bli lite tydligare.

Och filmen tycker jag också att ni ska kolla in! Det är en 14 minuters skildring om en liten pojke som åker tåg från Malmö och Simrishamn runt år 1960. Väldigt fina vyer på tåget och allt runtomkring. I filmen förekommer flera olika Sa-individer (eller bara S som de hette 1960), dock inte 1277 som gick i Kristinehamnstrakten vid denna tiden. Man ser att det är flera olika individer om man kikar närmare på detaljer som vattentankens utformning, gasbehållarens placering, tanklocket på sidan av kolfickan osv. Loket som tar vatten har samma utformning på tanklocket som 1277 i alla fall och är något av de senare loken. Flera vyer från hytten och när man ser från loket framåt mot banan är dock filmade ifrån ett E-lok ifall ni inte får ihop var sidotankarna tog vägen!

https://www.svtplay.se/video/31248586/sommartag
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat
Gammal 2021-06-07, 18:11   #3
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 168
Standard

Roligt att se att ditt projekt går framåt, kommer att bli ett otroligt fint lok.

När det gäller displacementmap på hela mesh så har jag lite dåliga erfarenheter av det, problemet är att få "höjden" att stämma överens mellan de olika objekten och texturerna. Dessutom blir det gärna förskjutningar i hörnen utanför uv't när man roterar och kan då ge väldigt konstiga effekter. Jag förmodar att du med displacement menar alfakanalen i normalmappen. På enstaka ganska flata objekt som t.e.x. som kolet i kolboxen eller fyren fungerar det bra. I fyren märkte jag också att en ganska överdriven displacementmap kan ge effekten av små lågor.

Är också nyfiken på hur du konfigurerar (och scriptar) kolboxluckorna eftersom BLJ 6 också har lucka över kolboxen (i alla fall under BLJ-tiden).
tanigardi besöker inte forumet just nu   Svara med citat
Gammal 2021-06-07, 22:54   #4
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 733
Standard

Exakt, med displacement menar jag att ta med alphakanalen i normal-mappen. Intressant med dina erfarenheter av det. Märkte att det var svårt att veta hur kraftfull effekten skulle bli när jag gick från Mixer till TRS2019, de har två helt olika tolkningssätt av höjden. Jag har inte hittat någonstans om det finns definierat hur stor en nyansskillnad i displacementmappen motsvarar i Trainz, men det kanske står någonstans så man kan räkna ut hur hög kontrast man vill ha.

Intressant att du tar upp fyren som exempel. Jag hade tänkt att ge mig på den snart också och skulle vilja ha den animerad på något sätt så att den flammar och gärna så att färgen ändras beroende på fyrens temperatur. Kollade på hytten till QR PB15 loket som finns med i simuatorn, som har snygga sådana effekter. Tyvärr är texturerna i .texture-format så det är lite svårt att se hur man har gjort. Där har man i alla fall scriptat för att få till flammorna tror jag. Ska kolla närmare där sedan. Vill minnas att det fanns något inbyggt att man skulle namnge meshen till något speciellt för att detta skulle ske automatiskt på gamla TRS2006-tiden, men det kanske man har slopat?
Hur har du gjort med fyren?

Jag har animerat och exporterat höger och vänster tanklucka samt kolboxluckorna som separata mesher. Animationen går från stängda vid frame 0 till öppna vid frame 29.
Sedan håller jag på med scriptingen. Jag stötte på ett problem där. När lastningen startar och stoppar så får man ett anrop från Trainz till lokets script som säger att en lastning håller på att sättas igång/stoppas som låter en göra saker som att starta/stoppa animationer eller rökeffekter, m.m. Det anropet skickar med en LoadingReport som ska innehålla vilken Queue som produkterna flyttas från och vilken Queue de flyttas till. Hade den faktiskt innehållit den datan så hade det varit trivialt att kolla om de flyttas till vatten- eller kol-queuen och bara öppna/stänga rätt lucka. Men tyvärr verkar så inte vara fallet, för den queuen är inte definierad (Eller satt till null som det heter). Jag ska undersöka saken närmare och kanske fråga om det på internationella forumet.
Men det går att lösa på ett lite krångligare sätt genom att man kollar vilka produkter som producern (vattenskastaren/kolbryggan/etc.) erbjuder och ser om det är antingen en water eller coal asset. När jag klurat ut hur jag ska göra kan jag naturligtvis dela med mig av scriptet här för de som är intresserade!
Om det är någon som har koll på något bra lok/tender där olika luckor öppnas beroende på om man lastar vatten eller kol, så får ni gärna säga till!
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat
Gammal 2021-06-08, 18:36   #5
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 168
Standard

Kolbädden har jag satt upp ett material med emission i Blender.

fyr_emit.jpg

Bakade ut emission materialet, sparade av det för att kopiera över det till albedon i materialet för trainz (maskade förståss av allt utom kolbädden), sedan gjorde jag en svartvit version av mitt emission-materialet som sparade av för att sedan kopiera in det i det slutliga materialet för Trainz. Resten av fyrens, valvets och väggarnas material satte jag upp med "area light" under kolbädden och bakade ut och gjorde på samma sätt med kolbädden. Materialet till Trainz består av både kolbädden, fyrens väggar och valvet.

Vad gäller displacementet på kolbädden använde jag mig av AO-mappen som ingick i PBR-materialet som jag laddat ned. Justerade den i Gimp så att de högsta punkterna var helt vita. Bakade ut den till lämplig ställe på Principeld BSDF (tror att jag valde metallic) och lade in den i normalmappens alphakanal.

Vad gäller nivåerna i height i normalmappen så har jag förstått det så att Trainz tolkar det så att 100% vitt är i nivå med meshet och alla mörkare nyanser hamnar lägre än meshets nivå, vilket gör det ju väldigt svårt att få att fungera när det är ett komplicerat objekt som är texturerat.
tanigardi besöker inte forumet just nu   Svara med citat
Gammal 2021-06-08, 20:25   #6
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 168
Standard

Hade tänkt att lägga upp en bild på fyren i Trainz, men forumet ville tydligen inte att jag skulle posta den

Här kommer den (förhoppningsvis).

fyr.jpg
tanigardi besöker inte forumet just nu   Svara med citat
Gammal 2021-06-08, 21:37   #7
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 733
Standard

Ah, väldigt snyggt! Jag ska se om jag kan knåpa ihop något liknande!

Fixade färdigt med scriptet för att öppna rätt lucka beroende på om det lastas kol eller vatten idag. Här är de relevanta delarna:

Kod:
class #### isclass STLSteamEngine {

    Asset coalAsset;
    Asset waterAsset;

    public void Init() {
        inherited();
        
        .... // Initialize STLSteamEngine things

        coalAsset = me.GetAsset().FindAsset("coal");
        waterAsset = me.GetAsset().FindAsset("water");
    }


    float BeginLoad(LoadingReport report) {
        int i;
        for (i = 0; i < report.srcQueue.GetProductList().size(); i++) {
            if (report.srcQueue.GetProductList()[i] == coalAsset) {
                // Öppna kolboxluckorna
            }
            else if (report.srcQueue.GetProductList()[i] == waterAsset) {
                // Öppna vattentankluckorna
            }
        }
        return 1.0;
    }


    float EndLoad(LoadingReport report) {
        int i;
        for (i = 0; i < report.srcQueue.GetProductList().size(); i++) {
            if (report.srcQueue.GetProductList()[i] == coalAsset) {
                // Stäng kolboxluckorna
            }
            else if (report.srcQueue.GetProductList()[i] == waterAsset) {
                // Stäng vattentankluckorna
            }
        }
        return 1.0;
    }

};
I min version har jag dock gjort så att man kan öppna luckorna manuellt genom menyn som dyker upp om man högerklickar på loket i driver och väljer "View details". Jag har gjort likadant på Lans Sb och B lok som finns på STLs hemsida.

Init är den metod som anropas först när man skapar ett lok av denna typen och den letar först reda på referenser till Assetsen för coal och water och sparar dem i variablerna coalAsset och waterAsset. Sedan är det BeginLoad och EndLoad som anropas före och efter lastningen sker. Dessa är väldigt lika. Jag har en for-loop som går igenom alla produkter som kommer att lastas enligt den LoadingReport som skickas med till dessa metoder. Sedan kollar jag bara att om någon av de produkter som lastas är coalAsset eller waterAsset så får man lägga till kod för att öppna/stänga luckorna. Det gör man antagligen med:

Kod:
SetMeshAnimationState("tank_lid", true);
för att öppna och
Kod:
SetMeshAnimationState("tank_lid", false);
för att stänga, ifall meshen heter tank_lid i mesh tablen. Dessa animerar till sista respektive första framen i animationen för meshen.

Antagligen har du redan ett script till ditt lok, så då är det bara att lägga till de nya delarna från exemplet ovan. Init metoden finns redan, så där räcker det med att kopiera in de två sista raderna med coalAsset = ...osv. BeginLoad och EndLoad är bara att kopiera och klistra in, samt lägga till kod för att faktiskt öppna eller stänga luckor och så vidare.
Om du skulle behöva hjälp att scripta loken sedan så är det bara att säga till så kan jag hjälpa till!
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat
Svara


Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av
Forumhopp



Alla tider är GMT +2. Klockan är nu 01:19.


Powered by vBulletin® Version 3.7.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
© Svenska 3D-Tåg 2001-2009