Svenska 3D-Tåg - Forum

Svenska 3D-Tåg - Forum (http://www.e-buzz.se/forum/index.php)
-   3D-design - Trainz (http://www.e-buzz.se/forum/forumdisplay.php?f=12)
-   -   Ångloksprojekt (http://www.e-buzz.se/forum/showthread.php?t=28644)

ekankal 2017-10-10 05:59

Ser helt fantastiskt bra ut :tumme_upp:.

Vänersborgs_Stinsen 2017-10-10 08:31

Woow fasen va snyggt o verklighetstroget :tumme_upp::tumme_upp::applad:

Bengan 2017-10-10 09:00

Snyggt.

Som ett foto, på en gammal maskin.

Jockes 2017-10-10 16:03

Så grymt snyggt! :tumme_upp::drool:

korvtiger 2017-10-31 23:58

1 bifogad(e) fil(er)
Tackar, tackar! :D:)

Bygget går vidare i långsam takt. Sitter och modellerar igenom ritning efter ritning för att få till interiören. Det är många komponenter som ska dit med många kluriga former som kräver både goda ritningar och i många fall kompletterande bilder för att verkligen se hur det ska sitta ihop. Lite träning fick man ju förra året när jag hjälpte Lan med att bygga hytterna till B och Sb-loken. Det är de modellerna som jag gjorde då jag har använt till injektorerna. Resten är helt nymodellerat.

Sedan kommer ju det där med att passa ihop pusslet när alla delar man modellerat efter olika ritningar ska monteras in i hytten. Har redan fått slita hår över detta. Har nämligen scanningar av de otroligt detaljerade originalritningarna till Sa-lokens pannor (både den långa och den korta versionen) och där finns naturligtvis fästflänsarna för injektorerna och vattenståndsglasen utritade. Men! Dessa stämmer inte överens, varken till storlek eller form med fästflänsarna på de detaljritningar på själva injektorerna och vattenståndsglasen jag har. Trodde först att jag räknat ut storleken fel när jag satt upp ritningarna i Blender, men efter lite mätande med linjal i mitt exemplar av Ånglokläran så visade sig att jag hade rätt. Än mer spännande var att skruvhålen för injektorerna (som har varit standardiserade under hela 1900-talet) inte stämmer med varken injektorritningen eller verkligheten. Känns väldigt märkligt att en så pass viktig ritning skulle vara fel, men samtidigt, efter att ha studerat interiörbilder från ett 15-tal olika loktyper och individer så kan jag konstatera att alla dessa har samma placering av skruvhålen för injektorerna vilket inte är samma som på pannritningen.

Ibland så är det nästan bättre att inte har superdetaljerade ritningar, för det är lätt att gräva ned sig i sådana här saker som ingen människa kommer att tänka på när det är klart sedan.. :rolleyes:

Bifogad fil 75397

På bilden ser vi de delar jag byggt hittills. Här syns Knorr förarventilen (K16) för tryckluftsbromsen, direktbromsventil för lokbromsen, omkastaren, Greshams injektor, regulator, vattenståndsglas, eldstadsluckor, samt början till kronan med ångvisslans länkarmar. Är långt ifrån halvvägs modelleringsmässigt. Sedan kommer den faktiskt ganska roliga leken Följa John, när man ska lista ut hur alla ledningar är dragna. :)
Ser däremot inte fram emot att mappa och texturera allt detta... :rolleyes:
Hade dock tänkt vara lite smart och lägga alla vanliga delar, som regulator, injektorer, vattenståndsglas etc på en texture och alla lokspecifika som väggar, tak och fönster och sådant på en annan texture. Således bör det vara enkelt om man skulle få för sig att bygga fler hytter i framtiden.

Vänersborgs_Stinsen 2017-11-01 09:29

Fasen va snygggt det blir! Du får lycka till:tumme_upp:

lan 2017-11-01 16:58

Som gammal "defenestrerad" byggare blir man imponerad av Korvtigers behandling av alla finesser i Blender och av den precision och noggrannhet som präglar hans byggen.

Vi är alla glada att han fortsätter :tumme_upp::tumme_upp::tumme_upp:

ekankal 2017-11-02 03:54

Fantastiskt bra, ser nästan bättre ut än ett riktigt lok.

Vänersborgs_Stinsen 2017-12-29 17:51

Hur går det med Sa:n?

korvtiger 2017-12-30 00:44

Har dessvärre inte haft någon som helst tid över för detta projekt sedan senaste uppdateringen. Men förhoppningsvis blir det bättre med tid över inom några veckor! :)

Vänersborgs_Stinsen 2017-12-30 00:52

Citat:

Ursprungligen postat av korvtiger (Inlägg 310000)
Har dessvärre inte haft någon som helst tid över för detta projekt sedan senaste uppdateringen. Men förhoppningsvis blir det bättre med tid över inom några veckor! :)

Okej lycka till!!

korvtiger 2018-02-25 23:36

1 bifogad(e) fil(er)
Har haft annat att göra de senaste månaderna, så detta projekt har fått ligga i vila. Men nu till helgen fick jag tid och inspirationen åter (i alla fall tillfälligt.. :rolleyes:) och fortsatte bygga lite på interiören.

Det kanske inte ser ut som mycket har hänt sedan sist, men en del mindre grejer är fixade. Har spenderat mycket tid på väggar och tak. Har fått studera många olika bilder för att få det hela att gå ihop sig med dörr- och fönsterkarmar, reglar, lister och grejer som går en innanför, en utanför varandra. Men jag tror att jag har fått ihop det nu. Man kanske tycker att det måste vara svårast att modellera alla små reglage och spakar, men faktum är att jag nog tycker själva hytten med väggar och tak är svårast, då jag nästan helt saknar ritningsunderlag här. Jag får gå på ögonmåttet och jämföra med bilder, vilket kan vara ganska frustrerande. Sedan kommer ju den eviga frågan när man pysslar med 3D-modellering: hur långt ska man gå? Ska man räkna och sätta ut varenda skruvskalle i takbågarna? Ska man mejsla ut skarvarna mellan varje bräda i tak och väggar? Kommer någon att bry sig (förutom jag själv) om att fodret till dörrkarmen inte är helt korrekt?

