Arbeide med avanserte refleksjoner i UDK

I denne opplæringen lærer vi hvordan du konfigurerer både en dynamisk (realtid) og et statisk reflekteringsmateriale i Unreal Development Kit, og opprett en parameterbryter for å bytte fra dynamisk til statisk refleksjon, eller omvendt i UDK. For opplæringen bruker jeg februar 2011 versjonen av UDK.


Last ned høyoppløste bilder for denne opplæringen.



Refleksjon i UDK

I UDK er refleksjoner ikke noe annet enn miljøer som er fanget og projiseres omvendt på overflaten av objekter, og fanges ved hjelp av Screencapture Actors i UDK. Du må plassere denne skuespilleren for å fange scenen eller miljøet til kartet og lagre det i et spesielt teksturformat som kalles Render to Target, denne teksten skal være i innholdsbrowseren. Det kan være en realtid eller statisk tekstur som kan brukes i et materiale og sette det opp for å få refleksjoner på visse masker som metall eller glass.

For bedre å forstå og fungere Refleksjon Skuespilleren på riktig måte, må vi ha en fullt utviklet scene eller en kart, slik at den fanger de omgivende miljøobjektene. Last inn UDK og åpne "VCTF-Necropolis.udk" -kartet (eller et hvilket som helst kart av ditt valg), men sørg for at kartet er lastet med masse objekttekstur og belysning, det skal være i UT3-mappen i den installerte katalogen av UDK, det er UDKGame \ Content \ Maps \ UT3. Så bare få kartet klart.


Gå til Vis-> Nettleservinduer og deretter skuespillerklasser. La oss bare slå sammen dette skuespillerklassevinduet med innholdsbrowservinduet, slik at vi kan gå til skuespillerklasser-vinduet direkte fra innholdsbrowservinduet. For å gjøre det, klikker du bare på Docking-menyen rett ved siden av File-menyalternativet og Klikk Docked. Når du klikker på det forankrede alternativet, bør vinduet forsvinne, og nå kan vi laste det direkte fra innholdsbrowseren.


I skuespillerklasser-vinduet går du til Uncategorized-> SceneCaptureCubeMapActor Velg og dra og slipp det inn i scenen din, akkurat som i bildet nedenfor. Bare vær sikker på at du plasserer denne skuespilleren midt i midten av mange gjenstander med god belysning, slik at du får en fin refleksjon. Ellers kan du se noen mørke patcher på denne skuespilleren, eller en enkel svart farget kule. Denne skuespilleren er ikke synlig i spillet når vi spiller dette kartet.

Etter at du har trukket og plassert den ovennevnte skuespilleren inn i scenen din, får du et svart eller mørkt kuletobjekt i din scene. Det er for å fange miljøet og vil reflektere som et speil. Men nå er fargen svart, fordi denne skuespilleren lagrer all refleksjon i et spesielt teksturkart kalt Scene Render to Target, som er dynamisk og ikke tildelt. La oss lage den dynamiske teksten da.


Gå til innholdsbrowseren og opprett en ny pakke kalt "Advanced_Reflection" (eller et hvilket som helst navn du liker.) Høyreklikk i innholdsbrowseren og opprett en ny TextureRenderTargetCube. Forskjellen mellom Target 2d og Target Cube er at Cube vil fange alle aksene i miljøet og lagre det i Cubemap-format. Hvor som mål 2d er å fange bare den ene siden av ansiktet, som er bra for en ensidig planoverflate som f.eks. Et jord- eller gulvnett.

Etter at du har klikket på ny TextureRenderTargetCube fra høyreklikkalternativene, får du et vindu som i bildet for å angi oppløsning av tekstur. Pass på at du stiller oppløsningen så lavt som mulig, ellers kan det drenere mye minne hvis du bruker det til en real-time-scene. Men for tiden vil vi sette den til 1024 for å fange høy resning Statisk reflekteringstekst og deretter returnerer vi den tilbake til 256 senere. Ikke glem å nevne denne teksten som "RT_reflection". Trykk OK og lagre pakken. Etter at du har trykket på OK, ser du en grønn tekstur i innholdsbrowseren som er din dynamiske tekstur som vi kalt RT_reflection i innholdsbrowseren.

Nå som vi har vår Dynamic Texture klar, la oss bruke den på Scene capture Cubemap Actor i scenen.


