Arbeta med avancerade reflektioner i UDK

I denna handledning lär vi oss hur du installerar både en dynamisk (realtid) och ett statiskt reflekteringsmaterial i Unreal Development Kit, och skapa en parameteromkopplare för att växla från dynamisk till statisk reflektion, eller vice versa i UDK. För handledningen använder jag februari 2011 versionen av UDK.


Ladda ner högupplösta bilder för denna handledning.



Reflektion i UDK

I UDK är reflektioner inget annat än Miljöer som fångas och projiceras omvänd på objektets yta och fångas med Screencapture Actors i UDK. Du måste placera den här skådespelaren för att fånga platsen eller miljön i din karta och lagra den i ett speciellt texturformat som heter Render to Target. Denna textur ska finnas i innehållswebbläsaren. Det kan vara en realtid eller statisk konsistens som kan användas i ett material och sätta upp det för att få reflektioner på vissa maskor som metall eller glas.

För att bättre förstå och fungera reflektions skådespelare ordentligt behöver vi ha en fullt utvecklad scen eller en karta så att den kan fånga omgivande objekt. Ladda UDK och öppna "VCTF-Necropolis.udk" -kartan (eller vilken karta som helst), men se till att kartan är laddad med massor av objekttexturer och belysning, det ska vara i UT3-mappen i den installerade katalogen av UDK, det är UDKGame \ Content Maps \ \ UT3. Så bara få din karta redo.


Gå till Visa-> Webbläsarfönster och sedan skådespelarklasser. Låt oss bara fusionera detta skådespelarklassfönstret med fönstret Innehållsbläsare, så att vi kan gå till skådespelarklassfönstret direkt från fönstret Innehållsbläsare. För att göra det, klicka bara på Dockningsmenyn bredvid menyn Arkiv och klicka på Dockad. När du klickar på det dockade alternativet bör fönstret försvinna och nu kan vi ladda det direkt från innehållswebbläsaren.


I fönstret Aktörsklasser, gå till Uncategorized-> SceneCaptureCubeMapActor Välj och dra och släpp det i din scen, precis som i bilden nedan. Se bara till att du placerar den här skådespelaren mitt i mitten av massor av föremål med bra belysning så att du får en fin reflektion. Eller så kan du se några mörka lappar på den här skådespelaren, eller en enkel svartfärgad sfär. Den här skådespelaren är inte synlig i spelet när vi spelar den här kartan.

När du har dragit och placerat ovanstående skådespelare i din scen får du ett svart eller mörkt kulörobjekt i din scen. Det är för att fånga miljön och kommer att reflektera som en spegel. Men nu är färgen svart, eftersom den här skådespelaren lagrar all reflektion i en speciell texturkarta kallad Scene Render to Target, som är dynamisk och ännu ej tilldelad. Låt oss skapa den dynamiska strukturen då.


Gå till innehållswebbläsaren och skapa ett nytt paket som heter "Advanced_Reflection" (eller vilket namn du vill.) Högerklicka i innehållswebbläsaren och skapa en ny TextureRenderTargetCube. Skillnaden mellan Target 2d och Target Cube är att kuben kommer att fånga alla axlarna i miljön och lagra den i Cubemap-format. Där som mål 2d är att fånga endast ena sidan av ansiktet, vilket är bra för ett ensidigt plan ytsnät som ett jord- eller golvnät.

När du har klickat på ny TextureRenderTargetCube från högerklickningsalternativen får du ett fönster som i bilden för att ställa in texturens upplösning. Se till att du ställer in upplösningen så lågt som möjligt, annars kan det tömma mycket minne om du använder det för en real-time-scen. Men för tillfället ställer vi in ​​det till 1024 för att fånga högupplösningen Statisk reflektionsteknik och sedan återgår vi tillbaka till 256 senare. Glöm inte att namnge denna textur som "RT_reflection". Tryck OK och spara paketet. När du har tryckt på OK ser du en grön textur i innehållswebbläsaren vilken är din dynamiska textur som vi heter RT_reflection i innehållswebbläsaren.

Nu när vi har vår Dynamic Texture klar, låt oss tillämpa den på scenupptagning Cubemap Actor i scenen.