Nytt sedan sist (förutom tak och väggar) är förarpallen och det lilla uppfällbara bordet, lägsta tillåtna vattenståndsvisaren till vattenståndsglasen, manometrar, takluckan (som inte syns i bild) och hyllan för oljekannan ovanför eldstadsluckan, bland annat.
Men det ser fortfarande väldigt tomt ut, vilket påminner om hur lång från klar man faktiskt är... :D

Bjuder på en lite grynig bild också, på hur det ser ut idag.
Bifogad fil 75956

Mazz 2018-02-26 01:04

Tomt? Nää, du börjar verkligen få grejjerna på plats, känns helrätt och bekant... Jovisst, saker ska till, inte minst dryga 1000 st. ( ;) ) rör, men när du får på lite färg på pinalerna så blir det hur bra som helst! Snyggt!!! Loket förövrigt är dessutom vansinnigt snyggt så hytten kommer matcha loket fint... :)

Vänersborgs_Stinsen 2018-02-26 08:29

Kul att du fick inspirationen att bygga på loket, det ser ju riktigt snyggt ut!! :tumme_upp::tumme_upp::tumme_upp:

korvtiger 2018-02-27 19:44

Tackar, tackar!

Mazz: Om man bortser från alla rör (vilket även om det är många, faktiskt inte tar sååå lång tid att dra, jämfört med att modellera alla andra små pinaler :rolleyes:) så är jag över halvvägs i alla fall! Och att det ser bekant ut känns uppmuntrande, Sa och Sb är faktiskt väldigt lika varandra interiört. Har haft ovärderlig hjälp av att kika på detaljerna i de bilder jag fått av dig för att jämföra med det fåtalet bilder på Sa-lok jag faktiskt har. :)

korvtiger 2018-04-02 13:29

2 bifogad(e) fil(er)
Någon som påskpysslat i helgen? Det har jag. Alltså inte målat ägg och sådant, utan byggt ånglokshytt! :D

De flesta pinalerna är på plats nu och snart är det bara rördragningen kvar av modelleringsarbetet. Sedan sist har det tillkommit gaslampor, smörjapparat system Friedmann, haspar och handtag till dörrar och fönster, luckor och skåp på bakväggen, handbromsvev, kolränna, snabbavstängning (syns inte i taket), oljekannor, ventiler på kronan, tvättpluggar, extra bromsslangar, spärrar till infällbara vindskydden, sotarhandtag och handtag till damparna, bland annat. :)
Jag hoppas verkligen inte att ni är allergiska mot trianglar, triangelräknaren har nyligen passerat 70 000 nämligen. :D

Bifogad fil 76176
Panngaveln med en del nya pinaler. Smörjpumpen till höger i bild.

Bifogad fil 76177
Bakväggen med handbromsvev och skåp för förvaring av attiraljer, reservdelar och verktyg.

Skickade ett mail till Veteranjärnvägen i Klippan som är de som äger 1277:an idag och frågade om bilder på interiören. De påskpysslade också med ånglok och jobbade med att få igång loket till sommarens körningar. Fick en hög med bilder på skrymslen och vrår i loket, så ett stort tack ska det ha för detta!

Dock medförde dessa bilder att jag hittade tusen nya saker som jag behöver fixa eller lägga till... Gjorde en lista med dem och den har just nu 21 punkter med saker som skall åtgärdas. Så har ni inget bättre för er så kan ni ju sitta där ute i stugorna och se hur många fel/saknade saker ni hittar! ;)

Vänersborgs_Stinsen 2018-04-02 20:43

Ser ju riktig bra ut!!:tumme_upp:

ekankal 2018-04-02 22:23

Inte lätt att hitta fel, eller något som saknas, när man har noll koll på allt som finns i en ånglokshytt, men det ser imponerande bra ut i vilket fall som helst :tumme_upp:.

tanigardi 2018-04-03 08:53

Ser kanon ut👍. Inspirerar verkligen till att på allvar medicinera mot min ”triangel-allergi:grin: Skulle vara intressant att få följa arbetsgången med textureringen och PBR-materialen.

korvtiger 2018-04-03 20:46

Inte ett enda fel!? :D;) Jag har visserligen bockat av 16 punkter på listan sedan igår, men samtidigt har det tillkommit 10 nya... Tur att det bockas av i raskare takt än det dyker upp nya i alla fall! :rolleyes:

Jag har inte hittat några rekommendationer om triangelantal på hytter, men eftersom LOD0 på lok ska vara mellan 100 000-150 000 så borde det vara samma sak för hytter. Särskilt då hytten hela tiden upptar väldigt stor del av skärmen när den faktiskt visas. Så jag siktar väl in mig på 100 000 i alla fall. Sedan har jag nog ett par tusen trianglar att spara på ytor på den exteriöra modellen som syns från hytten. Den är inte bantad än. Sedan får jag väl investera i ett nytt grafikkort också. Det börjar väl bli dags snart, det gamla har över 5 år på nacken. :D

Får återkomma med någon förklaring över hur jag jobbar mer PBR och texturer sedan. Men först måste jag UV-mappa allt. Usch vale!

Mazz 2018-04-03 23:57

Galet snyggt och känns "äkta"... Glott på dina bilder en stund nu, men går bet på att hitta glömda detaljer... Möjligtvis kan koltaget kännas för litet eller liknande, men det kan vara perspektivet som gör det.

