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-06-05, 18:02   #1
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
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, 17:11   #2
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 163
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, 21:54   #3
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
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, 17:36   #4
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 163
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, 19:25   #5
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 163
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, 20:37   #6
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
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
Gammal 2021-06-09, 16:37   #7
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 163
Standard

Det var verkligen snabbt marscherat med "luck-scriptandet". Verkar ju inte särskilt komplicerat att lägga till i mitt loks script (i princip samma som till loket Thor).

Att kunna öppna luckorna manuellt verkar mycket intressant, hade faktiskt funderat på om det skulle vara möjligt. Blev inte riktigt klok på om det sista med "SetMeshAnimationState", gäller för manuellt öppnade eller hör till det automatiska.

Måste verkligen ta i tu med att börja sätta mig in i scriptande , det finns ju grundläggande turorials någon stans på Aurans site.

Skulle vara oerhört tacksam om hjälp med scripten om jag skulle stöta på patrull (vilket jag förmodligen kommer att göra)
tanigardi 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 17:00.


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