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 > Auran Trainz > 3D-design - Trainz

Svara
 
Ämnesverktyg Visningsalternativ
Gammal 2021-02-15, 18:59   #91
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 520
Standard

Tack så mycket för beröm!

Som utlovat, en liten utläggning om mitt nya texturerings-workflow.

När jag visade en helt texturerad modell ett par sidor tillbaka i denna tråd hade jag ett helt annat workflow där jag gjorde hela PBR-textureringen i ett 2D-grafik-verktyg, nämligen Photoshop. Detta visade sig dock väldigt knöligt när man skulle måla synkroniserat i flera maps (Albedo, normal, roughness, metalness..), vilka jag hade i olika Photoshop-lager för att inte tala om att sedan manuellt exportera alla dessa map-typer. Jag har istället bytt ut detta workflow och gjort om hela den exteriöra texturen från grunden i ett verktyg som tillåter mig att arbeta i 3D-istället.

Workflowet bygger på texturerings-programmet Mixer (https://quixel.com/mixer) från Quixel som jag råkat stöta på när jag letade efter gratisalternativ till Substance Painter. Företaget Quixel, för er som inte har hört om dem, sysslar med att åka världen runt och göra högkvalitativa 3D-scanningar av olika material och föremål som de sedan lägger upp i en databas som heter Megascans. Denna kan man prenumerera på (mot betalning) och använda texturer/material och 3D-scannade modeller när man gör spel eller CGI-effekter i film. Mixer är en programvara som de utvecklar för att "mixa" texturer/material. Programmet är helt gratis, bara man registrerar en email-adress. Med programmet får man dessutom gratis tillgång till en liten (men högst tillräcklig) del av Megascans-databasen, direkt i ett bibliotek i programmet. Dessutom kan man med några få knapptryckningar importera nya PBR-material från till exempel textures.com eller andra PBR-textur-sidor så man snabbt har tillgång till dem i sitt privata bibliotek i Mixer.


Här har vi min modell i Mixer. Det markerade materialet "Rusted metal sheet" var ett jag hittade i Mixer-biblioteket som jag har plockat ut alla maps ifrån förutom albedo (och opacity), då jag tyckte att den var för brun. Roughness och normalmappen tillför dock någon sorts nedsmutsning till ytan.

Mixer är egentligen designat för (som namnet hintar om) att mixa material, dvs att ta redan existerande PBR-texturer och mixa fram nya. Till exempel genom att ta en tegelstens-textur och en moss-textur och mixa ihop så man får en mossig tegelstensvägg. Dock har man implementerat flera funktioner i de senaste versionerna som gör det möjligt att importera egna 3D-modeller av .obj eller .fbx-format och texturera dem i 3D. Det fungerar på det stora väldigt bra, även om vissa funktioner saknas som nog hade varit betydligt smidigare i payware-motsvarigheten Substance Painter. Dock får man ha i åtanke att Mixer fortfarande (även om det funnits ett par år och verkar användas i professionella sammanhang) kallar sina nedladningar för Beta-versioner. Så nya features kommer med jämna mellanrum och det kommer förhoppningsvis att bli ännu bättre i framtiden!

Så mitt workflow ser ut som följer:
Först ritar jag displacement-mappen manuellt i Photoshop, alltså den som jag kallat bump-map tidigare. I denna gråskaletexture ritar jag alltså in höjden på alla nitar och plåtskarvar. Jag ritar inte in några ojämnheter i plåten eller sådant, det gör jag i Mixer sedan. Denna displacement-map har jag ju redan skapat, som jag visade för ett par sidor sedan i denna tråd.

I Blender genererar jag två texturer, dels en ambient occlution-map som är en gråskaletextur med en approximation av ljus/skugga på modellen; och dels en material-id-textur som jag använder för att peka ut vilka lager i Mixer som ska synas på vilka ytor. Denna textur använder jag inte i spelet, utan enbart som hjälp i Mixer för att kunna maska ut vissa ytor på modellen. Material-id är alltså en RGB textur med olika färger. Jag vill till exempel att lagret med mässingsmaterial i Mixer bara ska synas på säkerhetsventilerna och ångvisslan, så dessa meshdelar ger jag då en och samma färg i material-id-texturen. Eller om jag vill att säkerhetsventilerna och ångvisslan ska ha samma grundmaterial, men att säkerhetsventilerna ska var mer slitna så kan jag ge dem två olika material-id-färger och välja båda i mässingslagret men bara säkerhetsventilernas färg i lagret med slitage.
I Blender skapar jag denna material-id-textur genom att sätta emit på materialet i Cycles-noden till den färg jag vill ha i material-id-texturen och sedan baka med typ "emit" de mesher som jag vill ska denna färg i material-id-texturen. Så jag markerar till exempel säkerhetsventilerna, väljer en färg på emit i noden, bakar, markerar sotskåpet och sotskåpsluckan, väljer en annan färg på emit, bakar, osv. Om man vill kan man självklart måla enskilda polygoner, eller till och med enskilda pixlar av ett objekt så att bara de får det material-idt, men det har jag nästan inte behövt på Sa:n. I denna modell har varje löst Blender-objekt nästan alltid bara haft ett och samma material-id. Enda undantaget var buffertbalkarna, där "framsidan" ju ska vara klarröd och sidorna och baksidan/insidan ska ha ett mer svart material. Det löste jag enkelt genom att separera ut de två polygonerna som skulle vara röda till ett nytt objekt i Blender. Det finns säkert verktyg för att automatisk generera ett material-id till varje löst objekt, men jag har gjort detta för hand.


Material-id-texturen för loket. Svart är delar som jag inte har valt något material-id på, utan som får någon sorts grundmaterial

Därefter är allt förarbete klart och man kan hoppa över till Mixer. I Mixer kan man sedan enkelt skapa ett nytt material-lager för, till exempel, de röda buffertbalkarna och sedan använda material-id masken för att bara maska ut de delar av meshen som är bufertbalkarnas framsida. Mixer har ett verktyg där man enkelt kan visualisera material-id-texturen på modellen och sedan bara peka på den/de material-id-färger där man vill ha sitt material. Jag har fått hoppa lite fram och tillbaka mellan Mixer och Blender för att skapa flera material-id:n när jag upptäckt att jag missat något ställe, eller behöver dela upp ett material-id i två, men detta går väldigt snabbt att göra.

I Mixer laddar jag in min modell över ångloket och lägger till ett base-layer med mina tre texturer som jag nämnt: ambient occlusion, material-id och displacement. Här kommer nu en av de smidiga grejerna: man kan direkt generera en normal-map ifrån displacement-mappen, så jag behöver inte göra det manuellt varje gång jag behöver justera eller lägga till nitar i Photoshop! Så jag använder egentligen inte displacement-mappen i Mixer, utan bara den normalmap som genereras utifrån displacementen. I base-layer sätter jag därefter en grundfärg (svart) för albedo-mappen och en grundroughness. Dessa kommer sedan att modifieras eller helt döljas av de lagren som jag skapar ovanför.

Därefter är det bara att börja texturera! Mixer har ett relativt enkelt användargränssnitt, men är samtidigt ganska kraftfullt om man väl förstår hur det fungerar. Det grundar sig på att man skapar lager med "surfaces" där en surface alltså är ett PBR-material med alla dess texture-maps. Sedan kan man maska ut vilka delar av meshen detta lager ska synas på, hur det ska blanda sig med lagren under osv. Dessutom finns det flera användbara maskningsverktyg som kan till exempel hitta "edges and cavities" i meshen på olika sätt för att applicera slitage bara på mesh-kanter eller smuts bara inne i hörn. Om ni är nyfikna och/eller faktiskt vill lära er programmet, rekommenderar jag att kolla in deras Youtube-kanal där det finns genomgångar hur man använder Mixer för att texturera 3D-modeller likt hur jag har gjort. Bifogar två bra exempel nedan som visar många olika verktyg, men det finns flera bra "in-depth" genomgångar av varje enskild mask-komponent också.

Hur man texturerar en modell, från 3D-program via Mixer till exporterade mappar på 20 minuter:
https://www.youtube.com/watch?v=kRtXIj6ENT4

Mer om Smart Materials:
https://www.youtube.com/watch?v=9pFjAlU2gQw
__________________
-k-

Senast redigerad av korvtiger den 2021-02-15 klockan 19:06.
korvtiger besöker inte forumet just nu   Svara med citat
Gammal 2021-02-15, 19:05   #92
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 520
Standard

(Del två av inlägget ovan, pratar för mycket igen... )

En sak har jag dock stött på som inte fungerade lika smidigt i Mixer (ännu i alla fall), som det nog gör i mer fullfjädrade 3D-textureringsprogram, är dekaler. I mitt fall saker som SJ-loggan, lokskyltarna eller loknumret på främre buffertbalken. Det finns en del dekaler som man kan använda i Megascans-bibilioteket i Mixer, men av någon outgrundlig anledning så har de inte scannat in någon dekal med 1277:s lokskyltar eller SJ-monogrammet. Högst märkligt kan jag tycka! Och tyvärr verkar det inte finnas något smidigt sätt att skapa egna dekaler på än så länge. Men jag löste detta genom att skapa en textur i Photoshop med alla dekaler med en helsvart bakgrund och sedan lade jag till det i Mixer som ett solid layer med "Tiling"-mappning så att allt hamnade på rätt ställe på modellen. Sedan fick jag maska bort bakgrundsfärgen i texturen genom att använda texturen själv som en mask och maska på alla pixlar som var helsvarta. Detta fungerade och krävde inte så mycket extra jobb med tanke på att jag redan hade placerat ut nästan alla dekaler i albedotexturen när jag gjorde hela PBR-textureringen i Photoshop första gången.


Här använder jag texturen själv för att maska ut bara dekalerna i dekal-texturen. På 3D-modellen visas marken för lagret i svart-vitt, där det alltså bara är de vita delarna som syns i slutresultatet


En annan sak som det inte finns stöd för (än) i Mixer, är att ha 3D-modeller med flera olika texturer och/eller olika UV-maps. Det innebär att jag måste texturera löphjulen, drivhjulen, loket och luftpumpen i separata Mixer-filer. Jag valde att separera lok och luftpump för att kunna ha en relativt högupplöst texture till luftpumpen nämligen. Det finns dock sätt i Mixer så att man kan spara en grupp med lager av sin mix, så om man har hittat en perfekt finnish på rundpannan och vill ha samma på luftpumpen, kan man spara de lagren som ett "Smart material" som hamnar i ens privata Mixer-bibliotek och sedan importera dessa i filen med luftpumpen. Dessutom kan man justera fritt i de lager man importerade, så man kan ändra så att luftpumpen inte har exakt samma lyster som rundpannan. Detta visas i de videos jag länkade ovan.

När man sedan känner sig färdig i Mixer så är det dags att exportera sina PBR-texturer och detta kunde inte varit smidigare!
Man listar helt enkelt upp de textur-filer man vill ha ut, bestämmer format (jag kör numera PNG) och sedan kan man helt fritt sätta vilka PBR-maps som ska skrivas ned i vilken färgkanal i vilken textur. Så att skapa parameter-texturen som TRS2019 vill ha med emit, roughness, AO och metalness i RGBA-kanalerna i den ordningen är inga konstigeheter! Mycket smidigare än i mitt tidigare workflow där jag fick exportera dessa PBR-mapparna som separata texturer från Photoshop och sedan försöka sätta ihop dem i Blender eller i liknande. Detta gjorde att det tog väldigt lång tid att fixa småsaker i texturen med det gamla workflowet. I Mixer ser man allt man gör direkt i 3D och man kan till och med sätta ett fast värde på emit-texturen (som ju ska vara helsvart, inga radioaktivt, självlysande ånglok här inte! ) när man väl exporterar. När man satt upp exporteringsinställningarna en gång så är det bara att trycka på export nästa gång för att alla texturer ska trilla ut av sig själva! Hur smidigt som helst!
Att byta upplösning på texturerna man matar ut ur Mixer är bara ett knapptryck. Man kan dessutom jobba i en lägre upplösning och sedan exportera i en högre om det skulle behövas för att datorn inte orkar med. Alla PBR-material och lager har ju den upplösning som de är skapade med (Förutom om man handmålar masker i Mixer, då får de den upplösning man väljer att skapa dem med) och det mesta i Mixer är procedurellt så det är inga problem att skala upp slut-resultatet i de flesta fallen. Själv hade jag dock inga problem att texturera loket med 50+ lager med 2048x2048 texturer på ett RTX 2060 SUPER grafikkort.
Ytterligare en trevlig sak med att Mixer är helt procedurellt är att om man tyckte något lager fick lite fel färgton, eller något smutslager blev lite för mycket så kan man gå tillbaka och dra lite i några reglage, trycka på export-knappen och få ut nya texturer som man bara slänger in i Trainz-asseten.

På det stora hela är jag nöjd med detta workflow. Det är enbart freeware-programvara, (Photoshop-delarna hade man lika gärna kunnat göra i GIMP eller Krita, jag har bara kört Photoshop så länge att jag har fastnat..) man ser resultatet i realtid i 3D, det är anpassat för PBR-texturering, det är snabbt och smidigt och framförallt, det är kul! Jag har aldrig tyckt om texturerings-biten av att bygga modeller till Trainz, men Mixer har verkligen fått mig att tycka att det är en kul del av processen!
__________________
-k-

Senast redigerad av korvtiger den 2021-02-15 klockan 19:10.
korvtiger besöker inte forumet just nu   Svara med citat
Gammal 2021-02-15, 23:16   #93
Jockes
Medlem
 
Reg.datum: Feb 2009
Ort: Västerås
Inlägg: 1 642
Standard

Riktigt, riktigt snyggt korvtiger!
__________________
//Joakim Wahlberg
Jockes besöker inte forumet just nu   Svara med citat
Gammal 2021-02-23, 23:22   #94
rely
Medlem
 
Reg.datum: Jul 2010
Ort: Stockholm
Inlägg: 977
Standard

Jag är mållös, otroligt snyggt!!!
__________________
Rely
rely besöker inte forumet just nu   Svara med citat
Svara

Ämnesverktyg
Visningsalternativ

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 20:10.


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