Dina beställda mått är fixade... om du nu verkligen behöver dom, det ser ju ut som du har örnkoll redan på dom... :)

Trianglar e bra... :)

korvtiger 2018-04-04 22:57

Tackar!

Kan hända att koltaget inte är helt hundra korrekt, men det är faktiskt byggt efter ritning. Dock en ritning på SJs J-lok, för det var den närmsta ritning jag kunde hitta. :D Men den borde vara hyfsat samma som i Sa tycker jag. Sb har nog lite större, då det borde var lite mer hyttutrymme där, för att inte tala om större fyr att mata! ;)

De beställda måtten vill jag gärna ha, även om det ser rätt ut! Har använt ögonmåttet och även om jag lyckades måtta in tvättpluggarna med +/-10% så vill jag gärna ha saker rätt när jag kan. Fel brukar tendera att bunta ihop sig nämligen. Man jämför något mot något annat som har fått fel storlek för att det är anpassat efter något tredje som hade fel storlek för man saknade ritningar när man modellerade det. :)

korvtiger 2018-04-18 23:50

3 bifogad(e) fil(er)
Modelleringsfasen av hytten börjar gå mot sitt slut. Senaste veckorna har i huvudsak bestått av rördragning.

För er som inte kunde hitta några saknade saker förra gången kan jag upplysa om att följande saker har lagts till/åtgärdats sedan sist:
Wirear till snabbavstängningen har färdigställts, vattenrör till injektorerna har dragits, rör till tryckluftsbromsen har dragits, en lossningsventil har lagts till, en oljekanna har satts upp på pannan, gaslyktorna av trekantig typ har tillverkats för förarsidan, gasledningar har dragits och en fördelningsdosa sitter i taket hos eldaren, smörjapparaten har fått drivning och utgående oljeledningar, spakar för främre skopa och fallrost har satts upp, stänkskärmar över hjulen är tillagda, ledningar till manometrar är dragna, samt ledning till smörjapparatens uppvärmning, injektorerna har ledningar för spolning av durk respektive asklådespolning, provkranar för vattennivån uppsatta, "varning för livsfarlig ledning"-skylt uppsatt, omkastarveven har fått gängor, avtappningskranar på diverse ledningar, spillrör för vattenståndsglas, växelventil för ångvärme har tillkommit.

Bifogad fil 76249
Bifogad fil 76250


Visar en bild på alla rör och wirear i hytten också, så ni ser att det faktiskt hänt något sedan sist. Och ja, jag vet exakt vart alla dessa rör går! ;):D
Bifogad fil 76248

Det enda som saknas nu är väl hastighetsmätaren, vilken jag väntar på mått på ifrån Mazz. Därtill saknas hink och spade, nej, jag menar spann och skyffel och ha vatten i respektive elda med. :D
Därefter börjar mastodontgörat att UV-mappa 90000 trianglar...

blomsson 2018-04-19 00:28

Ett rörande arbete...

mvh
Håkan

Vänersborgs_Stinsen 2018-04-19 23:03

Det ser ju ut för bra för att vara sant :tumme_upp::tumme_upp::tumme_upp::tumme_upp:

Så satans snygg! Nu blir ju längtan efter loket ännu större :grin:

korvtiger 2018-06-24 23:51

4 bifogad(e) fil(er)
I vanlig ordning när jag bygger så är det något med datorn som inte fungerar. Låter det vara osagt om det visar på hur dåligt datorer fungerar i allmänhet, eller hur lång tid det tar för mig att bygga. :D Denna gången har jag varit utan fast internet i över två månaders tid. Som tur är har jag ritningar och bilder sparade offline, så det har gått bra att i maklig takt bygga vidare ändå. Nätverket är i alla fall återställt nu, om än temporärt. Vi får se hur länge det håller. :rolleyes:

Sedan sist har jag delat upp hytten i två delar, en med de stora Sa-specifika delarna och en med alla vanliga reglage som finns i de flesta ånglokshytter. Jag har i princip UV-mappat klart båda delarna, vilket i runda slängar alltså handlar om 70000 trianglar.

Jag hade dessutom lovat att berätta om hur jag jobbar med material, texturer och framtidshoppet PBR - Physically Based Rendering.
Som jag redan nämnt flera gånger använder sig PBR, (specifikt metalness-workflowet som är ett av de vanligaste sätten att jobba med PBR) av flera texturer, många fler än vad vi har varit vana vid att använda. Tidigare hade vi en diffuse texture där vi klämde in allt: färger, smuts, statiska skuggor, fejkade reflektioner osv.
Eventuellt kunde man även ha en normal-map för att skapa ojämnheter i ytan, vilket är något jag personligen aldrig använt.

I PBR har vi istället flera texturer, framförallt dessa fyra:
* Albedo (ibland felaktigt kallad diffuse)
* Normal (eller bump)
* Roughness
* Metalness

Som jag diskuterat tidigare är reflektioner otroligt viktiga för realism. Därför låter man helt och hållet rendermotorn ta hand om dessa och i sin albedotexture som kan liknas med det vi är vana att kalla diffuse, målar man enbart in färgerna, utan några skuggor eller reflektioner. Jämför med bilden jag postade ett par sidor tillbaka på sidotanken; på bilderna är albedotexturen helt enfärgad i en mörk grå nyans! Hela materialets karaktär skapas av reflektionen vilken blir levande med ojämnheterna från bumpmappen i det fallet! Sedan skulle man lägga till oljefläckar och liknande genom att måla i roughness och lite i albedo och normal.