Välj den nyskapade dynamiska strukturen med namnet RT_reflection från innehållswebbläsaren och gå nu tillbaka till din scen och välj SceneCaptureCubeMap Actor (den svarta sfären) och tryck F4 för att öppna egenskaperna. Just Collapse Scene Capture Actor-> Scene Capture-> Capture Properties och tilldel Texture Target genom att klicka på den gröna pilen bredvid den. Du får halv reflektion och halv svart på sfären för att göra allt du behöver för att ställa in intervallet genom att ställa in FarPlane-värdet till 999999 (eller så högt som möjligt) som i bilden ovan. Kontrollera även / Aktivera dimma och Aktivera inläggsprocess om du har någon i din scen, eller Markera / Markera användningsvärdet för Använda huvudbild efter processprocess. Jag har aktiverat alla markerade värden i bilden ovan.

Nu om du öppnar din innehållswebbläsare ser du den gröna texturen i innehållswebbläsaren visar nu lite texturinformation och den texturinformationen är din dynamiska reflektion. Med denna textur kan du enkelt skapa ett material, samt skapa en ny statisk textur. Låt oss konfigurera ett material, men vi måste ha ett statiskt nät för att applicera detta material till.


För denna handledning har jag skapat två enkla geometriska maskor som är en sfär och cylinder, enligt ovan. Jag använder Cylinder för Dynamic Realtime reflektioner, och sfären för statiska reflektioner. Så låt oss skapa en statisk reflekterande textur nu.


Högerklicka på den dynamiska strukturen i innehållswebbläsaren och klicka sedan på Skapa ny statisk textur. Ett fönster kommer att pop-up för att namnge den nya statiska texturen som den kommer att skapa. Bara namnge det du vill, men för den här handledningen ska jag kalla det "ST_reflection" och som visas ovan i Gruppfältet. Skriv bara "Textures", så det kommer att lägga den nya texturen i en underkategori med namnet Textures of Advanced_reflection-paketet. Efter att ha träffat OK, tar det lite tid att skapa Static Cubemap-texturen i innehållswebbläsaren, vänta en stund och spara sedan paketet.


Efter att du skapat den statiska kubektexturen med namnet ST_reflection, borde du också ha några andra texturer med samma namn, bara ta inte bort dem eftersom det är en stödjande textur som har alla 6 sidor av reflektionsinformationen. Det är från minus X till positiv X till exempel (suffixed som Neg och Pos) sammanställd i din ST_reflection-struktur. Nu när vi har dynamiska och statiska strukturer som är RT_reflection och ST_reflection, är det dags att skapa sitt material.


Högerklicka i innehållswebbläsaren och skapa ett nytt material som heter "Reflection" (eller något namn du önskar).


Dubbelklicka på ditt nyskapade material som är Reflexmaterialet. Att ställa in reflektionsmaterialet i materialredigeringsfönstret är enkelt, men här ställer jag upp två typer av reflektion. Det är dynamisk och statisk reflektion, eftersom du kan se inställningen i bilden ovan. Det här är användbart när du vill ha statiska reflektioner på specifika väggar, tak eller ibland på marken när du skapar ett material eller ett barn av detta material som vi kommer att göra senare. Så låt oss installera reflektionsmaterialet för både statisk och dynamisk.

Följande metod är bara inställningen av den dynamiska och statiska reflektionen med en switch-parameter för att aktivera eller inaktivera den typ av reflektion vi vill ha i materiell instans. Du kan använda den med din nuvarande materialinstallation eller blanda den med din nuvarande diffusa metall, glas eller annat material du gillar.

Dynamisk Material Inställning: I bilden ovan har den dynamiska inställningen tre anslutningar och den går genom ReflectionVector> Transforms> RT_reflection. Låt oss konfigurera den dynamiska reflektionen först, importera den dynamiska strukturen (RT_reflection) till materialredigeringsfönstret och leta efter uttrycken Transform and ReflectionVector. Och sedan Anslut Reflexionsvektorns nod till Vector Transform-noden, och slutligen anslut Vector-noden till UV-värdet i Texturprovsnoden, det vill säga RT_reflection Texture. Välj alla noder och kommentera Dyanmic_reflection (Högerklicka och Ny kommentar) och gör sedan en kopia av hela Dynamic Reflection-inställningen.

Statisk materialinställning: Den statiska materialinställningen är nästan densamma med undantag för texturprovsnoden som är RT_Reflection-strukturen. Byt ut det med ST_reflection Texture i den kopierade Dynamic_reflection Setup. Ändra kommentaren från Dynamic_reflection till Static_reflection, precis som inställningen i bilden ovan.


