Visa ett inlägg
Gammal 2021-02-15, 17:59   #91
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 716
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 18:06.
korvtiger besöker inte forumet just nu   Svara med citat