Som sagt tidigare så använder jag mig för tillfället av bumpmaps istället för normalmaps. En bumpmap talar om hur relativt sett högt en yta sticker ut. Notera ordet relativt, all höjd i en bumpmap är relativt andra delar i texturen. En helsvart eller en helvit bumpmap ger alltså exakt samma resultat: en plan yta. Det är gradienter och skarvar i bumpmappen som ger lutningar och kanter. En normalmap innehåller i princip samma information som en bumpmap, men är kodad i RGB-formatet istället för gråskala och visar själva lutningen som pixeln har relativt ytans normal. Det är med andra ord en riktning (vektor på matematiskt språk) kodad som en färg, då både färg och riktningar i en 3D-rymd har just tre dimensioner. Både bump och normalmaps innehåller på sätt och vis samma information, men normalmappen tar mer plats då den innehåller två extra fägkanaler. Däremot är normalmaps snabbare för datorn att arbeta med, då lutningen redan är uträknad och inkodad i texturen. Därav använder man oftare normalmaps i realtidsmotorer. Men som jag konstaterat tidigare är det mycket enklare att måla bumpmappar som beskriver ojämnheter i termer av höjd istället för vektorer i ett tredimensionellt tangenrum till ytan, kodade som normaliserade färger. Att konvertera en bumpmap till en normalmap som Trainz använder är inga svårigheter, det finns flera gratisprogram som stödjer detta.

Det första steget i mitt nuvarande workflow är vad jag vill kalla makroskopiska ojämnheter. Jag skulle vilja dela upp ojämnheter i ytorna i tre kategorier. Detta är ett högst personligt tankesätt och inget som lärs ut allmänt vad jag vet. Kategorierna som jag ser det är:
* Stora ojämnheter - Huvuden på nitar/skruvar och kanter på plåtar, etc. Ritas i bump/normalmappen.
* Mellanstora ojämnheter - Bucklor/ojämnheter i ytor, grov struktur på material (ex. gjutjärn), etc. Ritas mest i bump/normalmappen.
* Mikroskopiska ojämnheter - ojämnheter på molekylnivå som bestämmer reflektionen hos ytan. Skiljer till exempel en vitmålad plåt (ganska skarpa reflektioner) från papper (väldigt otydliga reflektioner).

Det kan kännas lite märkligt att gå ned på molekylnivå, men det är faktiskt nödvändigt. Vi behöver inte modellera ut molekylerna - det skulle kräva alldeles för stora beräkningar - utan vi använder fysikaliska och statistiska modeller för detta. Tänk på två plana ytor, en spegel och ett papper. Båda är till synes helt platta, men spegeln har en väldigt tydlig reflektion, medan pappret knappt verkar reflektera alls. Tittar man med mikroskop på ytorna kommer man att märka att pappret visst reflekterar riktigt bra, bara att ytan är mikroskopiskt skrovlig - tänk en mikroskopisk variant av lustiga huset - vilket resulterar i att ytan för oss inte alls har en tydlig reflektion. Ljuset studsar istället helt ostrukturerat åt alla möjliga håll efter att ha träffat pappret. Detta modellerar man med roughness, vilket jag kommer prata om någon annan dag.

I den exteriöra modellen av loket är jag ganska klar med första kategorin och har börjat så smått på den andra kategorin. Svårigheten är att vissa saker kan kräva att man målar i flera texturer synkroniserat. Exempelvis repor i målad metall, där blank metall lyser igenom i repan. Då ska repan målas in i metalness då målad metall är dielektriskt men blank metall är metalliskt; den ska målas i roughness för att blank metal har skarpare reflektion än målad metall; i albedo för att den målade metallen ska ha rätt färg och slutligen i bump/normalmappen för att få till en liten kant på repan och kanske några mindre ojämnheter i den blankskrapade metallen. Det är det här som är svårigheten med PBR, att måla och tänka i flera lager.

