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-02-15, 18:59   #91
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 715
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 715
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 822
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: 1 062
Standard

Jag är mållös, otroligt snyggt!!!
__________________
rely besöker inte forumet just nu   Svara med citat
Gammal 2021-03-05, 20:26   #95
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 715
Standard

Sedan sist har texturerat om hela interiören i Mixer. Fortfarande lite saker jag skulle vilja justera, men det börjar se rätt bra ut.

Just nu håller jag på och bråkar med Trainz för att försöka få in hytten i spelet. Har något konstigt fel där vissa objekt (innertaket, samt innerväggarna) får normalerna vända åt fel håll inne i spelet, trots att de är åt rätt håll (inåt hytten till) i Blender. Normalmappen är det inga konstigheter med och när jag importerar den exporterade fbx-filen tillbaka in i Blender verkar allt rätt. Jag har bara lyckats tvinga dem åt rätt håll genom att mergea ihop de objekten med något objekt som har fler normaler pekandes utåt (exempelvis ångpannan) för att det ska fungera. Är det någon annan som har stött på detta märkliga beteende?

Tills jag löst detta så får ni några bilder renderade inifrån Blender med hjälp av pathtracern Cycles. Riktigt så här bra kommer det ju inte att se ut i Trainz, men det visar ju på en av trevligheterna med PBR: att man kan rendera modellerna i vilken PBR-rendermotor som helst och få ett liknande resultat. Och nu med realtids-ray-tracing på frammarch kanske hytten automatiskt kommer att se såhär bra ut i någon framtida utgåva av Trainz!





__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat
Gammal 2021-03-05, 22:06   #96
Jockes
Medlem
 
Reg.datum: Feb 2009
Ort: Västerås
Inlägg: 1 822
Standard

Jäklar vad snyggt korvtiger! Ser riktigt, riktigt verkligt ut
__________________
//Joakim Wahlberg
Jockes besöker inte forumet just nu   Svara med citat
Gammal 2021-03-07, 18:30   #97
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 154
Standard

Ser fantastiskt ut, ser verkligen fram emot slutresultatet

Problemet med normalerna som du beskriver har jag stött på när jag kopierat och speglat några objekt, då hjälpte det med "object - apply -all transformations" och tror att jag någon gång också använt, i edit mode "mesh - clean up - degenerate and dissolve" om jag inte missminner mig.

Är nyfiken på "poly-counten" på din interiör, dina rör ser väldigt bra ut.

Har tänkt att ta mig en titt på "Mixer" också, verkar ju som ett mycket intressant freeware-alternativ.
tanigardi besöker inte forumet just nu   Svara med citat
Gammal 2021-03-08, 12:51   #98
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 154
Standard

Glöm det jag skrev om flippade normaler i förra inlägget. Vid närmare eftertanke så är ju den lösningen inte riktigt applicerbart på ditt problem. Det gällde ju objekt i slidstyrningen som var speglade. Däremot slår det mig att jag hade samma problem som du när jag exporterat en av rattarna i hytten, att det såg ut som flippade normaler i Trainz, men inte i Blender. Lösningen i det fallet var att jag triangulerade meshet i fråga och då, efter exporten såg allt ok ut i Trainz.
tanigardi besöker inte forumet just nu   Svara med citat
Gammal 2021-03-08, 18:39   #99
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 715
Standard

Tack så mycket!

tanigardi:
Jag tror att jag provade att triangulera mesherna utan att det hjälpte och jag testade alla möjliga apply transform-grejer och kontrollerade att scale inte var inverterad osv. Får prova dina förslag och se om det hjälper denna gången.

Triangelräknaren står på 81849 för den "interiöra delen" av interiören, sedan tillkommer den "exteriöra delen", alltså lokmodellen, fast nedbantad och med mycket grejer som inte syns från hytten borttagna, på 12982 trianglar. Så totalt 94 831 just nu för hela interiören. Trodde att det skulle vara betydligt värre faktiskt! Jag har för mig att N3V rekommenderar 100 000 - 120 000 trianglar för LOD0 för lokmesher, så det borde ju vara samma för lokhytter.
Men sedan ska det till lite grejer i koltaget, fönsterrutor, en fyrmesh och kanske lite annat.