Nu behöver vi en byt för att växla från Dynamic till Static eller vice versa. För att göra det, sök bara efter parameteren Statisk omkopplare i fönstret Material Expression och dra den till skärmen, eller bara högerklicka i materialredigeraren och välj sedan FunktionUtility-> Ny statisk omkopplare. Anslut ST_reflection to False och RT_reflection to True för den här omkopplaren. Du kan nu ansluta denna Switch till Diffuse eller Emissive kanalen, eller du kan till och med blanda den med din nuvarande materialinställning med hjälp av Lerp (linjär interpolation) uttryckskod.

Statisk omkopplingsparameter: Denna omkopplare har två ingångar, SANT och FALSK. Även om det är självförklarande, men det kommer bara att göra FALSE som ett standardvärde och det sanna inmatningsvärdet ignoreras. För att ändra det, klicka på parametern Static Switch och sedan på egenskapsfönstret nedan, kolla eller aktivera Standardvärdet, som i bilden ovan och ge det ett Parameternamn som Statisk / Dynamisk. Spara och stäng nu materialredigeringsfönstret.


Gå bara till innehållswebbläsaren och högerklicka på det här nyskapade reflektionsmaterialet och klicka på Create New Material Instance (Constant). Därefter visas ett fönster som heter det nya materialet. Bara namnge det "Static_reflection" och följ ovanstående process igen, men den här gången heter den "Dynamic_reflection" för den andra Material Instance.


Nu har du två instanser av materialet i innehållswebbläsaren, dubbelklicka på båda materialinstanserna.
Som i bilden ovan är det det statiska materialet och till höger är det det dynamiska materialet. Under Parameter Grupper finns en Statisk / Dynamisk kryssruta, bara se till att det är kvar att kryssrutan är markerad för Static Material. Och den högra kryssrutan kontrolleras för det dynamiska materialet som visas i bilden ovan. Denna parameter Statisk / Dynamisk skapades bara på grund av den Switch vi skapade i materialredigeringsfönstret tidigare. En gång gjort med inställningarna är det dags att tilldela dessa material till våra statiska maskor. Så stäng bara de Material instans redigeringsfönster.


Gå till innehållswebbläsaren och sök efter ett Cylinder och Sphere-nät som jag skapade för denna handledning. Applicera det dynamiska materialet på cylindern och det statiska materialet till sfärens nät, vilket visas i bilden ovan. Det är allt! Du är nästan klar, placera bara dessa två maskor på din karta nu.


Placera cylindernätet strax ovanför realtidsreflekteringsskådespelaren och placera sfärnätet var som helst du vill, eller placera det bredvid cylindern sida vid sida. Nu test spel i din Editor.


Som du kan se i bilden ovan. Om du tittar på cylindern ser du lite förvrängd reflektion av din karaktär, det beror på cylinderns krökning. Ju mjukare nätet är desto bättre blir reflektionen, men inga förändringar på Sphereens reflektion. Det som fortfarande ser riktigt ut, så det är ett bra sätt att förfalska reflektioner så här och optimera också. Dynamiska realtidsreflektioner används mycket sällan och det använder mycket GPU och CPU-ström för att göra varje ram. Var försiktig med realtime reflektions skådespelaren och dess inställningar, UDK kan krascha ofta om du ständigt gör ändringar i realtime reflektions skådespelare som är scenen skådespelare. Se till att du sparar varje steg, eller med några ändringar som du gör. Test spel i din visningsport varje gång och gör ändringar i enlighet därmed för att få önskan effekten.


Slutsats:

Att använda Dynamic Realtids Reflections i en sådan stor karta med en stor exteriörs scen eller miljö, kommer att tömma ditt minne och det kan till och med krascha mycket. Så använd det klokt och effektivt. Dynamisk reflektion används ofta på en inomhuskarta, som har små inredda rum med massor av speglar som återspeglar interiörer (till exempel spegeldörr och Windows eller Chrome Metals.) Men du kan fortfarande förfalska reflektionen genom att använda en enkel omkopplare till statiska reflektioner, vilket är ett smart och bättre sätt att göra det.

Tack för att du läser och har en bra dag!


Vi har publicerat några relaterade handledningar du kanske också är intresserade av:

relaterade inlägg
  • Snabb Tips: Optimera Texturer I Unreal Development Kit
  • Snabbtips: En introduktion till Light-Mapping i UDK
  • En omfattande nybörjarguide till UDK
  • Maya To UDK: Importera Statiska Meshes med hjälp av ActorX & FBX
  • Speedtree till UDK: Skapa ett Palm Tree i Speedtree och Importera det till UDK