Men först tar vi ett steg tillbaka till första kategorin med de stora ojämnheterna då vi enbart måste bry oss om bump-/normalmappen. Jag börjar med att skapa fyra tomma texturer, dvs, albedo, bump, roughess, och metalness, alla med standardvärden. Albedo, bump och roughness får en mellangrå nyans och metalness helsvart, dvs dielektriskt/icke-metalliskt, vilket det mesta är.
Bumpmappen målar jag med 50% grå för att både kunna skjuta in saker (mörkare än mellangrå) eller få saker att sticka ut (ljusare än mellangrå). Om jag har en yta där saker enbart ska sticka ut kan jag lika gärna grundmåla den med helsvart så har man mer nyanser att styra höjden med. Som sagt är det de relativa ljushetsskillnaderna mellan två intilliggande pixlar som används, inte nyansen i sig. Sedan målar jag ut de stora detaljerna, vilket i hytten har varit två saker: huvuden på nitar/skruvar samt kanter på plåt. Plåtkanter får man till genom att måla den plåten som ligger över med ljusare grå färg (eller den under med en mörkare). Nitarna och skruvarna ritar jag ut för hand (ett riktigt pill-göra, men det ger verkligen resultat!) som klarvita prickar av rätt diameter. Därefter ser jag till att mjuka till nitarna så att de går över till den färgen som den mellangråa bakgrunden har. Det ger dem ett rundare och mjukare utseende. Skruvskallarna låter jag vara helvita med skarpa kanter, då de ju har skarpa kanter. Vissa skruvhuvuden är redan modellerade, så det gäller att överväga vilka skruvar som ska modelleras och vika som bump/normalmappen ska ta hand om. I regel så behöver man inte modellera nitar, då dessa inte sticker ut särskilt mycket och drar många polygoner per nithuvud, vilket ofta kostar mer än det smakar. För att kunna kolla resultatet har jag satt upp ett PBR-material i Blenders inbyggda path-tracer renderingsmotor Cycles. Det tar ett par sekunder för bilden att konvergera och bli tillräcklig brusfri för att man ska se resultatet, men det visar tydligt hur resultatet blir med en riktigt bra renderingsmotor. Bilderna nedan har tagit 5-15 minuter styck att räkna fram. Nästa version av Blender (version 2.8) kommer med en ny viewport kallad Eevee som är byggd med modern spelmotorteknik där man kan rendera PBR-material i realtid och vilken stödjer långt mycket mer features än vad som lär finnas i nästa Trainz. Detta kommer verkligen att underlätta texturerande av spelmodeller, då man snabbt kan se resultatet i Blender utan att behöva dra igång Trainz! (Se exempelvis följande klipp ifrån Eevee i prealpha-versionen av Blender v2.8: https://www.youtube.com/watch?v=-mxJzQ9Jquk, allt i videon är i realtid! :eek:)

Så här följer två före/efter bilder med fram och bakskärmen i hytten. Först utan bumpmap, sedan med bumpmap.
Kom ihåg att det är exakt samma geometri vi kollar på! Det är exakt lika många trianglar på båda bilderna, enbart bumpmappen skiljer.

Bifogad fil 76524
Utan bumpmap.

Bifogad fil 76525
Med bumpmap. Ett utsnitt av bumpmappen syns infälld i bilden.

Bifogad fil 76520
Utan bumpmap.

Bifogad fil 76519
Med bumpmap.

Öppna bilderna i var sin flik och bläddra fram och tillbaka så är det lättare att se skillnaden.

Det var allt för denna gången, återkommer med hur man skapar karaktären till de olika materialen. :D

Vänersborgs_Stinsen 2018-06-25 06:42

Det börjar se riktigt bra ut!!! Lycka till!

lan 2018-07-02 10:34

Tack Korvtiger för denna tråd! Mycket intressant att följa hur de nya materialen appliceras. Med ordentligt tilltagna texturer av typ albedo, normal, roughnes och metalness kan tydligtvis en skicklig byggare uträtta underverk. Tänk vad skönt att slippa 3D-modellera varenda planka och nit och vad grafikarbete det kommer att spara för processorn.

Ser fram emot fler spännande avsnitt i denna tråd !

korvtiger 2018-08-01 01:22

4 bifogad(e) fil(er)
Vi går vidare i textureringsarbetet för att få till lite färg och karaktär på materialen i hytten.

Min tanke är att dela upp textureringsarbetet i tre steg:
1. Makroskopiska, geometriska detaljer. (Nitar, plåtkanter)
2. Material (Ojämnheter i gjutjärn, struktur och färg hos trä och metaller...)
3. Vädring (Smuts, matta ned ytor, slitage)

Just nu är det första steget till största delen klar på interiören, vilket vi såg i förra posten i denna tråd. Jag har nu börjat gå över till nästa steg.
I detta steg ska vi se till att alla platta ytor faktiskt ser ut som det material de är gjorda av, att plåtarna på pannan ska se ut som målade plåtar, att injektorn ska se ut som att den är gjord av gjutjärn med bronsfärgade detaljer. Problemet nu med PBR är att vi inte bara kan ta ett fotografi och klistra in i vår textur som vissa har gjort tidigare (kallat photo-texturing). Då får vi med statiska reflektioner som vi istället vill att grafikmotorn skapar åt oss. Här finns det lite olika vägar att gå. Antingen kan man ta sitt fotografi av en ren yta och använda mjukvara för att splittra den bilden till albedo, roughness, bump/normal, metalness osv. Exempel på gratis programvara för det är AwesomeBump (awesomebump.besaba.com/) vilket är det program jag använder för att konvertera mellan bump- och normalmaps. Lite ointuitivt, men det fungerar. Ett annat alternativ är att använda färdiga PBR-texturer. Där man får i regel upprepningsbara, färdiga texturer för olika material med alla dess maps. Detta är sättet jag till störst del använder mig av. Ett tredje alternativ är procedural textures, där man genererar (framförallt bump/normalmaps) genom att generera brus med hjälp av matematiska modeller (matematiken behöver man inte kunna något om, man behöver bara lite fantasi och tid) och sedan modifiera det på olika sätt för att återskapa till exempel ojämnheterna hos gjutjärn. Fördelen med detta tillvägagångssätt är att man får en oändligt stor "textur" som inte har några upprepningar i sig eftersom datorn genererar den "on-the-fly", så stor som behövs. Däremot är det en del fippel med att få det att fungera och bli snyggt. Sådana texturer kan man göra antingen med brusfilter och levels/curves verktygen i Photoshop eller motsvarande eller med Cycles i Blender med hjälp av nodbaserade material som sedan kan bakas ned till en vanlig textur. Ett exempel på detta i Blender/Cycles finns här: https://www.youtube.com/watch?v=lD1iGWISa2k . Som sagt så använder jag mig framförallt av färdiga PBR-texturer. Det finns flera sidor för detta på nätet som kostar mer eller mindre pengar. Själv använder jag bara gratissidor, framförallt texturehaven.com (helt gratis, ingen registrering krävs), www.textures.com (kräver registrering, begränsad upplösning och begränsat antal texturer nedladdade per dag) och www.poliigon.com/ (Enbart utvalda texturer är gratis, kräver registrering).

Under arbetets gång har jag upptäckt en negativ sida med att använda bumpmap istället för normalmaps. Det är att bumpmappens effekt är ganska odefinierad. Det finns inget som säger hur stort i verklig skala på modellen som en nyansskillnad i bumpmappen visar. Om man vill ha en 1 cm hög kant, hur många nyanser är det liksom? Detta får modellskaparen tillsammans med renderingsmotorn själva definiera. I Blender/Cycles som är rendermotorn som bilderna ni ser i denna tråd kommer ifrån kan ställa in det genom en skalningsfaktor. Men bumpmappen har också en annan negativ sida jämfört med normalmaps, upplösningen i höjdled. Bumpmappen är en svartvit bild med 8 bitars djup, alltså har vi 256 nyanser att leka med. Detta är inte särskilt mycket. Tänk er att vi vill kunna skapa en plåtkant med 1 cm tjocka plåtar och på den yttersta plåten vill vi ha en 1 cm hög nit. Då behöver vi ställa in rendermotorn på att tolka de 256 nyanserna som åtminstone 2 cm. Det innebär att den minsta detalj vi kan återskapa i bumpmappen är i storleksordningen 0.1 mm. Det kanske låter litet, men när man kommer till materialsteget som jag är på nu så är det för grovt. Med normalmaps kommer man runt detta problem genom att man inte definierar det i termer av höjd, utan istället beskriver ytans lutning i förhållande till polygonens yta, vilket är väldefinierat. Däremot tappar man begreppet höjd i normalmappen, varför man ibland använder både normal- och bumpmaps tillsammans, även om bumpmappen då går under benämningen heightmap. Detta används i kommande Trainz för parallaxmapping som jag länkat till någon video om i någon annan tråd.

De flesta PBR-material levereras med nomalmaps och inte bumpmappar. Så efter lite experimenterande har jag kommit fram till att det är enklare att konvertera min nuvarande bumpmap med alla handritade nitar till en normalmap och arbeta vidare än vad det är att konvertera alla PBR-texturers normalmaps till bumpmaps och fippla för att få skalan rätt för att sedan konvertera tillbaka hela den färdiga bumpmappen till en normalmap. Jag slipper ju inte ifrån konverteringen till normalmap hur jag än gör, eftersom Trainz använder normalmaps.

----------

Jag tänkte visa med två bilder hur två av parametrarna i PBR fungerar, nämligen roughness och metalness.
Först har vi metalness som är en gråskaletextur som nästan enbart skall bestå av helsvarta (0.0) eller helvita (1.0) värden. Svart betyder dielektriskt (icke-metalliskt) och vitt betyder metalliskt. I verkligheten är alla material antingen eller, men inom PBR och 3D tillåts gråskalenyanser, för att jämna ut övergångar mellan material. Här visas en sfär med en textur som antingen är helt svart eller helt vit, vilket alltså ger en dielektrisk respektive metallisk yta.
Bifogad fil 76715

Roughness är alltså en modell för de mikroskopiska ojämnheterna som finns i alla material. Detta är också en gråskaletextur där helsvart (0.0) betyder att ytan är väldigt jämn och ger en tydlig reflektion. Helvit betyder å andra sidan att en inkommande ljusstråle har lika hög sannolikhet att reflekteras åt vilket håll som helst, vilket ger en väldigt diffus yta med otydliga reflektioner. Här visas en dielektrisk sfär med en helröd albedotextur med roughness från 0.0 till 1.0. Med roughnesstexturen styr man var i texturen man vill ha vilken diffushet.
Bifogad fil 76716

Ifall det inte varit tydligt tidigare så tillåter alltså PBR att man har i princip ett enda material i 3D-editorn som används på alla delar av modellen, där varje dels materiella karaktär (som metall och trä) styrs med hjälp av texturerna. Man behöver enbart olika material om man har speciella saker som glas eller självlysande objekt.

Mitt tillvägagångssätt vid textureringen är följande: Jag har bakat ned UV-mappen till en textur i Blender. Denna använder jag sedan för att se var alla ytor är mappade i min 2D-grafikeditor. Jag markerar de delar av texturen jag vill måla med ett material där, till exempel alla plåtar på pannan. Jag letar sedan fram PBR-texturer som liknar det material jag vill återskapa. Jag plockar in de mappar jag behöver (albedo, roughness och normal, ibland även metalness) och skalar ned dem så de passar den yta de ska appliceras på. Ofta behöver jag upprepa texturen för att detaljerna ska bli tillräckligt små. Därefter använder jag masken för att maska bort alla delar av PBR-mapparna som jag inte behöver.

Efter att ha applicerat material på en del saker så ser det ut som följer:
Bifogad fil 76717
Bifogad fil 76718

Är långt ifrån nöjd, men det är en början i alla fall. Just nu ser materialen väldigt rena och skinande ut. Detta är något som jag måste åtgärda, vilket jag tar i det sista steget, nedsmutsningen. Om man använder sig av kraftfulla PBR-program som Substance Painter så kan man låta programmet själv skapa smuts med hjälp av olika verktyg. Man kan med ett enkelt musklick få kanter på modellen att bli skavda, eller skapa ett virtuellt regn för att räkna ut vilka ytor som blir smutsiga av just regn eller andra nedfallande partiklar. Vissa sådana saker går att göra med hjälp av Blender, men kräver betydligt mer manuellt arbete. Jag återkommer nog till det i en framtida post.

Sedan har jag börjat fundera lite på storlek på texturer. Hittills har mina modeller hållit sig till texturer av storlekarna 1024x1024 och 2048x1024 på passagerarvagnarna. Tänkte att jag drar till på stort för detta projekt och körde till att börja med på två 2048x2048 texturer till interiören, men har nu hoppat upp till 4096x4096 på båda för att man ska kunna läsa alla små texter på skyltar och manometrar. Tänker att det är lättare att förminska än förstora texturer i efterhand. Dagens grafikkort börjar ju få så mycket minne att man utan problem kan hantera denna storlek på texturer till saker som förekommer i ental på en bana. Har dock märkt att datorn börjar knorra lite över att editera bilder i Photoshop med den storleken och mer än 140 lager samtidigt som man har lite andra program igång i bakgrunden. 8 GB RAM-minne börjar bli lite snålt... Den exteriöra modellen har fortfarande 2048x2048 texturer. Funderar på om man borde gå upp i storlek även här för detaljrikedomens skull, även om det blir en del arbete med att göra om alla skyltar och texter.

Totte 2018-08-01 09:16

:tumupp:Bra jobbat!:tumupp:

Vänersborgs_Stinsen 2018-08-01 09:52

Det ser ju bättre ut för varje gång.:tumme_upp: Jag föredrar detaljrika fordon men vart går gränsen när det gäller texturer:confused::grin:

tanigardi 2018-08-01 12:10

Stålande arbete:tumme_upp: mycket imponerande. Eldstaden ser fantastiskt verklig ut med alla ojämnheter i plåten.

lan 2018-08-01 18:25

Ja, imponerande ! Korvtiger är alltid på hugget när det gäller nya läckerheter -
Väldigt intressant tråd denna!

ekankal 2018-08-01 20:17

Imponerande :applad:.

lan 2018-08-02 16:15

Ja,
det stundar nya tider för byggare ! Jag undrar om nån mer orkar stiga på tåget ?
Detta är rakt igenom helt nya tekniker och liknar inte det gamla som jag höll på med. Jag hoppas några unga hungriga byggare hoppar på tåget. Vi har som tur är en "Guru" i form av en korvtiger.
Så en uppmaning till alla hugade:
"Hoppa på tåget - det går snart!"
Sjäv kommer jag att stå kvar på perrongen och vinka " God resa!"

korvtiger 2018-08-12 02:22

4 bifogad(e) fil(er)
Tack för glada tillrop! :)