Velg den nyopprettede dynamiske teksten heter RT_reflection fra innholdsbrowseren, og nå gå tilbake til scenen din og velg SceneCaptureCubeMap Actor (den svarte sfæren) og trykk F4 for å åpne egenskapene. Just Collapse Scene Capture Actor-> Scene Capture-> Capture Properties og tilordne Texture Target ved å klikke på den grønne pilen ved siden av den grønne pilen. Du får halv refleksjon og halv svart på kule, for å gjengi alt du trenger for å angi rekkevidde som er ved å sette FarPlane-verdien til 999999 (eller så høyt som mulig) som i bildet ovenfor. Kontroller også / Aktiver tåke og Aktiver postprosess hvis du har noen i din scene, eller sjekk / merk av for Bruk hovedbilde Postprosessinnstillinger verdi. Jeg har aktivert alle de uthevede verdiene i bildet ovenfor.

Nå, hvis du åpner innholdsbrowseren, ser du den grønne teksten i innholdsbrowseren, og viser nå litt teksturinformasjon, og at teksturen er den dynamiske refleksjonen av scenen din. Med denne teksturen kan du enkelt sette opp et materiale, samt lage en ny statisk struktur. La oss sette opp et materiale, men vi må ha et statisk nett for å bruke dette materialet til.


For denne opplæringen har jeg opprettet to enkle geometriske masker som er en sfære og sylinder, som vist ovenfor. Jeg bruker Cylinder for Dynamic Realtime refleksjoner, og kule for statiske refleksjoner. Så la oss lage en statisk refleksjonsstruktur nå.


Høyreklikk på den dynamiske teksten i innholdsbrowseren, og klikk deretter på Create New Static Texture. Et vindu vil pop-up for å nevne den nye statiske teksten som den vil opprette. Bare nev det alt du vil, men for denne opplæringen skal jeg nevne det "ST_reflection" og som vist ovenfor i Grouping Field. Bare skriv "Textures", så det vil sette den nye teksten i en underkategori som heter Textures of Advanced_reflection-pakken. Etter å ha trykket på OK, vil det ta litt tid å lage Static Cubemap-tekstur i innholdsbrowseren, vent litt og lagre pakken.


Etter å ha opprettet Static Cubemap Texture kalt ST_reflection, bør du også ha noen andre teksturer med samme navn, bare ikke slett dem fordi det er en støttende tekstur som har alle 6 sider av reflekteringsinformasjonen. Det er fra minus X til positiv X for eksempel (suffiks som Neg og Pos) kompilert i ST_reflection tekstur. Nå som vi har dynamiske og statiske teksturer som er RT_reflection og ST_reflection, er det på tide å lage materialet deres.


Høyreklikk i innholdsbrowseren og opprett et nytt materiale kalt "Reflection" (eller et hvilket som helst navn du ønsker.)


Dobbeltklikk på det nyopprettede materialet som er Refleksjonsmaterialet. Det er enkelt å sette opp refleksjonsmaterialet i materialredigeringsvinduet, men her skal jeg sette opp to typer refleksjon. Det er dynamisk og statisk refleksjon som du kan se oppsettet i bildet ovenfor. Dette er nyttig når du ønsker statiske refleksjoner på bestemte vegger, tak eller noen ganger på bakken når du lager et forekomstmateriale eller et barn av dette materialet som vi skal gjøre det senere. Så la oss sette opp refleksjonsmaterialet for både Statisk og Dynamisk.

Følgende metode er bare oppsettet av dynamisk og statisk refleksjon med en bryterparameter for å aktivere eller deaktivere den type refleksjon vi ønsker i materiell forekomst. Du kan bruke den med ditt nåværende materialeoppsett eller blande det med din nåværende diffus metall, glass eller noe materiale du liker.

Dynamisk materialoppsett: I bildet ovenfor har det dynamiske oppsettet tre tilkoblinger, og det går av ReflectionVector> Transforms> RT_reflection. La oss sette opp den dynamiske refleksjonen først, importer den dynamiske teksten (RT_reflection) til Material Editor-vinduet, og søk etter transformasjons- og refleksvektoruttrykkene. Og Koble deretter Refleksjon Vector-noden til Vector Transform-noden, og til slutt kobler du Vector-transformasjonsknappen til UV-ene i Texture Sample Node, det vil si RT_reflection Texture. Velg alle noder og kommentere Dyanmic_reflection (Høyreklikk og Ny kommentar) og lag en kopi av hele denne Dynamic Reflection setup.

Statisk materialeoppsett: Statisk materialoppsett er nesten det samme med unntak av Texture Sample Node som er RT_Reflection tekstur. Erstatt den med ST_reflection Texture av den kopierte Dynamic_reflection Setup. Endre kommentaren fra Dynamic_reflection til Static_reflection, akkurat som oppsettet i bildet ovenfor.


