VR with Unreal Engine 5 - Full Beginner Course

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello hello hello hello and welcome welcome to Unreal Engine 5 VR course that is mostly tailored for architectural presentations what does that mean well I'll explain it in just a just a moment but while I give this kind of an introduction while I'm blabbing let me show you what we will be working on or working towards I should say throughout this this course or throughout this video basically an Unreal Engine 5.2 Lumen and nanite have become stable enough to be used for VR applications what does this mean well Lumen enables us to use Dynamic lighting as well as Dynamic Reflections meaning that if the light changes its angle the whole scene or all bounces of light inside of the scene will correspond without us needing to rebake it this is a huge thing for photorealism in an architectural presentation in terms of nanite it enables us to use really heavy meshes from for instance the mega scans library that we will most definitely be using in this course what you're seeing now on the screen is me interacting with a bunch of blueprints that I have created and I will be showing you how to make this kind of a interactable objects for your architectural presentations but that is going to come a little bit later because the most important part or the name of the game of this course is optimization how do you make your scene work with the hardware that you have add the highest possible quality I will be using an RTX 3080 non-ti version graphics card with 48 gigabytes of RAM for this course and considering that I'm going to be recording the screen capture at 4K resolution the graphics card will most likely perform closer to 3060 ti so this should give you a pretty good understanding of what kind of Hardware we're dealing with and if you should readjust the settings that will be shown to get the same frame rate or frame rate as what I'm getting one last note about the files so all of the files that I use in this course as well as in every other video that I do for this channel are available for the patreon supporters so if you go to the link in the video description below and you support the channel you help out the channel then you will get the list of all of the different files that you can download so that you can follow along this course much much smoothly with that being said you definitely don't need the files to be able to follow along because all of the settings are General meaning that they will work on your files as well with that being said I think it's time to just jump right into it and let's get started alrighty then let's let's start so first of all the headset setting it up and making sure that it's connected to the computer that's uh very it varies very much between different headsets the one that I'm going to Showcase is our room domain that I'm going to use is called meta Quest 2 which is the most popular headset at least at the time of recording this video because it provides the best bang for the buck or Price performance ratio and 2023 I believe the price of this headset is around around 500 dollars something like that so you connect this headset to your computer you will need to choose between two softwares two two different programs that you install on your computer one is called Oculus app Oak all c u l u s Oculus app and or or rather another one is called steam VR the one that I'm going to be using is indeed Oculus app right here so you just download it it's free you log in with the same account that what you're using for the headset and you just simply go uh to your devices click on ADD headset follow along the simple instructions of what to do after which time and your headset will be connected at that point it's going to be connected with a tether through through a cable but if you wanted Wireless you indeed can have it Wireless so and the only restriction is if you want a wireless connection with the headset let me just change it here you need to make sure that it's connected to the same Wi-Fi as the computer which is going to be which you are trying to connect to and which has the app so here you can see that's my that's my computer and I can use the airlink which is the um wireless connection and I can click on launch while this is launching uh since you're most likely not all of you will have the VR uh the same VR headset as what I have and especially if you don't have the meta Quest headset you will most likely need to use team VR for which I will not be showcasing the procedure but it's pretty straightforward it is pretty much the same there are plenty like so many tutorials on how to connect your headset through steamvr so just make sure to you know quickly do a quick Google search and connect it that way basically once you're with the meta Quest once you're in uh and you're connected to the computer then you can start for instance let's go to desktop let's check out monitor one and now I can see exactly the same thing as what I uh was showing you in my on my screen right so that's that's like a in doing so I I am sure that this headset is definitely let's put it in here and this headset is definitely uh connected to the computer right move on to actually creating a Unreal Engine file so to create a new VR project you need to go to library and just launch your 5.2 version you can also launch it through here of Unreal Engine if you have a newer version hello people from the future then launch that one instead and after it initial initiates we will be able to choose a template and we will be using a VR template of course to start off with but then we will make adjustments to it to raise the quality as much as possible so I'll just go into games virtual reality I don't need a starter content so I will have this unticked and I'll just name my project VR YouTube maybe underscore as well and click on create once it's once you start it's going to compile all of the shaders it's going to the first start is always longer and then once it's done we will continue while I still have you here I just want to note that this kind of course is a little bit one step above a beginner level course it's going to be I don't want to say intermediate but it's definitely not a complete bit beginner course if you want a complete beginner course then please consider watching my previous video that I will leave a link to in the video description below so that you get up to speed with you know how to create materials how to navigate the scene and so on I will not be explaining those things here I will be hyper focusing on the VR aspect of it and the optimization settings great so now once the this is lo loaded in let's check if our headset actually gets recognized first of all so I will click on these three dots here change play mode and I will choose I'll try to choose VR preview and you can see that in my case it's grayed out the reason for that is because I have my headset right here right next to me and it's currently turned off so I will put it on an automatic phase detection should and turn it right on there we go and I also need my Rusty controller to actually connect it to my there we go connect it to my computer which turns on the Oculus app don't mind that one actually minimize that keep it running just have it minimized so now with the headset turned on let me double check yeah that's good when the headset turned on if I click these three dots now I can see VR preview option for the play as a play button so play this level in VR click on that I turn this on I can look around I I even see my controllers wait let me this is weird let me grab those no and grab those there we go and let's do something so let me guide you through the actual template first of all uh this is going to be quite quite quick if I hit something I'm sorry I don't see so you're able to pick up stuff in this book drop that one you're able to pick stuff up in this app or in in this template right you are able to drop stuff you're able to ah okay that that I just hit the freaking microphone I'm sorry you're able to pick up a gun shoot the gun you know and and so on so and restart the game blah blah a bunch of settings so it works great but unfortunately this is this does not have Lumen this does not have nanite and as you can see the quality is uh not not the best right so we need to amp up the quality while also also also making sure that the frame rate doesn't drop below a certain threshold so that's what we're going to be what we're going to be doing let me hit Escape here um so the settings that we want to work on are mostly located here under project settings project and editor settings so let me click on that and let's go to our project settings right here let me remove the headset for now I won't need to use it for a while and here the first thing that we want to enable is or make sure that is running is DirectX 12. direct X 12. great default air rhi is indeed DirectX 12. then the next one that we want to check is called sm6 direct direct 3D the 12 Target Shader formats sm6 make sure that this one is Tick marked if those two are tick marked or running that is already a pretty pretty good start so now let's start raising the quality first thing and most important thing that I will do is I'll go to Target Hardware here and I'll instead of optimizing project settings for mobile scalable no no we will use desktop scalable which immediately asks us to restart the editor which we will do restart editor this might trigger a recalculation of the materials which no in the shaders which it did not that is great okay so immediately the the quality of of the light and so on gets raised a little bit higher which for us is great that's that's what we want okay next thing that we want to um change is allow static lighting allow static lighting needs to be turned off we want all of our Lighting in the scene to be dynamic so allow static eye lighting is turned off again triggers uh well you can see it right here triggers a restart now operation so we will be restarting it there's going to be as you can probably see there's going to be a lot of restarting going on and this time around it does indeed recompute all of the shaders right so let me pause the video and wait for it to do that okay so after restarting the light is all messed up that is expected don't freak out we will fix it in just a second but before we do that we need to do a few more adjustments to the settings so let's finish up there so again in Project settings we will go for forward shading forward shading and we will have this under forward render forward shading we will just simply untick forward shading like that asks us to restart it again no not this time you're not gonna catch me with that recompiling ever again so we will keep changing things and restart everything all at once so with forward shading unticked for mobile we don't care we don't even look at mobile we're just looking up towards forward render uh next one is going to be I guess Lumen we need to check out lumens so um at this point I would suggest instead of searching let's just go to uh rendering where is it rendering hello there it is rendering click here start kind of scrolling down definitely not mobile again start scrolling down until you see global elimination here make sure that it is set to lumen reflections make sure that those are set to Lumen reflection capture resolution 128 for our poor little computer are is going to be too much I would suggest either 64 or 96 in this case I will be using 64 because I'm recording so my my computer won't handle probably 96. um so that's the resolution at which um the scene will be captured by the reflections um last one let me while it's doing this let me just quickly check Global clear plans of retracing uh support Hardware Ray tracing for sure if available it should support Hardware tracing uh it requires enabling cache yes we enable that as well with that being said we don't use Ray traced Shadows or Ray traced skylights those are two expensive at least with the current Hardware that we have even if you're running RTX 1490 okay uh Shadow Maps no those are fine nanite make sure that nanite is enabled static lighting we already disabled that forward shading already disabled that those were important ones and for VR um uh the the hmd fixed formulation level experimental I have this disabled um or rather sorry instance stereo I believe that one was was it instant stereo one of these um breaks or is able to break the preview that the shading preview uh so if you will see this kind of a jittery mess in terms of the Shadow casting then make sure to go in here and disable instant stereo as well as fist fixed formation level right here change those to disabled that will fix it if we will see this happen in this course I will make sure to go in here and show you that these settings are the ones responsible for the for that kind of behavior right now without it happening it's very hard to to show Auto exposure I personally prefer to have Auto exposure on so that it exposes properly the scene and later controlling the auto exposure with post process volume and last one is going to be anti-aliasing method I use temporal super resolution TSR method right here with the sample count set to I believe no msaa right here I think sorry um if if it messes up we will we will fix it but for now let's go for no msaa then if we go even lower or perhaps it's an another chapter uh let's just search let's go back to all settings here and in the search bar type in um yeah effect height yeah there we go support Sky atmosphere affecting height fog that's an important tick mark to have so let's take it great once that is done we are kind of finished with the general project settings let me restart uh save selected sure and after it restarts after it recompiles we will continue on with uh fixing the light and and so on for our scene there we go now this is starting to look pretty convincing with Lumen enabled you can see the Shadows are much more realistic the guns produce pretty cool shadows the darkness there is still you know not that great but if I select the light source I make sure that you have this changed from let me go here from static into movable and then it begins Shining Light right and it's all Dynamic all all Dynamic that one as well you can have it movable you know shiny so with that being said I will not be using those light sources I will be just deleting them all together I'll delete that delete these guys well maybe this is pretty cool I'll keep that um and I will just be basically stripping away the the template file into something that has less because I don't need it to be as as big to just test things out um what else is there the reflection capture our sphere reflection capture we don't need those anymore and actually for the light let me show you how I set up the light for a lumen scene so let's first of all get rid of all of the light that we have just going through this navigation or sorry the outliner I will select the directional light I will delete that keep scrolling down until I see the Skylight delete that Sky sphere delete that and that's it right light Mass importance volume don't really need it for now delete that okay anything that has anything to do with a light I have deleted these guys are still a little bit glowy but that's that's okay then under window make sure that environment light mixer is turned on so tick mark that a new window will pop up which you can talk here in the bottom where you can create Skylight atmospheric blah blah all of these uh different light creation tools are available to you the environment light mixer in my opinion is highly underused tool so create skylight like that create atmospheric light like that create Sky atmosphere like that let's look at the sky there it is doing its thing create volumetric clouds like that preparing the shaders give it a second it's gonna kick in and then create height fog as well bam like that and then for the height fog I can increase its density here to have it a little bit more or less foggy I can also make it volumetric fog let me move myself here I guess I can here under exponential height fog I can tick mark volumetric fog right here so it's going to be more accurate in this case I don't need it to be that accurate for now so I'll have it unticked okay these are all default settings by the way if your sky is black make sure that you go back to the video and where I said the effect height fog setting project settings effect I POG supports Sky atmosphere affecting height fog make sure that this one is Tick marked it's going to work done okay one last thing before we actually start the VR preview I'll go for uh I believe advanced settings okay our first little crash here and it is what it is so what I was doing was clicking these three little dots going to advanced settings and choosing a new viewport resolution to be 1920x1080 so that the preview that you see is a little bit larger once you start running the VR template um besides that not much has been changed all of our um like shadows and so on you can see that automatic exposure kinda works here and everything is neat and dandy all right so we can actually move forward we need to drop down the quality by quite a bit for this to to work because this is still too much too much of an Overkill so the first thing that I'm going to do I'll go to my um project settings and I'll go to rendering where is it rendering there we go scroll all the way down until you see VR where is it VR and here I'm just going to choose to untick instance stereo because now I um I'm 99 sure that this is uh problematic um tool as it is right now but instead I will use hmd fixed for viation level and I'll choose it to be medium Dynamic fixed variation experimental I will have this tick marked so medium tick marked instant stereo turn that one off for now at least size that everything here seems to be okay it asks me to restart I will not be restarting just now I will be creating one more thing here to drop the quality of lumen by quite a bit we need to drop it by quite a bit to make this work so under uh quickly add to the project enter this button right here under volumes I will create a post process volume simply here in its settings restart later in its settings I will go for Unbound infinite extent and bound setting out tick mark that and then here I will start changing up things in terms of Bloom and so on so the first thing that I want to do is change the exposure I think exposure compensation here is a little bit of overkill for on the bright side right so it's a little bit too bright let's do uh 0.5 something like that so we just darkened the scene a little bit once you put on the VR headset you don't want things to be overly overly bright um then in terms of lens flares I want their intensity to be zero lens flares at least for me they really mess up my perception of you know what's far what's close really gets into my eyes so I will tick mark those and make them zero intensity last thing or not lasting rather uh if we scroll down here to Global elimination method Lumen that's great and where we see Lumen Global illumination I will start messing around with these settings give me a second I will play around with this to see what works the best okay let's try this out so we are dealing with uh Lumen Global illumination set to lumens scene view distance at you a thousand millimeters or sorry a thousand centimeters which is uh 10 meters Max Trace distance also 10 meters lumenscene lightning update speed 0.5 and final gather lighting update speed 0.5 those are the settings that I have changed here then in our project settings I have also worked on here if we go 444 back and most of the settings by the way are under rendering I have changed the the the where is it I have rather not changed but noticed that we are not using Ray tracing so I have uh am I blind hardwood retracing hello there we go support Hardware retracing that was tick marked but under Lumen I didn't use Hardware retracing when available so make sure that this one is sticked as well with those done we should be kind of good to go to test out if this is going to crash or not so let's see right now put on my headset takes a while okay how are we doing with the frame rate it says 45 I'm happy with 45. that's a stat uh GPU let's go for stat GPU and everything seems to be quite nice okay so we're at around 60 frames per second one trick that I am using is this scalability which you can enable if you go to your let's go here if you go to settings engine scalability settings and you play around with the scalability right here so I'm using medium for everything except for Global elimination where I use high let's see what happens if we go full blast with high for everything you can see by the way that the quality immediately jumps but also the frame rate immediately drops so we'll see uh let's press play again now we're at around how much is it 30 all right yeah around 30 frames per second which is not ideal uh but if I wasn't recording this uh this video this would be just fine oh now we're back to 45 so maybe it was just a hiccup okay so now this in terms of light and Lumen we're kind of done uh now the next step is to actually introduce nanite into the scene and nanite is already oh by the way let's turn off the profiling so let me type in um tell the key that's right below the Escape key you have the tilde key and type in stat GPU to turn on or off the GPU profiling table then tell the key again stat unit to turn on and off the timings in milliseconds of the performance that unit let's turn that off and the FB FPS I will keep the FPS so that you can see it we're at around well actually now we're at around 60 well 50 which is great this is working just fine all right okay so with this done let's move on to our next step which we will call nanite everything and also import an actual project into this template all right so let's talk about nanite before we actually start importing things because here in this scene while nanite is indeed enabled it's not being used what I mean by that is if I go to the previous settings here which is currently lit and I go to nanite visualization and I choose triangles you can see that only these objects right here are running nanite everything else is not so we need to make sure that all of the objects here that we currently have in the scene is already nanite first of all what is nanite that is a dynamic um geometry optimization tool which works like magic that Unreal Engine people have developed which enables us to have really high complexity models and are seen without sacrificing too much of performance so before we move on I will delete a bunch of stuff here in the in the scene because I don't need it and I will just keep um just the platform there we go just the platform you know and there's this kind of a playing area here just so that we can carry around some stuff later down the line into the interior of our house so everything that is left I want to make it into nanite how do you do that well for for instance this object right here which is floor right I can just navigate to where the static mesh is which is SM Cube I click on this browse to um SM cube in content browser there we go and it's going to show me all of the objects here that you know are used in this scene I think most of them so I'll just select all of them holding down the shift key right click on them and where it says nanite I will enable that tick mark that right takes a little bit of time recalculates uh let's just double check yep that is Tick marked great now if I go to nanite visualization triangles I can see that indeed these objects are now nanite there is one object that is not though and that is the gun so let's select well let's go to LIT mode Let's select the gun and in this case the pistol is actually a blueprint right so we can't directly access its 3D model through here we need to actually go into edit pistol right here which will open up the blueprint of it and where we see skeletal mesh gun where is it but there we go skeletal mesh gun under mesh we can navigate to it see so skeletal mesh skeletal mesh acid that is being used I click on this browse too and now if I close this in my um how do I say this in in in my um content browser this gun mesh will be selected you can right click on it and then remember that it actually cannot be nanite because it's a skeletal mesh I'm being stupid never mind so we we keep it the way it is we don't change it to nanite ah and it's me who's recording a course huh forgetting that skeletal meshes cannot be nanite anywho let's start importing things and changing them into nanite as well so to import um we will be using data Smith for that because I'm a rhino user myself and all of my 3D models are in Rhino and in architectural um like field you usually either use Rhino or Revit or archicad so you will be using data Smith first of all you need to make sure that data Smith is used in your project so you go to settings plugins type in data Smith and make sure that data Smith CAD importer is Tick marked if it wasn't tick Market restart your project here safe selected it's going to restart and then you can see all of my recordings for this course already a lot of ticks so once it resets then restarts then you will have your data Smith import option right here well sorry under here in the top add quickly add to the project data Smith file import already covered this in the previous video um the introduction to Unreal Engine 5 for architectural visualization so if you want to learn more about this make sure to check out that video so I'll click on file import actually sorry before I do that I will create a new folder in the content folder just call it a folder called it house there we go double click there and now under a quick a quick add button data Smith file import I will navigate to one of my buildings that I use for rendering examples I think we will use the same one as what we did for the last previous course so under Unreal Engine file data Smith base model there we go open up that one navigate to the house folder hit OK asks us what do we want to import in my case it's only the geometry I click on import and it's going to slowly get everything in here give it a second these files by the way I keep pushing this I know but they are available to patreon supporters there were some issues let's see the message log can't find one mesh that's fine that's probably just my my mistake anyway so now this uh model gets imported it's pretty far out so let's just select one of the objects here press F to zoom in here it is and it's climbing right on top of our nice little platform right so I need to move it slightly away or I need to move the platform away in this case I will do that with the model so here in my outliner I will choose base model right here because that is the main kind of compartment main folder that holds all of the geometry so base model and I will just move it away maybe to here something like that I prefer yeah I prefer this something like that instead okay great so now uh there are a few things that I want to fix uh thing number one is this platform right here this box right here I want its size to be different I don't want it to be that big I don't want it to climb into the house so here for the scale I will just simply change the X scale of it so that it stops right before the Terrace and maybe we can even make it even smaller something like that and please stop before that there is Begins the ball should be somewhere here maybe okay just small adjustments bear with me I want it to be neat and tidy there we go okay so that's done that's our post processing volume that can just live somewhere actually that can live anywhere in the scene I will just have it to the right um and our camera for navigation or for external view we can just change the angle of that camera to something like this yeah I should be fine okay I think we are kinda ready to start working on this geometry right here so our base model as it's imported uh as a data Smith file will have a geometries folder inside which we double click and here we have access to every single mesh that is used for this model so what I do is I select every single mesh I right click on them I choose to I choose data Smith sorry I choose nanite and I choose to enable nanite bam quickly really quickly recalculates the geometry to work with nanite okay great so that works then next thing to do is actually to find every single object that is within the glass layer this is important every single object that is within the glass layer we browse to those objects hello is it Rd selected let me give me a second I'm just gonna make sure that we are selecting them perhaps we are not uh while I'm while I'm investigating this oh they're right at the start well I'm investigating this um the reason why yeah okay we're not selecting them the reason why uh we are fishing out the glass objects is because nanite currently at the time of recording cannot uh have translucency meaning that all of our objects that are glass these guys right here they need to not be nanite so I'll have this disabled or unticked please antique there we go all right so now uh I think we need to just check the performance if that is being hit to too much so let me turn on the headset okay airlink connection lost give me a second do that do that that one launch there we go and now I should be able to play this in VR okay how's our resolution that is not too bad this time around let's walk so if I try to walk right now uh am I yeah there we go if I try to walk right now I'm I'm able to wait am I talking into the microphone I'm able to walk right up until the end of this platform but I can't walk any further and that is for a good reason there is no navigation mesh meaning that the I really want that gun meaning that the uh game does not enable us to walk also one more thing notice the collisions they are not they're not working right well first of all the the gun bullets don't bounce around we will fix that in just a second but also if I were to walk towards there um the collisions wouldn't be accurate so I need to change two things before we can say that the geometry has been successfully imported first thing to change is the the collisions so again selecting every single piece of geometry in our scene just like that right click right click on them not in our scene but in our imported scene I will choose to I will choose asset actions and I will choose to bulk edit via property Matrix right here this enables us to edit the for instance the collisions in this case for every single piece for all 1681 static meshes so I'll go to the attic mesh I believe I'll just type in Collision Double L T O L L engine Collision uh Collision complexity instead of project default we choose use complex Collision as simple like that so that means the geometry of these static meshes R is going to be used to calculate the Collision which is quite important I save all while see wall once it's done you can close it and move on so that's step one making sure that the Collision Works step two is going to be making sure that the the the the in that we're able to navigate uh to the mesh or to the building right so with this closed let's check out the navigation if we look closely which we won't but let's try yeah there we go that's the navigation mesh bounce right here there is this actor called nav mesh bounds this this actor if I remember correctly is a g no it's not g uh uh is a tab no it's not tab caps locked no oh no uh one second I need to check or actually we can just do this um for perspective we can choose cinematic View and it should show us no never mind it doesn't okay give me give me a second hey I've just simply forgot it's the letter p as in pineapple if you press that if you press that there we go it shows you what that navigation volume is going to be well navigating I guess so where you will be able to move around so in our case we want to take that volume and move it slightly over here something like that maybe a bit larger here and we just want to make sure that we're able to navigate inside of this room right all throughout and also around the building so I need to actually make it a little bit bigger which you can do by is it no it's not changing the scale or is it now I'm scared no no it's brush settings yeah it's brush brush settings changes the size of it right so that's X that's why like that something like so and the set we will work with the set in just a little bit but does that basically controls um how how far you can move right so not not how far you can move but uh how high up you can move so if I were to increase the set here in this case for instance the table uh if I increase the set to 2 meters then we can also jump on the table in our case we probably don't want it so I'll make it a little bit less like 50 centimeters there should be enough for us to be able to navigate through most of it even on top of the sofa which I kinda dislike so let me do it a little bit less 20. okay 20 is a mistake 30. 40 there we go 40 gives us the possibility to move around most of it and end kind of the sofa as well it's actually fine oh but uh also since this platform is raised we're not able to move here outside so we actually do need to have it pretty high up let's go for 70 then whatever I'll use 100 that's fine okay so that kind of concludes or and press P2 to stop the preview that kind of concludes the import portion let's just check if it works and if I didn't make any mistakes and if the frame rate is still acceptable uh press play how are we kind of good kind of good and gonna lie oops sorry about that um you can see me putting on the my hands um so now let's do this let me move slightly away so that I have more more room of course the microphone is right at the uh come on table as well there we go the microphone was right yes right in front of me so it's a little bit annoying but now if I just ah throw it you can see the bounce right uh let me let me do that again ah come on come on where is it no no okay usually you do this in a room rather than by by the computer so so you want like a free a lot of free space for experimentation the this still does not work that's because the problem is in the bullets right off of this gun it's not the problem with the with the collisions of the house because you saw that on the freaking the box for instance come on there we go you can see that it bounces quite quite well okay let's go around and see yeah it seems like the exposure Works quite well I know I I look like an idiot and right now I hate how people look like with VR headsets on but hey it is what it is okay so the house looks fine um I will be texturing it next up and we will be going inside of it because right now if I go inside of this house that's not gonna be not gonna be great let's see if I'm gonna be able to come on no it doesn't catch it um maybe maybe if we go here there we go so now I'm inside of the of the house you can see automatic exposure kind of starts picking up but the fact that it does not have any openings uh really messes with it so that's the next thing that we're gonna gonna be fixing all of this is gonna be glass okay Next Step let's go it's gonna be materials alrighty then let's talk about materials now so in terms of VR applications the materials are pretty straightforward it's the same approach as what you would do for any architectural visualization project except for glass glass is still quite quite expensive so I will show you how to create a you know a cheapest so to say in performance wise glass material that we can so under our content folder I'll just create a new folder call it materials double click that and here just right clicking on the empty space I'll choose to create a new material like so call it Glass Master great now double clicking this material a new tab is opened that I can drag and drop right here dock it so that we have two tabs here available for us and in this Glass Master material preset uh or not preset just material we're going to apply the base color the specularity if I remember no sorry base color metallic how metallic it is the roughness and the opacity as you can see the opacity is not available for us currently so we need to change our material blending mode from opaque to translucent there we go once we've done that now the opacity is possible but the problem now is that everything else is kind of kind of gone right so I need to change the shading model or sorry the not the shading the lighting model lighting mode from volumetric non-directional into surface translucency volume like that okay so now uh what kind of a color base color and so on do we want well I'm just going to create a few numbers here because we'll go grayscale so all we need is just single values between zero and one so for the base color let's just hold down the key number one or key one on in your keyboards press 1 and hold it and click your mouse this will create this parameter node or not parameter sorry this scalar node you can also type in here right click here anywhere on the screen and type in constant sorry I just woke up I I need a minute you type in constant and you can choose that it's the same thing right so the shortcut for it is just holding down the key number one and pressing your mouse button okay and here I'm just going to change this into a parameter so I'm going to right click on my my constant node and convert it to parameter like that and call it um base color there we go this color connect there now I'm going to copy this base color node Ctrl C Ctrl V and drag it just a little bit down I'm going to select it and here on the right hand the left hand side under parameter name I'm going to change this to metallic and connect it like so and that's the name of the game we need two more nodes one for roughness and one for opacity so I'm just going to borrow these two drag them all the way down here one is going to be connected to roughness one is going to be connected to opacity and I just changed their names roughness and I'm lazy so I'm just gonna say oppa oppa for opacity okay what kind of values do we want to work with well for base color and metalness or how metallic it is we want once so I'm just going to say that the default value is 1 here and one here right then for our roughness we want it to be slightly less rough um or sorry not perfectly smooth slightly rough so I will go for uh 0.96 something like that or is it a other way around is it 0.04 well we'll figure it out and then for opacity I will go for just slight little Peak 0.1 you can barely see let me go for 0.2 so that you can see better 0.2 can kinda see the glass right here it does not change it does not bend the light it does not do anything because we will be using it just for the flat sheets right so we don't need it to to do anything more than what it's doing right now actually the roughness let me see yeah okay so 0.1 roughness creates the reflection much better um sorry it was it needed to be opposite so 0.06 right something like that for the roughness I was thinking of glossiness so again one for base color one for metallic 0.06 for roughness and 0.2 or I would say 0.1 for opacity let's save that close that let's create a derived material instance from this Glass Master material I'm just going to create a new folder call it instances right click on my Glass Master material and choose to create material instance like that call it glass just glass and drag it over or move to my instances folder like so okay great now let's apply the glass material to our windows so to do so I'm just going to select one of the windows and immediately on the left hand right hand side it gives me the glass layer where all of my windows are placed that is because in Rhino as I was modeling it I was I placed all of the um geometries that will be glassed preemptively into one layer and just drag and drop in my glass material after selecting all of them into this material tab right here bam and then we have questions I guess why the hell is this not working I'll the first assumption that I have is that these geometries are still nanite and nanite does not deal with transparency or translucency let me double check so this guy right here I just click on this browse to Europe 17 in content browser button right click it in the content browser go to nanite and yes indeed nanite is enabled for it so if I untick nanite or if I disable nanite you can see that now the translucency actually works let me just check one thing real quick to see if maybe in 5.2 they already fixed it so here in my Glass Master material if I type in nanite yeah okay used with nanite that's tick marked and unfortunately yeah unfortunately uh it still does not the translucency still does not work with nanite that's okay okay so what we need to do is we need to disable nanite for all of the glass that we will have let me just quickly uh browse and I believe it starts in B rep 12 and ends in B rep 33 that's going to be B rep 33 like that right click nanite disable nanite we're done easy peasy lemon squeezy okay so that's glass yeah yeah we're that one we're done with uh the grass part now in terms of actually applying the photorealistic materials we will be using of course the quixel bridge this button right here quick sell Bridge which gives you this little tab right here if you don't know what this is again suggest looking at the beginner course Link in the video description but basically it's a library right a library of materials that you can use with not just materials assets as well that you can use with Unreal Engine so in my local already downloaded assets I have like a banana and stuff um and I have plenty of of geometries already downloaded and I'm just going to get a few of them in here so let's start with let's see floor yeah why not Chevron Walnut Park it export medium quality bam immediately arrives here we have our textures we have our material great we're good to go so here oh I'll select the floor I can see that I do have a how do you call it like a layer called Arquette or actor in this case and I all I need to do is just this material instance that we have downloaded I just drag and drop in to here give it a second it needs to calculate and now we're good to go now now we have a pretty convincing floor neat huh I like it all right so that's I'm going to of course not show you the whole process or rather I'm going to speed up through the whole process of me slapping on all of these materials uh but before I do so one last thing to to show is the assets so in VR we can't really have a lot of trees that's that's too heavy so instead we will need to do some sort of a more of a Icelandic landscape wipe instead of Forest wipe for this particular shot so let's go for home 3D assets nature I would say probably Rock volcanic [Music] yeah and we have like a bunch of Icelandic rock formations and and whatnot so I'm just going to I should probably just download one of these I already I think I already have one of these so let me just quickly now I just have forest floor huge Moss you rock embankment apologies for for making you wait everything that I have is um Forest based Forest Rocky embankment okay so I do indeed need to download something here through the assets again nature um let's just see embankment for a second Tundra uh Tundra Rocky ground we we can get that one in here why not okay so I will just select it make sure that you first select it and you change the quality from medium into nanite nanite I click click on download now it's going to take a little bit of time to download because this is not you know a lightweight piece of geometry so make sure that as you're downloading these guys that you are not um what's the good good word you're not over exerting or you're not over complicating things so you say you don't have too many elements different elements because even with this single patch you can create a pretty varying scene by just simply copying this patch right the more of these different patches you have the more complex and or or the more requirements that the scene will have and the more your graphics card will suffer while it's doing that thing I'm going to also actually Mossy Forest ground that's kind of no never mind I'm going to download this one and maybe this one as well these three okay well while it's doing its thing let's go to local and let's let's just see if there is any kind of uh well that's wall but we might be able to use that um any kind of materials that we can already kind of get up on our geometries for instance the roof the slate roof I'm going to export by the way the materials are in medium quality um it's just that the the difference between medium and high material quality is not big enough for me to say that the graphics card should take the hit so same okay so we have our tiles here and I'm just going to put up the roof and voila we have now our slate roof as easy as that let's check if the 3D model has downloaded probably has a filter types 3D assets do we really need to restart for it to register okay fine we're gonna go the the long way oh never mind they just downloaded come on show me yeah there we go Tundra Rocky ground export tonight it gives us the nanite mesh in here it's going to prepare it and once it's done we can just slap on oh sorry that's the material instance make sure that you're not applying the material instance instead you're taking the static mesh or within your mega scans 3DS tender Rock You just drag and drop it in something like that and shall we take a look at it at its quality and also add a hit in the in the performance that it's going to give us e to rotate by the way W to move R to scale something like that one second I'm going to grab my and grabbing the headset mm-hmm okay we should be able to to play now it's still loading um if I just zoom in here you can see that the quality of the asset is pretty damn good but we need to make sure that it does not lag out our VR um application so let me press play how does this look okay looks pretty good um let me just do a quick um that FPS and Stat unit okay so we're at 45 frames per second with recording the video meaning without recording the video we would be closer to 60. and if I'm looking at the ground we're maintaining we're maintaining the 45 frames per second let's look at the the glass if that is yeah that also retains nice that also retains the 45 frames per second I'm happy with that okay one more test and then we will do fast forward I'm just going to take this take this mesh and holding down the ALT key I'm going to make a copy of it e key I'm going to rotate it like that or maybe even like that place it right here then maybe one more ALT key w I just want to see if having six of them for instance if that is going to destroy the performance or not this will inform me if I can use nanite meshes to tile the whole environment so let's try this again we were at 45 I can't see where am I press play come on okay that took a while to load in it seems like there is a little bit of screen tearing in one of the eyes that's the wrong arm sorry let's see if that is seems to be okay except for uh a glitch in one eye which I think is due to this might not be yeah you don't even see it on the screen this might be actually due to the recording um so I'm going to stop the recording right now and I'm going to check just simply check if um if it still messes up and if it does then we will need to investigate but if it doesn't then it's from now on it's going to be a fast forward of me applying the materials the the process is the same download slap on download slap on until the environment is pretty foreign [Music] [Music] [Music] [Music] [Music] foreign but we do have ourselves a little bit of an environment that should be good enough for me to kind of show you that we indeed can use nanite with VR and now before we finish with the on the materials and assets side I kind of want to just show you the the gun part and how you can use that to really explore the possibilities of lumen so let me press play what we're gonna try doing now is create Collision for these bowls that it's shooting and also and also try our best to to create a material that shines light so the balls would shine light so one second so in terms of the the material first of all I guess all we need to do is just go to our materials tab create a new or folder create a new material call it emissive there we go go in here change the base color to um actually whatever whatever color you want and change the emissive color to whatever color you want so I'm going to use constant 3 Vector for the base color which actually does not really matter so it can just be black because black body will shine light either way like that copy paste plug that one into actually we choose a color let me explain this better we choose a color for the emissive right so that's the color that is going to shine this Blackboard is going to shine so I'm just going to choose whatever color there is like that pink sure like that and also I will apply strength so that's how strong the emissive material is going to be so I'm going to multiply multiply by a constant all right so that's again me holding down the number one clicking and creating a constant node here connect there there we go and now we apply it or connected to a music color since the constant right now is set to zero that's not no good so I'm just going to change the constant to well actually let's make it parameter and call it strength or emissive strength and change the color convert to parameter call it color here we go save that close that let me hide the nanite all nanite meshes so that's a little bit faster than for this emissive material I'm just going to duplicate it or sorry not duplicated my bad my bad we don't do that we don't do that I'm going to right click create material instance and call it um emissive one mr1 just drag it into my instance folder like that move there double click it's now here double click on it and let's edit our material instance so I'll tick mark the means of strength as well as the color and as I'm increasing the strength you can see that first it gets a color and then is going to start Shining Light so I'm going to go for something like 20. um I have no idea if that is strong enough but we will try and now I want the bullets that these guns are shooting to first of all bounce and then to be uh using this emissive one material so I'm going to select one of the guns I'm going to go into its uh blueprint edit pistol right here and here just by reading the blueprint I can see that um spawn the projectile there we go spawn actor projectile class projectile so it's basically every time you press the button it spawns this actor of this class so I'm going to click on this browse icon right here and it immediately gives me where that actor is located in our content browser as per usual I will double click on it and here I can change anything I want about the projectile right so just seeing looking at what we have here we have sphere Collision that's perfect we have static mesh great and we have projectile movement so to make it bounce it's actually super simple you go to projectile movement and here on the right hand side you should tick mark should bounce that's it and then to change the material you go to static mesh and you change element 0 material to emissive one like that compile save and just in case you have that one as well press play okay uh fine this works and now with this book yay well those guys don't have Collision or you kind of do don't they a little bit but you don't have accurate collisions so that won't work but now we have ourselves like a gun that can shoot stuff that is let's go there um a gun that can shoot uh stuff that you should shine light how cool is that let's go to somewhere dark nice huh kinda like it uh hello where am I oh we're in the bathroom they do have a like a lifespan course it's a nice bathroom isn't it oh all right so that works um but put it in there okay now we since we're done with this this part next up is going to be us creating the like a blueprint to open an open source which is super I have to go for more Dynamic uh more Dynamic things yay okay I'll see you in the next chapter okay actions let's make it possible to open up a door with one of these right let's say a trigger button like so so to do so we need to First be able to understand where we're pointing for unreal to understand where we're pointing when we are actually pushing the trigger and and so on and with Unreal Engine 5.1 I believe or 5.0 uh now we are using enhanced action mapping I believe it's called which has a little bit different of a system for actions and like recording keys and and whatnot so this one is going to be a little bit more of a follow along the first thing that we need to do is we need to create an action that will be mapped to us actually pressing the the button right there so to do so let's go to our VR template let's go to it should be under input there we go perfect under input we have all of the different states in which the inputs are registered the default state is the one in which we are spawned into and weapon state is when we are holding a weapon so the different inputs change what they do when you're holding the weapons in this case we will be editing the default state but not just yet first of all we'll go into actions and we will create two actions so I'll right click I'll choose input input action and here I will name it r underscore interact or sorry let's just do a input action I a underscore oh you don't see it uh my bad my bad my bad there you go I a underscore interact right IA underscore interact underscore right hit enter double click it you will see all of the different settings that that action can have we don't really need to change anything about this at least to let me actually double check I don't think we need to change consume input yeah all of this is fine so we can just close this you don't even need to open it up okay so we have our indirect right action and now I'm going to just duplicate it like that and call it IA interact left you can also just create a new new action and name it that way doesn't really matter but we have IA interact right IA interact left okay great to call these two actions we need to go back to our input folder and where we have input how is it called mapping context input mapping context underscore default if we double click that then we will have all of our different mappings right here so I a move turn and if I expand that you can see that for Oculus touch a thumbstick thumbstick y-axis makes us move right so here we actually need to add our two new mappings to do so I just click this little plus button right here there we go new app new mapping was added I'll expand this and I'll just type in IA underscore interact and let's start with the left one left there we go direct left okay with this done now I need to actually say what triggers the left left interaction or or interaction of the left arm so I need the correct left controller like so and basically it's going to be this trigger right so expanding this I can go to my Oculus touch and find a Oculus touch left trigger axis right here there we go so once I press this button in the default setting the interact left the left action will be called forward I will repeat this for the right hand side so for the right hand side we one more second no nothing else needs to be changed okay so for the right hand side I just create a new one choose here interact right and there we go and Oculus touch are uh where's where's trigger axis there we go once that is done we just save close now we have the two actions uh actually made and ready ready to go so how do we call them well we should call the actions inside of our player character or player Pawn the player Pawn is located under VR templates blueprints VR on right here double click that and this whole Behavior chain or menu will pop pop in and just to kind of explain let's see here enhanced input action I a turn uh if it if you start that action then your character will the turn will snap to the right so you're you're turning by I believe that is going to be 90 degrees or maybe it's a smooth turn I'm not sure I don't remember sorry uh I believe it's it snaps to 90 degrees right so stuff like that so we're creating these kind of actions to trigger a certain event that happens in the character so in our case we're going to create a new one perhaps right here there's plenty of space here and I'm just going to right click and type in IA underscore uh interact and let's go for the left one or let's go for the right one actually interact right that's uh I'm left-handed and all of my stuff is on the left hand side so for me my right hand is a little bit more free so once that is uh set up now we need to say okay once the action uh begins once uh I trigger the button what happens right and what needs to happen is we need to shoot out a beam from our controller just outwards straightforward and see if that beam hits anything right it like shooting again so when we start an action there needs to be a line phrase by channel line Trace by Channel needs to happen line Trace by Channel there we go and basically a line Trace is it has a starting point and it has an end point so it's it's uh like a line right and and whatever the line hits we get it as an output here you know whatever object is being hit by the line so our start uh should be where our controller is currently in the world right so to do so I need to first get the motion controller in here and I will just type in get motion controller data no uh there should be something else um sorry one second motion controller crawler left all right right right aim oh there we go get motion controller right aim this one right here that's the one that we want bam I get it from it I can extract get World location there we go and that is going to be where you know the position where the beam should start from then the end of the beam should be well basically we need a direction and we need a length for how long the beam is going to be so to do so I'm just going to again I'm dragging out from get motion controller right aim dragging out and I'm going to type in get forward vector that just simply goes out right so our forward Vector actually I'll need like a Microsoft Paint for this okay so let's say we live in 2D world right and we have we have two axes actually can I just use a brush please there we go beautiful two axes X and Y and this is zero zero zero comma zero right zero zero coordinates so what we get from get World location of our controller is the position of let's do it in red the position of where our hand is in this world right so it tracks the position of the hand and then get forward Vector is basically if uh let's say I'm holding out the hands uh or I'm holding the gun or the controller um let me use some sort of other color this direction right uh the get forward Vector what it gives us is a vector that starts from zero zero always starts from zero zero right and its length l equals one the it's unitized Vector right so the length of it is one so what we need to do for for this to actually work is we need this vector um this this guy right here to actually start from our hand from from this point right here we don't want it to start from zero zero a quick Vector math tells us that if we simply um add these two vectors up together like add the coordinates together with the vector we will be simply moving the vector right so it's going to then be placed here but the length of it is still going to be one like one centimeter that is way too too small so before we actually move it we need to take this vector and multiply multiply it by let's say a thousand so that it's 10 meters long right so that's the first thing I will just take it multiply there we go uh here it asks me for like numbers for three so if I want to multiply X Y and Z separately no I don't so I'm going to right click on this input and I'll choose to two integer right here and then I'll just type in a thousand so now our Vector the forward Vector right here is uh this this guy right here a thousand units long now all we need to do is just place it here and as I said the movement the placement is just adding the two vectors up so from here add this one just a plus sign add up and then use that as our end right not necessarily that we are specifying a vector anymore we're actually specifying apologies we're actually specifying a point at that moment right so we're actually saying that yeah it's it's here uh and and it's going to let line Trace is going to create a line between the two points but in my opinion like explaining it through a vector is kind of is a little bit uh clearer anyway so every time we will press the button the trigger it's going to draw a line that is 10 meters long away from our hand um and the line is going to be aimed because we're getting the forward Vector of our hand great we can move on so then we can say okay if this triggers right then let's do a branch let's create a branch and if this triggers right so if return value is true then this output will trigger if this does not trigger so if we're not doing anything with this then return value is false if it's false we don't do anything if it's true we need to do something with um sorry uh one second let me think if we shoot the line uh the true statement should trigger some sort of reaction in the world you know in in this case in our door so now is a good chance to just compile this save this for a while um go back to our close that or actually don't close that sorry let's just dock it because we will be revisiting it shortly but rather going in here and creating some sort of a testing object which we will be able to um to trigger right so I'm just going to do something very quick um here under context I will create a new um folder call it blueprints double click that and in this folder I'm going to just create a new blueprint class which is going to be an actor like that I'll call it uh interact box interact box double click it and here in this I'll call it blueprint viewport let's create actually add a box component you can do so in the left hand side under add you can choose Cube simple as that Cube there we go I don't need it to be fancy so I'm just going to have it the the the way and the way it is right now that is absolutely absolutely fine we will make it rotate around its Z axis when we hit it right so now let's go into event graph and here I'm actually going to delete all of the events because the event that I want to the event that I want to trigger is actually going to be um from a different blueprint right so we need to create a new type of what's the word apologies uh we need to create a blueprint interface which will be used to trigger so our line Trace will trigger that blueprint interface and it's going to transfer into our interact box and Trigger here right so we're basically going to use this kind of a in between blueprint between the two uh between our character and our box that we're trying to rotate if it's confusing hopefully once I start building it up it will be a little bit less confusing so to make this kind of an in-between messenger so the same let's go to our map and under blueprint um folder let's create and interact uh blueprint interface so under here under blueprint there is a option to choose blueprint interface right here I'll click it bam I'll call it interact BP let me just double uh double click it to uh to check if there's anything that we need to do wait is that um seems like everything here is fine except that okay so when you do interact um BP when you open up your interact blueprint make sure that your function is named something that you will recognize recognize in this case I'll just call it interact there we go and here there's the description category we don't really need to do anything else here we just name the function that's that's about it we compile this we save this and now we have like an in-between messenger that is going to get triggered by our character and we'll send the information to our box so how do you first of all how do you trigger it well you need to create a like the interact uh interact message right here so you need to message it right that you're being interacted with like that the name interact comes from this function right here that we have renamed right so whatever function name you gave it here that is the name that you're going to be writing right here right so in my case it's interact okay then when this is true we send the interaction or we trigger the interaction into uh what's the word into this interact blueprint okay now the question is how does it know if if we have like five different um five different doors how does it know which door it should send the information to do we need to create separate interact blueprints for every separate door no no we don't because there's the Target right the target is what object that receives the interact message that yo we should trigger Which object is it and we can say Which object It Is by asking the question by okay which object is being hit by our line that is shot out of our Pawn so output hit we drag out of it and we type in break break hit result and we expand it the thing that we want is called Hit actor I believe hit component no hit actor that's that's the thing that we want and it basically is going to say that okay by shooting the pointer the light the line you hit the Box uh our interact box you hit that and then the interact blueprint will transfer that information that it's being hit into the interact box right so this will just to do send it over okay we compile this we save this then interact box right here we will use interact um one second I need to remember this one because it needs to be like um like an event I believe um let's try this event interact hmm there's no event to interact oh no I'm I'm I'm forgetting something important give me one second I'll I'll figure this out if I remember it I remembered what I forgot okay so under um we we don't have an interface kind of connected to our indirect box blueprint the the one that we will use that will spend right so we need to go to our class settings right here then under interfaces you can see that there's no interfaces at the at the time so we need to add implemented interface and here we type in interact blueprint this one right here interact VP right now you can see that a new interface is created here that can be used to trigger an event inside of the Box an event of spinning when we shoot at it so we compile we drag over this function what um one second maybe it's just interact at this point call function yes uh yeah call function interact nope oh my God event interacts there we go finally it's event interact we just create one here and then we will specifically just say okay when this triggers the Box should spin so let's create a timeline or rather yeah let's create a timeline add timeline like that call it box spin doesn't really matter right uh then let's go for f8 no not if it's sorry sorry uh just double click on it yeah double click on it because we need to add a track to the timeline so click on the TR at track uh well before you add it or I guess you already did it so let me or no no sorry sorry again before you add the track let's change the length of the track so how fast should the door or box in this case spin 1.5 seconds should be good enough you can adjust this later down the line that's that's fine and the track that we're going to add is going to be add a float track like so and we can call it box spin box spin there we go so over the course of 1.5 seconds the output at the start should be zero right and the output at the end should be uh one or should be like the amount of degrees so let's do 90 degrees so let's right click add key right here and say that our time is at zero the value is at zero that's great and then the next one add key right here the time is at 1.5 but the value is at 90. oops did I mess up 90. I believe there should be yeah zooming in Okay so I did mess up time 0 or time 1.5 value 90 again press the zoom to fit horizontal Zoom to fit vertical so now you have this kind of a motion going on uh from 0 until 1 1.5 the motion is going to be linear so it's going to start sharp and it's going to end sharp right so the animation is going to be a little bit jerky so to fix that we will just right click on both of these key points right here and we will choose that it should be Auto Auto smoothness here Auto smoothness here that will just make it kind of make the transition nicer okay once that is done we can compile save go back to our event graph and we have our little animation that is going to play well right now it's not even animation it's just a number that's going to be increasing with that number we need to actually rotate stop so we will set relative rotation for what for the cube for now just I guess we can rotate the whole scene yeah the full scene root for now set relative location uh default scene root or not location sorry rotation default scene root like that the update goes into the trigger box right here and the rotation is going to be translated from the box spin output here so we're going to make or we can drag out from here make rotator uh just here make rotator and we're rotating around the Z axis so we just connect box pin to Z like so compile save I believe that is it now we can actually try it out let's see one one last thing yeah one last thing go back to your VR pawn and here under draw debug type let's just choose to um have persistent line traces so it's actually going to show where the line is being shot okay let's compile let's go back in here uh probably I'll just drop all of the like the quality right now to medium just so that it it runs a little bit smoother um and I will take my blueprint and just kind of slap it in here like that that's the interact box blueprint right now let me one second let me grab the headset uh come on hands there we go so I'm I'm just using that okay fine I'll use the controllers come on register controller yes another one pew yeah yeah okay so I'm just going to quickly connect my headset to the computer it's loading in I'll try we'll see if that actually actually works should work though don't see why why it shouldn't let's let's press play I'm just using stat fps to see if I can talk because if the frames are too low then my microphone does not pick up anymore the the audio um seems like it's gonna gonna work and I believe we use the red uh sorry the right arm to do the the test so oops let's let's move back and let's shoot Pew nope there we go you can see and I actually can only shoot once because now it's rotated 90 degrees and we can't you know we can't shoot it more but that's that's the line Trace you know from my arm people seems to work and it did root it so it we we have a working blueprint yay now let's make it nice now since it works let's make it nice so the first thing to do is actually to well interact blueprint we don't need it anymore we can close that but interact box we need to somehow um the first time we shoot it it needs to rotate 90 degrees forward and next time we shoot it it needs to rotate 90 degrees backwards so to do so we need to create a new variable I'm just going to clip click the plus sign here under variables and I'm going to say um open or Box open I know it's like not open but let's say the trigger is it's either open or closed right so it is a Boolean and I'm just going to drag it in here get box open like that and by default I believe we should say that it's uh is it open or is it closed um doesn't really matter so for for now let's just say that by default it's it's uh wait let's compile let's let's have it closed right so it's unticked here now with this uh done let's create a branch here between interact and box spin branch and when it is uh closed right it should open so we should play the animation but when it's open when this is true sorry uh when open is unticked that means it's closed so when it's closed it should play from here or we can do it this way like that and this is Tick marked okay that that's gonna work and then when it is so so I'm tick marking the Box open uh click Mark here so when it's true it should play forward and when it's false it should play reversed right so that it closes okay that that should work um in in terms of opening and closing but now as we close it or as we open it uh the state of this uh Box open should flip from whatever it was before so I'm going to um let's do it this way uh under box spin I'm going to ask is this number larger than greater than one so are the degrees greater than one and with event tick with event tick I will set my box open ah come on set my box open so you just drag out your box open into here and you choose to set it to be uh true because the moment when the door or the Box in this case opens up by more than one degree this will trigger that it's true and it's going to go in here and say that this is true okay so this should technically work let's see let's compile this save this and play this put on the headset real quick okay and shoot well okay that didn't work out at all okay let's see what we're uh what we're dealing with here so uh to troubleshoot these kind of things what you do is you create a print string node print string in this case if this event triggers in my interact box also I should compile and save this if this event triggers in my uh print string oh sorry interact box blueprint then print string will be ran okay let's so let's see bam foreign that I hit the Box a hello appears on the screen that means it's triggering okay that that's that's a good thing then the Box open should run this oh but the Box open should be unticked then now it should be ticked right uh it's it's always okay so another thing that we could do is we could check what happens after the animation as the animation updates right here so I feed the print string in between and I will connect the Box pin so that those are the degrees into the string input right here compile save play foreign for some reason it goes straight to straight to zero which is weird uh I think I messed up here with a branch okay so let's let's think about the situation here if the door is open this should true should play in Reverse oh okay okay so it should be like this crossed right so false should play true should be in Reverse now this should probably work there we go forward backwards okay so it it was just the nice it was just the the the this this logic right here that I messed up so I had the door already open and I tried opening it again so it just didn't work or I had the door closed and I tried closing it again and it again didn't work right so that's uh yeah that that ain't good that thing good but now it works okay so in terms of the blueprint uh here we are kinda done right now for our VR Pawn I still want to do uh one last thing before we before we move on the line Trace is quite ugly so instead I have prepared let me just open it up to show you uh okay you can't see it in here but you can see in this icon right here Paul dot PNG um this is just a little pod that will show us where we're shooting you know instead of that ugly line so the way you put down the little cat paw at where you should you first need to of course create or not great but import the Paw dot PNG into your what's the word into your project so I'm just going to create a new folder here under blueprints folder widgets I probably shouldn't be widget uh uh should call it something else whatever it's going to be widgets under widgets I'm just going to drag and drop in the or Texture as simple as that then in my VR Pawn I will say okay every time we hit something it should get a normal Vector of that thing and it should place a paw there right so we will drag off from here and call a spawn deco spawn [Music] like that the material that is going to be used is going to be a decal decal material that we will create from the little paw that we have that's in a little bit uh more uh a little while but first let's just say decal size is five by five by five and the location where it's actually placed is going to be well you guessed it the location of where the beam hits the building or you know any geometry so that's the location rotation though is going to be a little bit trickier I'm going to take the normal but I want every time the Paw is placed the rotation to be kinda randomized right so that it's not always being placed at exactly the same angle that would look weird so I'm going to take the normal vector and I'm going to say okay let's give me the rotation rotation from X vector rotation from X Vector there we go then I'm going to take that rotation and I'm going to break it break rotator like that not into X is just break Rotator X roll pitch and yaw so we don't mess with roll at all the roll uh or sorry we don't mess with pitch and yaw at all but we do mess with roll so I'm going to make rotator like that Y and Z just come in straight up but the x is going to be randomized so I'm going to just say okay give me a random float random float is a float number is a number that has a comma and a bunch of numbers after the comma integer is a number that does not have a comma and it's just a full number right so float uh just random number please uh most likely in between zero and one yeah returns a random float between zero and one so we just multiply that by 360 degrees so it's gonna be like a random power placement at 360 degrees and that connects to the Rotator like that great that's our return value which goes straight into rotation and then for how long does the pause stay on the surface I would say like five seconds something like that so we can play around with it and with that this is almost done the only thing that is missing is the material okay let me compile this real quick and then here let's just create a quick material for I'm losing my breath for the pawn not Pawn or for the cat or so I'm going to create a new uh material in my materials tab here call it cat or like that double click it and here I'm just going to add and add texture sample texture sample perfect uh and the texture sample of course will had have our paw PNG texture like that you can't really see it but we will apologies we will fix that in in just a second okay I'm back I'm back I just needed to double check that I won't won't make won't make a mistake so basically for the texture sample the texture sample settings we don't yeah yeah okay we don't okay we don't really need to do anything with those uh with the settings here but four four four four uh the actual material so let's select that note here we need to change the material to be uh translucent because we want the part to be cut out right translucent right here and we want the domain to be not surface but rather the third decal decal I still don't know how to call that there we go so now uh we will be using an opacity map and we will also be using a base color base color just goes in straight up like that RGB straight to base color hard to see what the hell is going on that's fine not a problem and then for the opacity map we will just simply connect the alpha but before we do connect Alpha I will just well let me show you if we connect it like so then we get um we get our little paw material right here like a decal but maybe it's a little bit too too intense so what I'm going to see do with this is instead of just Alpha straight up going into opacity I'm going to say Alpha we remove subtract from alpha let's say 0.2 so that our paw is a little bit transparent in itself and also maybe roughness is a little bit less um let's see 0.5 so it's a little bit shiny okay save that for this then we are Pawn for decal material we will choose paw cat paw there we go compile save time to test it out so I'm going to put on my trusted goggles connection lost great that's what I love to see okay yeah yeah shut up okay we're good press play okay it's alive and now if I shoot the gun you can see that I'm placing cat pause onto any object how cool is that so now we don't need to see the laser anymore right so under VR Pawn I will adjust for persistent I will draw debug type line Trace I will choose none compile save play you can see that it's not that great for moving objects it doesn't track moving objects that well but I mean for for what it is it's I think it's doing just fine so let's change the lifespan to like one second and let's change the size of it to like three something like so you know closer to an actual cat pole size okay that's done I'm happy let's move on so all of this is using like this is all we've created and this is for the interact right for the outright trigger I want my left trigger to also do that so how do we make it work for the left hand as well well I will just drag this over here Ctrl C copy Ctrl V paste drag it all the way down here actually you could technically just simply create two of them and feed both of them into line Trace but and and then or rather use some branching tools but I think this is a little bit clearer and and you can do separate arms for separate functionalities um so we're just copying that whole thing and here for enhanced input action IA interact right instead of that we will create uh interact um left I a interact left that started is here is it started or is it triggered No it started yeah it's here and then for motion controller right arm delete that and we get one that is uh motion controller left aim left Aim get motion controller left Aim and connect that to World location and forward Vector that's it that's all you need to do everything else kind of stays the same so now we have both hands that can open up stuff if you're holding a gun the uh interaction blueprint will will change or not in there how are they called uh one second poop input mapping context the input mapping context will change and you you won't be able to open doors if you're holding a gun but that's fine okay now back in our interact box we most likely want to do something with this right actually make it into a door or or something so to do so we will create a like a copy of this blueprint because this as a baseline this is absolutely fine but we don't need for instance the print string and we want the geometry to be that of an actual door so I will go to my blueprints interact box I will make a duplicate of it like that and I'll call it door or or interactor interact door double click that no need to see the interact box anymore close that so for interactdor event interact is still the same Branch well probably we should rename Box open into F2 into door open door open then box spin probably F2 gets renamed into uh door uh open ning door opening um what else what else what else what else or uh let's do a door opening timeline that that's that's gonna be better timeline um then here box pin so we need to go in here and change our track rename to door open okay and I believe that that's all we need to do to kind of reuse this this blueprint right back in event graph everything else seems good here so let's move back to our viewport here where we have our Cube and instead of the cube we need to actually use a static mesh that of a door so how which one I guess this one right so we're going to select this uh this object and it's called B rep 326 so back here under indirect door um instead of the cube delete that also we don't really do we need uh one second I'm thinking uh now we just add in a static mesh like so and I'm just going to call it uh door you can also drag and drop in if you want to uh your your your static objects uh that that works just fine as well but static Mesh Door and here I will just find three two six right B rep 326. now that's that becomes a door yay okay now we need we need we need we need a handle so back in here I'm just gonna select the handle uh huh box zero to seven so another static mesh handle one and the one there we go and that one is going to be 297 no zero two seven zero to seven uh box zero to seven there's our handle as you can see the handle is wrong also we need to be slower with our with our camera speed we're way too fast and the handle position is like it's placed right at zero zero zero uh that is incorrect so we need our handle to be actually something like that okay and yeah of course I will need a copy of this and it will need to be placed on the opposite end as well so let's just make a let's just duplicate it handle two like that move it over here uh so it fits there a little bit better but this one needs to be rotated so let's go for rotation or is it one second thinking no it's just rotation right rotation around y-axis 180 degrees there we go now let's turn off the snapping let's move in this one so that it fits with the door as well as it can there we go let's select that one move it over here F you can use f to uh focus and if you if the camera is clipping uh your geometry too much you can use the command uh R uh something with clipping clipping near clipping setting your clip plane r dot set near clip plane space bar one and that is going to be then clipping only one centimeter away from the camera quite useful okay so we have our handles here those work just fine we have our door here let's just check I'm gonna select both of the handles see if those need to be pushed in I think they do foreign yeah something like that okay great now I will select all of these and I will or rather sorry before selecting all of this I will create one more um one more object that is called um add it should be called a scene like this scene object and here and I'll call it Pivot Point the pivot point is going to be a point around which the door rotates so it's going to be think of a pivot point as a group that will force the rotation by rotating itself it will force the rotation of everything that is inside of the group so the door and the two handles Pivot Point well should be placed at the pivot of the door somewhere here F nope not even close it's a little bit annoying catching the the actual pivot but with a little bit of practice you will be able to I think that is as close as we uh actually if we go even slower yep there we go something like that so that's the point around which the door will open and close okay let's add some materials so um if I remember correctly uh that is just steel and that is going to be Oak veneer okay uh materials for the door Oak veneer and materials for the handles Steel brush Steel or just Steel for now let's just have it as just Steel okay now the only problem is that door handle handle and pivot point they are disconnected so actually door uh and the two handles need to be connected to the pivot point so I'm just I just selected all three of them and dragged them on top of the pivot point so now if let me show you if I move the pivot point you can see the door and the handles they move together right so now I reset the Pivot Point position to zero zero zero and you can see that if my if I rotate my Pivot the door opens up and closes actually is that fine one second minus 90. okay it might need to become a negative opening with this pivot uh so well we'll see we'll see should be fine should be fine okay we compile we save go in here and for now I'm just going to place the door real quickly right here there there it is and let's just test test play okay okay over here so now now it works I just needed to re reset the headset so now if I press play and I take my one of my hands go next to the door hit that opens up closes down but now if you can see um the door opens in the wrong to the wrong side right I wanted the door to open towards me right just like there that that door needs to open towards me so I kind of want the rotation to be in the negative which is very easy to fix so here skip Escape Escape I'll go to my interact door for uh event graph I will just say okay the door open should be negative right so negative float oh sorry uh we can just multiply it by minus well multiply minus one like that right and that connects to the Z yo and the only thing that I need to also fix is here with what is considered that the door is open the door needs to now be smaller less than -1 right because we're going opposite right so if we're multiplying every oh sorry and uh needs to connect like that because door open you know from 0 to 90 degrees goes until here becomes from zero to minus 90 degrees and then we say if it's at least minus two degrees it's kind of open right so save that play that check which arm is this that's the incorrect arm get there yay close okay great so the position of the door or or the placement of the door sorry the rotation of the door is fine actually I want to check one thing one second so if I this one also still works that's great let's grab um yeah yeah there we go all right man sorry about that so if I just go somewhere here rotate put down the ball right here carefully and open the door I just needed to check if the physics work as well with the door and they do okay awesome that is kinda done with the door let's place it in the correct position so I'm just going to move it right there just like that bam and is that bigger 326 is my door smaller wait what three two six and this one foreign okay that's weird this one is actually weird because this door for some reason is larger than this one oh never mind it was just sunken into the ground that that's my bad that's my bad okay so that's that the I can see that the handles are a little bit too high up so I'll need to fix that and also this is lagging so I'm just going to change the the preview of this to be a little bit less yeah like like less demanding so unlit uh let me drag it in here this is not gonna be very accurate right now usually for it to be accurate you kind of need to do some math with the existing position of the door uh right here right so you just select the door you get the coordinates and then you kind of do some math with uh applying those coordinates but in this case eh screw it we're just gonna gonna wing it something something like so I think that is actually oh never mind let's move it up I think if we do zero that's actually gonna be correct right does it have a gap no it doesn't Okay so zero is actually correct and now we just need to move uh the handles down a little bit so back in viewport I'll just select the two handles that we have I will assume that they are at 90 centimeters in height compile save look at the template they were not at 90 centimeters they were at a meter safe uh hello that's that's weird wait am I not oh wait is it just this one yep it's just that one um so that one also a meter above compile save yep uh that's good so now I can just delete uh the other two handles from here just get get that one in delete yes yeah that one and delete yes and congratulations you have a door maybe also minus 64. let's go for minus 60. or rather minus 70. five centimeters deeper in does that look better maybe it does maybe the Dust so minus 17. that save let's play let's take a gander so I'm just gonna grab my arms you can see them here let me move slightly away so that I can teleport better easier for instance here and then peel come on go here peel there we go not like that but yeah that seems to work just fine I'm happy okay so now we're uh looking at this in medium preset which of course will make it look pretty bad uh let's go back to high preset uh press play oh it crashed of course and now you can replace every single door with the the nude or that you uh have made with that blueprint so with this crash I'm going to of course rebuild the whole damn thing but then we will go on to let's try to restore go on to the next thing which is the sunlight and we will make the sun animated that's gonna be nice and it failed to rebuild anything so let's see how much we lost is that a blueprint that is not a blueprint but that is so that's good okay let me fix that and then we will continue with the dynamic Sun okay I fixed it I fixed it so now now everything works everything is stable again as I said at the start of this course the name of the game is stability and making things work barely but it does work I promise so now Dynamic light how do you make I mean we're using Lumen everything is movable meaning that would make no sense that the light is not movable so we need to use that now with Lumen let's go in here and let's first of all find our our uh actually the first thing that I want to do is get our player start node right here and just kind of move it inside of the building just there because now we're going to be constantly looking at things from inside of the building and also this is very slow let me just back to 0.33 that's great okay so that's step number one I guess the you know getting the person in Step number two opening up the level blueprint so that's the blueprint that controls the behavior of the world getting a sun that rotates around the sky over time in your level is definitely like it should be controlled through the level blueprint so open it there we go and here we have our actually let's make it a little bit smaller because here we have our event begin play you know what happens when you start the level and event tick what happens at every millisecond or every tick of the it's 20 minutes of the level right within the level so this is for something that's Dynamic and our light is going to be dynamic so the first thing that I want to do is I want to get my sun in here and my son is a directional light which we will fish out there we go directional light that is the Sun I'll just get it in here like that you just drag and drop it in from the outliner now we have it and I'm going to ask what is the current rotation get actor actor rotation oh thank God I thought that maybe they removed it okay get actor rotation so I get uh how this Sun or this directional light you know I get these numbers basically minus 105 minus 31 minus 14 right the rotation then I want to set the like I want a variable and I want to set my current rotation of the sun to be that of the directional light that we have right so I'm going to just um actually we need to create a variable first yeah new variable and I'll just call it sun rotation start Sun rotation start variable and it's not going to be a Boolean so I expand that it's instead going to be a rotator like that I drag it out here set Sun rotation start and connect my get actor rotation to Sun rotation start and as we begin playing it's going to set that okay so it's setting it up that's great but now how do we keep it make it rotating make it rotate so for that we need a number that keeps increasing over time and the way the best way to do it is to create a variable that you call a counter and that variable should be a float type variable and we just get it in here and we get the counter right so it starts from zero and we add Delta seconds to the counter at every tick of the level so every tick it keeps adding milliseconds to our counter right and then as it's adding them it should set counter um let's do it this way drag out the counter from here set counter to the new added value so first tick let's say this is 0 0.2 is added this becomes 0.2 this is now set to 0.2 next thick this is 0.2 0.2 more is added right so this is now 0.4 next stick 0.4 is here 0.2 is added this becomes 0.6 and so on right so it keeps increasing the counter keeps increasing in its size right in its number size okay now I want to rotate the sun with this counter to do so I will just set actor rotation I believe it's not relative it's just rotation set actor rotation oh that's cool already chosen directional Sun if it doesn't you can just drag out directional sun again and connect it to the Target that's fine and I'm going to say okay after you've set the counter you should rotate the the sun right so we connect it like so let me expand this um so now it's going to be triggering this every time the every tick of our level right so every zero point or 0.02 seconds I believe new rotation is going to be a little bit of a tricky one because we need to understand what role pitch and yaw is for the light right the rule for the light is nothing we don't care about the rule because it's if you have a projector the rule is if you have a projector the rule is this right so if you take a projector and you roll it the light will not really change much right so okay if I take Sun rotation start right at the start of the level we get those angles change it here at the start of the level we get those angles for the current Sun rotation if I take that and get it get sun rotation start I can break it brake rotator I can break it into roll pitch and yaw right and this new rotation also needs to be broken into roll pitch and yaw so let me right click on it and choose split structure pen bam as I said rule doesn't matter so I just connect it like that that's fine that's whatever but pitch and yaw should be controlled right and they should probably be controlled one should be quite linear because it just goes around while the other one should be more of a sinus curve right it goes up and down and up and down right so which one should be a sinus curve you know for the up and down movement and which one should be just linear going around uh good question I believe I believe the yo the ZET is going to be just around just a constant and Y will be a sinus if I yeah I will yeah I think that is the case Okay so let's get a counter in here get counter and let's just say Okay this counter uh should go through a sinus in degrees like that and it should be remapped to a certain uh kind of threshold so map range clamped map range clamped and sinus always goes between -1 and 1 so our in range a is -1 and B range is one so the outputs here are kind of sandwiched between a and b the output so as the sinus curve is lowest what kind of degrees do we want for the rotation and why I think let's go for like minus five or -10 current uh actually current angle will give us an idea so the current angle is minus 31. the current angle is -31 so Perhaps Perhaps Perhaps one second I'm thinking I'm thinking I'm gonna figure it out um yeah that that should be fine so -10 and 10. something like that all right so 10 degrees up 10 degrees down and the return value gets added it we need to add it to the existing pitch right Plus add to the existing pitch so we're kind of we'll start from the original position and we'll start adding the angle to it right new rotation y pitch then for our so that's our sinus curve then for our yaw um that should be also added I think we just straight up just kind of connect the counter to it like that honestly I think that's gonna work later I'll show you how to speed it up or slow it down but for now I think this is going to be just fine as a baseline you know just to test okay let's compile it put it on put on the headset okay okay okay so this this should work I lowered the quality of lumen a little bit uh Lumen c c under post process volume Lumen scene lighting quality 0.5 and Lumen Reflections quality 0.25 so now you can see that clearly clearly the reflections are much more shimmery right and also in general there's much more shimmery stuff going on but if I I think I think it's alive now so it takes a while for it to kick in for it to warm up but once it's done then we have everything working quite quite nicely still a little bit jittery that's fine but at least the light the light works so let's move around and see right here we go the light is rotating and everything is super dynamic let's just quickly go to the to here because this is going to be a place where the light is gonna start start hitting so that should be pretty pretty interesting the next step of course is going to be to balance the whole thing and to make it kind of nice neat and tidy but slowly also Auto exposure is kind of weird like the outside is super super dark but yeah there we go that's our Sun Ray right there hitting our our bedroom just give it a moment yeah that's kind of natural isn't it oh what's that oh yeah that's that's from the from the little grid here okay that's cute and also my hand you can see the Shadow the shadow of my hand here hello that's also pretty pretty cute okay let's go back in here take a look yeah that's nice go back go back to the living room close the door and see where my where I'm pointing at eh there we go okay that works enough enough of playing around let's make it as a microphone catch that I said let's make it aesthetic now the next step is actually to um final adjustments color Corrections blah blah blah to make it all neat and dandy perhaps I want the sun to be slightly lower so the range needs to be um from 20 until yeah something like that because 20 like that that goes down right it's not like it's going up that that that goes down um so we'll make final adjustments and that's going to be the end of the last chapter or rather the last chapter is going to be me showing you how to get it as a external exe file that you can send to your clients for them to run that run it on their own headset but for now uh let's jump to the next chapter okay okay okay one thing that I forgot to mention is how do you change the speed at which the light moves so if you open the level blueprint again uh the speed is controlled by in in here by multiplying the counter to some value so if I just multiply by let's go for a hundred let's see what happens this is gonna be a little bit disorienting and in instead of just the counter I plug in uh counter times 100 to my sinus for the Y and my Plus for the new rotation compile that play that whoa well it works right and by the way if you press tab you can see the that kind of Observer camera right there and actually let me go and say hi to it one second hello hi that's me looking around so tab switches between what I see and what Observer camera sees that's that's just a very nice thing to have in your scene where you're when you are troubleshooting okay now everything seems to be working just fine so let's save that and one last thing that I want to do before I can close this I already did it so I'll explain it is I used under event begin play execute Console Command right here I created a new variable by clicking the plus sign right here which name that scalability made it into string which is text dragged it in here get scalability so I got this node right here connect it to the command and basically we want the command to run as we start the level so what kind of command is it under scalability once you compile press compile then you will see a value that you can insert here and I just inserted in caps lock scalability two what this means or what this does is let me close that what this does is it forces the High skill ability for your scene when you even when you will be publishing this project and playing instead of Epic skill ability I that that's important so basically we're just lowering the the the quality right uh for VR you kind of need to do that all right uh what else so now uh it's time to make things a little bit nicer uh just just slightly uh oh yeah and probably we don't want our sun to move 100 times um faster than what it used to before so I'm gonna switch this back to one close that now in my environment light mixer I can start kinda playing around with the different settings so first of all um kind of want some fog in here that's too much that's definitely too much fog so 0.2 Maybe something like that it's a little bit on the blue side isn't it I don't like that okay 0.1 teams like that's gonna be uh yeah a good good average Maybe 0.15 let's see how that looks uh without fog yep and 0.15 okay 0.15 indeed is pretty pretty nice if you don't want this kind of fog but instead you want like a more accurate one you can choose volumetric fog which of course costs a little bit of performance stuff needs to calculate it causes a little bit of performance and also uh you get the god race in in your scene which is very nice but in VR they don't look as good they are a little bit too shimmery a little bit annoying so I will not be using volumetric fog instead for indirect lighting intensity I will be increasing that a little bit that is not a little bit I'll be increasing indirect lighting index intensity of my directional light to three something like that and for my Skylight perhaps also to like three or so maybe two um this will just make sure that the Shadows are a little bit brighter a little bit nicer um just a nice thing to have okay now everything seems to be a little bit Overkill in terms of the brightness so I'm going to go to my pause process volume right here and I will find what am I searching for I'm searching for two things thing number one is going to be lumen Global illumination I will increase the scene view distance to 2000. and Max Trace distance also to 2000 simply because my house is not that small so I think if if we have like 2 000 that's going to catch the whole scene for for Lumen which is nice a nice thing to have next up we will go to our lens flares I'll change the intensity of lens flares to something like 0.01 maybe 0.05 let's see does it catch any flares hard to say let's reset it definitely a flare there there we go and now let's see what we need to drop 0.1 oh even 0.1 uh no 0.1 is too strong uh 0.03 something like that yeah that that will work okay then for exposure I want my exposure competency compensation to be like minus 0.5 because it's way over bright right now I want this to be a little bit on the dark side of the environment my maybe -1 yeah one stop one full stop uh less that looks much much better okay what else uh for Bloom let's use uh let's use some bloom and I'm not sure if we can use convolution blue maybe we can but if the the convolution bloom is more accurate so if the bloom becomes too much and also let's reduce it 0.5 if the bloom becomes too expensive on your graphics card then make sure to reduce it um I think that's it this feels like it's it the blue tint is a little bit annoying but it is what it is we get our scene here um sorry give me a second I'm just going to make sure that every single setting that I have is okay you can change the temperature if you want to like the the white balance and whatnot to warmer or colder but I prefer to just keep it the way it is at least for this scene right here last time last test rider save I think we have everything ready to go works like a charm great I think it's time also the fog the fog needs to be larger the fog needs to be larger uh 0.3 at least and maybe let's do volumetric fog but the scattering the light scattering I don't want that so volumetric scattering I'll have that turned off I think this looks better honestly there we go audio is back I hate this absolutely hate this you don't okay real talk real talk you have no idea how many hours I spent re-recording these videos by trying to make the freaking audio work and by realizing that you know I've been talking for like half an hour at none of the audio went through I just needed to put it out there it's it's not easy man it's not easy anyway let's let's move on so with this done I'm kind of happy with it so it's time for us to publish it that is the last step that we will do and the way you publish your um project is through platforms choosing windows in this case um I will be using the development um like the I will be publishing it for development rather than for shipping simply gives me more apologies gives me more logs if something goes wrong and I will just choose to package the project asks me where do I want to save it I'll just go for desktop uh VR test and here I will just actually I can name this one Alt there we go and just publish it into VR test folder select folder that's it it's going so now the output log going it's it's going to kind of say um what it's doing uh if you will get an error then make sure that you have Visual Studio Visual Studio installed uh that is probably going to be one of the most common issues that you can't get to work well honestly I would suggest like since you can have so many different errors that pop up I would suggest that once you get an error if you get an error output log Ctrl C Ctrl V that error into Google there's definitely going to be someone out there who has received exactly the same errors you have and already has received help so that is the way you troubleshoot at least the compilation errors those get annoying but hey it is what it is so once this whole thing um is done once it's packaged then we can try uh try seeing what's what's up and try seeing how we can uh play it on our in in in my living room right so how can I play it not in Unreal Engine but just you know in computer let me pause the video here hello hello okay so I am kind of ready uh we're gonna use the the headset for this by the headset I mean the microphone on the headset and now I will load in what am I loading in I'm going to load in the exe file that was made for us and this is getting dark really quickly so I need to step up okay let's see how is this looking like runs like a charm wonderful everything seems to be a okay let's go get our go get our ball like that to one hand do we take this now we don't need that let's take a gun instead let's move in here I do need to go through the barrier um like through the glass to be able to teleport back and forward right which is uh yeah it is what it is besides that seems to be quite stable quite nice look at that sunset hopefully uh wait what do you see one second oh yeah yeah okay you can see it all that's fine um so the light could be for my hard work could be a little bit better I could now ramp up the oh that's nice I could ramp up the lumen Global illumination and Lumen Reflections well besides that look the fog and everything that seems to be quite nice those guys are pretty bright and gonna lie and it's kind of nice oh okay enough with the gun let's put it down on the table right here and oh the ball I still have the ball here I wonder if it's going to yeah that's nice sticks there quite quite well so now uh where was the door was it that one uh wait let's do some art people peel okay so that works and if I hit the door opens up just like that and just in time for us to come in here and see the Beautiful the beautiful light starting to hit this this environment of course like none of the stuff here is grabbable right we didn't didn't solve that but with that being said um I know that it's hard to convey the how do you call it it's hard to convey the the realism you know how how much in this space do I feel but this I mean at this point I would be happy to show this to the client and ask them what they think because this is close to reality honestly let's go out let's go out here we never looked at this side of the that's nice we never looked at this side of the building it's kind of neat it's that oh that's that's like a bathroom so situation there uh we can't get in can we uh okay that's a little bit annoying one second Boop like that whoop come on no okay it's raised raised floor so we can't get there but that looks nice anyway uh keep moving forward that's the child's room uh that's a mistake with texturing and the not the texturing the UV mapping hey it is what it is um speaking of which if you want this file this whole file right here consider wait am I talking where's the camera probably here so if you want this file right here consider helping out the channel by becoming a patreon member you will get the Unreal Engine file that I'm showcasing right now as well as the Rhino file for you know uh playing along 444 poop uh for following along rather right let's go in here put the ball there nice I'm happy I'm happy with this um with that being said ah that's below ground no no the floor that's fine I can work with this with that being said we are kinda done everything is stable uh the frame rate is I would say probably around or actually let me give me a second I'll type pin we'll see where the frame rate is at foreign the frame rate 40 something I can only see like with the headset the frame rate is a little bit off-center for me so I can only see the timings and the timings for the frames is 22 milliseconds which I would guess around where am I I would guess that's around 45 frames per second the tiling there is bad I should fix that um besides that we're happy we're we're Gucci look at that look at the dynamic lighting yeah wonderful all right that's it that's it we're done we're done I'm happy I'm happy hope you've learned wait am I talking yeah there we go hope you've learned something I hope you've learned a lot in this course I really had fun doing it except for the all instabilities and all of the problems with you know this being the first iteration of lumen and nanite that actually does not crash immediately with Unreal Engine VR um once there is an even better more stable update I will of course update this course so be subscribed if you don't want to miss it and with that this beautiful sunset I will say I do bye [Music] thank you
Info
Channel: Gediminas Kirdeikis
Views: 198,189
Rating: undefined out of 5
Keywords: architeture, design, arch, architec, proces, how, client, clients, rhino, family, house, lithuania, company, very, good, architecture, vray, d5render, render, real time, free, for free, alternative, rtx, gpu, bim, revit, archicad, section, dynamic, drawing, visualarq, visualark, visual, arq, v ray, v-ray, skechup, material, rhinoinsiderevit, rhinoinside, rhino.inside, .insiderevit, zaha, hadid, beam, block, ibeam, grasshopper, gh, adaptive, shecule, schedule, cinematic, d5, d5 render, course, tut, ue5, unreal engine, archviz, VR, virtual, reality
Id: wqjJU4V6bGM
Channel Id: undefined
Length: 192min 44sec (11564 seconds)
Published: Fri May 26 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.