-----

Nu blir det en liten parentes till Sa-bygget.

På förfrågan så tänkte jag försöka förklara normalmapping lite närmare.
Detta är som jag varit inne tidigare ett lite abstrakt och svårgreppat koncept då det involverar en del matematik. För er som verkligen vill veta mer om matematiken bakom och hur man implementerar det i en egen grafikmotor rekommenderar jag denna tutorial: https://learnopengl.com/Advanced-Lig...Normal-Mapping.
Jag tänker försöka förklara det mer ur en modellerares perspektiv. För jag lovar att man inte behöver veta särskilt mycket avancerad geometri för att kunna använda normalmapping! ;)

Men vi börjar från början: vad ska man ha en normalmap till?
Jo en normalmap används för att lägga till detaljer på ytan på de trianglar som ett objekts mesh består av. Så utan att lägga till flera vertiser och trianglar som kostar prestanda kan man lägga till massor av små detaljer och ojämnheter på triangeln - så som nithuvuden och repor - mycket, mycket billigare prestandamässigt än om de modellerats ut för hand. (tänk er bara jobbet att modellera ut alla repor i en plåt med polygoner...) Kolla bara in post #66 i denna tråd för att se vad man kan göra med en normalmap (eller en bumpmap).

Det låter ju bra, men vad sjutton är då en normal?
En normal är en vektor (tänk er en pil) som perkar ortogonalt (vinkelrät) mot en yta. Exempelvis: normalen till golvet i ett hus är en pil som pekar rakt upp. Om du står på golvet kan man säga att du är en normal till govlet. Normalen till en vägg pekar rakt ut från väggen, osv...
Bifogad fil 76746
Som 3D-modellerare är begreppet normal redan bekant då det är det hållet som en triangel/polygon pekar åt. En polygon har ju två potentiella normaler, en som pekar rakt upp från ytan åt ena hållet och en som pekar rakt åt motsatt riktning. Så vi måste välja vilket håll polygonen skall peka åt genom att se till att dess normal pekar åt rätt håll.
När vi nu börjar pyssla med normalmapping kommer inte bara varje triangel få en normal, utan varje pixel kommer att ha en normal som kommer att varieras med hjälp av en textur, normalmappen. Man utgår då från triangelns normal och låter normalmappen förändra denna normal i varje pixel för att kunna skapa små ojämnheter i ytan.