Alla rör gör jag som bezier-kurvor för att lätt kunna dra och justera dem. Sedan när jag var nöjd med alla rör gjorde jag en kopia av bezierkurvan och konverterade den till en mesh, som jag får UV-unwrappa. Originalen sparar jag i en annan collection för att ha om jag behöver justera något. Jag använder 8 vertices per "ring" för de grövsta rören, dvs- till injektorerna. Ledningar till bromsen har 6 vertices och gasledningarna har 4. Sedan får man välja hur många ringar per bezier-segment man behöver per rör beroende på hur krokigt röret är draget. Ibland har jag tagit bort en del onödiga ringar där rören är väldigt raka efter att jag konverterat till mesh för att spara in några trianglar. Vertex-slide är ett ypperligt verktyg för detta (Markera ringen, tryck "G+G" och flytta musen).
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat
Gammal 2021-03-09, 13:39   #100
Vänersborgs_Stinsen
Medlem
 
Reg.datum: Nov 2016
Ort: Vänersborg
Inlägg: 598
Standard

Finner inga ord! WOW
__________________
Stinsen Brinner för Bergslagernas Järnvägar.
Edwin Bohm
Vänersborgs_Stinsen besöker inte forumet just nu   Svara med citat
Gammal 2021-03-10, 09:53   #101
ekankal
Veteran
 
Reg.datum: Jun 2008
Ort: Sundsvall
Inlägg: 4 071
Standard

Helt enastående snyggt "korvis" .
__________________
Ekan
ekankal besöker inte forumet just nu   Svara med citat
Gammal 2021-03-10, 17:59   #102
rely
Medlem
 
Reg.datum: Jul 2010
Ort: Stockholm
Inlägg: 1 062
Standard

Helt otroligt!
__________________
rely besöker inte forumet just nu   Svara med citat
Gammal 2021-04-18, 23:18   #103
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 715
Standard

Fortsätter att bygga på hytten. Det har gått åt mycket tid att splitta upp hela hytten i alla reglage och mätare och saker och sedan se till att allt är korrekt riggat/animerat och exporterat till Trainz. Tyvärr blir man lite trött ibland på en del konstigheter som Trainz har för sig. Ett särskilt märkligt är att "collision" på vissa reglage inte funkar direkt när man hoppar in i hytten, men efter att man gått runt och klickat och haft sig å hoppar de plötsligt igång och går att klicka på. Vissa reglage var så när jag först lade in dem, men sedan dess fungerar de direkt varje gång jag startar om simulatorn. Dock verkar mina bromshandtag inte vilja fungera för det mesta.

En glad överraskning var dock att Blender numera verkar kunna exportera animationer med scale, Trainz FBX importer verkar stödja det! Kul, för det fungerade inte på den gamla goda tiden med .im-mesher.

Nu är snart alla mesher inne i hytten och det återstår bara det eviga småjusterandet av collisions och därefter scriptning av lite specialsaker som inte finns med i mitt STL-ångloksscript.

Och så en bild från inne i simulatorn:

Ganska långt ifrån kvalitén på renderingarna i förra inlägget, men i framtida Trainz-utgåvor kanske..
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat
Gammal 2021-04-19, 16:12   #104
Jockes
Medlem
 
Reg.datum: Feb 2009
Ort: Västerås
Inlägg: 1 822
Standard

Citat:
Ursprungligen postat av korvtiger Visa inlägg
Ganska långt ifrån kvalitén på renderingarna i förra inlägget, men i framtida Trainz-utgåvor kanske..
Tycker det ser skitsnyggt ut! Men ja, visst är det en skillnad, men ser ändå väldigt, väldigt bra ut.
__________________
//Joakim Wahlberg
Jockes besöker inte forumet just nu   Svara med citat
Gammal 2021-04-20, 18:27   #105
tanigardi
Medlem
 
Reg.datum: Nov 2009
Ort: Gävle
Inlägg: 154
Standard

Ser ju väldigt fint ut tycker jag. Tyvärr så är ju textur storleken man kan använda till Trainz en begränsning. Drömmen vore ju att man kunde använde ett antal 4096 x 4096 texturer.

Är nyfiken på hur många lod nivåer du använder och polycounten i respektive nivå, sitter själv och tråkar ut mig med att dekonstruera mitt lok.
tanigardi 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 12:26.


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