Nå trenger vi en bytte for å bytte fra dynamisk til statisk eller omvendt. For å gjøre det, søk bare etter den statiske bryterparameteren i Material Expression-vinduet og dra det inn på skjermen, eller bare Høyreklikk i materialeditoren og velg deretter Funksjonalitet-> Ny statisk bryter. Koble ST_reflection to False, og RT_reflection to True for denne bryteren. Du kan nå koble denne bryteren til Diffus eller Emissive kanalen, eller du kan til og med blande den med ditt nåværende materialeoppsett ved å bruke Lerp (lineær interpolering) uttrykkskode.

Statisk bryterparameter: Denne bryteren har to innganger, TRUE og FALSE. Selv om det er selvforklarende, men det vil bare gjengi FALSE som en standardverdi, og den sanne inngangsverdien ignoreres. Så for å endre det, klikk på Static Switch-parameteren og deretter på egenskapsvinduet under, sjekk eller aktiver Standardverdien, som i bildet ovenfor, og gi det et Parameternavn som Statisk / Dynamisk. Lagre og lukk materialredigeringsvinduet nå.


Bare gå til innholdsbrowseren og høyreklikk på dette nyopprettede reflekteringsmaterialet og klikk på Create New Material Instance (Constant). Deretter vises et vindu for å nevne den nye materialeksemplen. Bare navnet det "Static_reflection" og følg fremgangsmåten ovenfor, men denne gangen heter den "Dynamic_reflection" for den andre materialet.


Nå har du to forekomster av materialet i innholdsbrowseren, dobbeltklikk på begge materielle forekomster.
Som i bildet ovenfor, på venstre side er det det statiske materialet og til høyre er det Dynamisk materiale. Under Parameter Grupper er det en Statisk / Dynamisk avkrysningsboks, bare sørg for at det er venstre kryssboks er merket for Statisk Materiale. Og den høyre boksen er merket for det dynamiske materialet som vist i bildet ovenfor. Denne parameteren Statisk / Dynamisk er opprettet bare på grunn av Switch vi opprettet i Material editor-vinduet tidligere. Når du er ferdig med innstillingene, er det nå på tide å tildele disse materialene til våre statiske masker. Så, bare lukk de Material instans editor windows.


Gå til innholdsbrowseren og søk etter et Cylinder og Sphere-nett som jeg opprettet for denne opplæringen. Påfør det dynamiske materialet til sylinderen og det statiske materialet til sfærenettet, som vist på bildet ovenfor. Det er det! Du er nesten ferdig, bare plasser disse to maskene i kartet ditt nå.


Plasser sylindernettet rett over realtime Reflection-skuespilleren, og plasser kulemasken hvor som helst du ønsker, eller du kan plassere den ved siden av sylinderen ved siden av. Nå test spill i editoren din.


Som du kan se i bildet ovenfor. Hvis du ser på sylinderen, ser du litt forvrengt refleksjon av karakteren din, det er på grunn av sylinderens krumning. Jo glattere nettverket, desto bedre refleksjon vil være, men ingen endringer på Sphere refleksjon. Som fortsatt ser ekte ut, så det er en god måte å feile refleksjon som dette, og også optimalisere. Dynamiske realtidsrefleksjoner brukes svært sjelden, og det bruker mye GPU og CPU strøm for å gjengi hver ramme. Vær forsiktig med realtime refleksjon skuespilleren og dens innstillinger, UDK kan krasje ofte hvis du stadig gjør endringer i Realtime refleksjon skuespilleren som er Scene capture actor. Pass på at du lagrer hvert trinn, eller med eventuelle endringer du gjør. Test spill i visningsporten din hver gang og gjør endringer tilsvarende for å få lystvirkningen.


Konklusjon:

Ved å bruke dynamiske realtidsrefleksjoner i et så stort kart med en stor utvendig scene eller et miljø, drenerer du minnet, og det kan til og med krasje mye. Så bruk det klokt og effektivt. Dynamisk refleksjon brukes ofte i et innendørskart, som har små innredede rom med mange speil som reflekterer interiøret (som speildør og Windows eller Chrome Metals.) Men du kan fortsatt falle refleksjonene ved å bruke en enkel bryter til statiske refleksjoner som er en smart og bedre måte å gjøre det på.

Takk for å lese og ha en flott dag!


Vi har publisert noen relaterte opplæringsprogrammer, du kan også være interessert i:

Relaterte innlegg
  • Rask Tips: Optimalisering av teksturer i uvirkelig utviklingssett
  • Hurtig Tips: En introduksjon til lysmapping i UDK
  • En omfattende nybegynnerguide til UDK
  • Maya To UDK: Importerer Statisk Meshes ved hjelp av ActorX og FBX
  • Speedtree til UDK: Opprette et palme i SpeedTree og importere det til UDK