Vi börjar med att jämföra de två teknikerna bumpmapping och normalmapping med hjälp av ett av SJs gamla monogram som de använde på de teakklädda personvagnarna:
Bifogad fil 76743

Först och främst ser vi ser att bumpmapping och normalmapping ger i princip samma resultat, visuellt.
Till vänster en yta utan någon extra detaljering. Varje pixels normal på denna yta pekar rakt upp, alltså i samma riktning som hela ytans normal. Vi får en platt yta.
I mitten ser vi bumpmapping. Här använder vi en svartvit textur för att definiera höjd. Ju ljusare, ju högre är pixeln upphöjd. Längst ned ser vi hur pixlarna ger olika höjd och ifrån dessa kan grafikmotorn sedan räkna ut ytans lutning. Notera att en bumpmap inte definierar hur högt upphöjd en viss nyans innebär. Detta är helt upp till grafikmotorn att tolka.
Till höger ser vi normalmapping där normalmappen är genererad från bumpmappen. Här ser vi att en normalmap i regel är en väldigt blåtonad textur. Om vi jämför med bumpmappen ser vi att det helvita mitt på monogrammet och den grå bakgrunden har samma färg i normalmappen, en ljus blålila ton. Detta är ytor som är plana och pekar rakt upp. Vi ser att kanterna på monogrammet har olika färg beroende på vilket håll de pekar åt. Till exempel får kanter som pekar åt höger en rosa ton och kanter som pekar uppåt har mer grönaktig ton. I bilden nedtill ser vi hur de olika färgerna tolkas som vektorer som ändrar riktningen på de ursprungliga normalerna. Dessa nya normaler talar om hur den pixeln på ytan lutar. Som en parentes kan vi kan också notera att vi förlorar informationen om en ytas höjd i normalmappen jämfört med bumpmappen.


Så vi har nu sett att en normalmap är någon sorts vektorer (tänk pilar) som pekar ut den riktning som pixelns normal har och att dessa vektorer är inkodade i en blåtonad textur. Men hur fungerar detta?
Jo, för att kunna beskriva en riktning i tre dimensioner behöver man just tre koordinater. Dessa tre koordinater pekar ut en punkt i 3D-rymden. Från koordinatsystemets origo drar men sedan en vektor som pekar på punkten, och vips så pekar den vektorn (som är mycket bra att tänka på som en pil) ut en riktning i 3D-rymden. Notera att det finns oändligt många punkter som skapar vektorer som pekar ut samma riktning. Till exempel genom att fördubbla längden på vektorn, pekar den fortfarande åt exakt samma håll som tidigare, även om det är en annan punkt/vektor. Man brukar därför tala om normaliserade vektorer. En normaliserad vektor är en vektor som har längden 1. Detta gör att varje tänkbar riktning i en 3D-rymd kan beskrivs av exakt en normaliserad vektor. Om man tar alla tänkbara normaliserade vektorer ritar de upp ytan på ett klot med radien 1 runt origo. Om man accepterar detta kan man också förstå att våra tre koordinater i 3D-rymden är allt vi behöver för att beskriva alla möjliga riktningar vi kan tänkas vilja beskriva.

Följande bild förklarar det koordinatsystem som normalmappen utgör:
Bifogad fil 76744

Så en normalmap är en färgtextur med tre färgkanaler, alltså lika många som koordinater vi behöver för att beskriva en riktning. I bilden ser vi en polygon med normalmappen på. Ytan skapar ett koordinatsystem X, Y, Z som är kopplat till motsvarande RGB-färgkanaler i texturen, så X <-> R, Y <-> G och Z <-> B. X och Y beskriver riktningar i ytan medan Z är normalen till ytan och pekar rakt upp ur ytan. Genom att koda in en koordinat i detta koordinatsystem som en färg kan vi beskriva en vektor som alltså pekar ut riktningen vi vill att normalen skall peka åt i en specifik pixel.

Hur kodar vi då in normalen som en färg?
RGB kodar som bekant färger i 256 nyanser per kanal, så 0-255 för röd, 0-255 för grön och 0-255 för blå färgkanal.
Eftersom vi vill kunna visa riktningar både i X, Y respektive Z's riktningar samt i motsatta riktningar så måste vi mappa om dessa så att halva färgskalan pekar åt motsatt håll. Då blir det så att färgnyansen 255 är så långt åt axelns riktning man kan komma och 0 är så långt man kommer i motsatt riktning. Mitt mellan dessa, värdet 128 är "0-värdet", alltså varken i axelns riktning eller motsatt dess riktning. Notera att värden under 128 på Z axeln (blå färgkanal) alltså ger en väldigt märklig normal som pekar inåt i ytan. Undvik alltså detta!
Med detta förstår vi också varför de flesta ytor på en normalmap är ljust blålila. En oförändrad normal som pekar rakt upp ut ytan (i ytans egen normals riktning) har alltså RGB värdet 128,128,255, vilket innebär ingen utsträckning åt X eller Y, men rakt åt Z. Normalen pekar alltså rakt i Z-axelns riktning och detta är just en ljust blålila färg.

Nu har vi allt vi behöver för att kunna beskriva våra normaler som en färg. Här nedan visas ett exempel med en vektor/normal i vitt som kodas som RGB = 180,90,200. För att hitta vektorn/normalen behöver vi bara följa pilar i X,Y och Z-axlarnas riktning med rätt längd. Notera att X/röd och Z/blå pekar i X- respektive Z-axlarnas riktning eftersom deras färgvärde är över 128, medan den gröna pekar i motsatt riktning eftersom värdet är mindre än 128.
Bifogad fil 76745


Förhoppningsvis gav denna post en lite bättre förståelse för normalmapping. Men jag betvivlar att det gjorde er mycket klokare på hur man ritar normalmaps. Men var så lugna! Ingen, inte ens textureringsproffs, målar större delar av normalmaps för hand. Man skapar dem antingen genom att rita bumpmaps för hand (vilket är hur jag gör) och låter ett program som AwesomeBump räkna om det till en normalmap, eller så genererar man dem från en högdetaljerad variant av meshen där alla nitar och detaljer faktiskt är modellerade. Det sistnämnda är dock inget alternativ om man vill ha repor och ojämnheter på varenda vägg i en ånglokshytt som ni kanske förstår. Då får man istället ladda ned PBR texturer från nätet som innehåller färdiggenererade normalmaps och använda dem i sin egen normalmap-textur.

Även om detta är lite off-topic så får ni gärna ställa frågor om normalmapping om ni har sådana. Har ni mycket frågor eller grejer att diskutera så går det givetvis bra att öppna en egen tråd också. :)

Hoppas detta kan vara till nytta för någon byggare där ute.

Hawk 2020-05-21 01:21

nerladdning ?
 
Hej :)
Blev detta fantastiska lok släppt för nerladdning ?

lan 2020-05-21 17:17

Nej, men det kanske kommer nån gång ????

Korvtigers experimenterande med Sa 1277 med ny textureringsteknik 'a l'a PBR ( Physically Based Rendering) var mycket lovande ( som man kan se på bilderna i denna tråd).
Det ligger säkert i en av Korvtigers många malpåsar på nån av hans datorer och om det blir färdigt vet nog inte ens Korvtiger - men det är en utmärkt illustration på vad en skicklig och mycket kompetent byggare kan uträtta ! Vi gamla f.d. kan bara hoppas !

korvtiger 2020-05-26 20:21

Som Lan säger så har detta projekt tagit en långpaus. Visst är jag lite sugen att någon gång i framtiden bygga klart den, men just för tillfället saknar jag dator som kan köra Trainz och som är tillräckligt kraftfull för att köra Blender. Men om några år kanske? :D

Hawk 2020-05-26 20:51

Citat:

Ursprungligen postat av korvtiger (Inlägg 317549)
Som Lan säger så har detta projekt tagit en långpaus. Visst är jag lite sugen att någon gång i framtiden bygga klart den, men just för tillfället saknar jag dator som kan köra Trainz och som är tillräckligt kraftfull för att köra Blender. Men om några år kanske? :D

Tack för svar, så får man vänta...;)


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

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