How Good Can I Make Godot Look - Desert

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
uh hey everyone um so this is a bit of a different video it's not really a tutorial anything it's just a a bit of a devlog for an experiment i've i've been making so uh the idea was to try and see how how nice looking a scene i could make in godot just using um different assets i made myself and only using open source tools um so i set a couple of rules for this the idea was to to not use any add-ons and and make the assets myself so uh here's sort of what the scene always ended up looking like um and the inspiration for all this um was um was actually because there's been so much uh stuff from unreal with their nanite and their um lumen systems and uh as you can see i got a bit inspired by all these red desert scenes as well and i thought it might be really interesting to um to try and make a high quality scene if i could in godot and i actually thought that maybe i could use some of the new tools coming in good04 like the sgf gi um and also the the new system for auto generating lods um um so that was also part of the reason why i decided not to use any add-ons because then i could go over and use godot for most of the add-ons don't work in good old for yet however it uh it turned out not really to be realistic to use good old four i've been trying to use the nightly builds for the last few weeks and they're just too unstable at the moment so we ended up on good o3 um so i'll go through a little bit of how this was set up so um here's the scene in in blender so um one of the things i wanted to try and do as well was to create the whole scene a single uh file and a single import in blender which i'm sure is something lots of other people have been doing or are doing with godot but it's not something i've been trying to do all that much because it's not really a workflow you normally do and in other game engines at least as far as i've experienced like in in unity you definitely sort of export separate things and then put it all together and of course there's a lot of great things about doing this in in blender instead because you know blender is really good at moving objects around and placing them not that good always horrible at that but blender is definitely a bit more streamlined to it so so that's a really nice experience um though as you'll see further down the line it caused some issues as well so um if we uh sort of look a bit here and i obviously couldn't create like thousands of meshes that just interlocked and created this entire thing so i had to create something a bit more like a classical like a ground mesh um so this is basically just a sculpted mesh only sculpted on the on the c-axis and a tileable texture and if we if we look at the texture i you know that's made in material maker and uh you know just something a bit sandy looking with some little small stones um and then after that i needed some assets and i figured that if i just had like one good mesh with a nice texture on it i could probably like place that along the along the edges so uh that's what i tried to do with the with this model here uh i think it ended up being a bit too ambitious to try and make everything with just a single model this was just very simply made with a with some modifiers um it's just like maybe not really realistic to uh to shape that big an area with one model and not having show you can very much see that the same shape repeats but again uh you know you made a nice nice material material maker um i i think the material actually is is pretty good but it is a bit repetitive with the meshes and then of course you need to hide some of the the edges here otherwise it becomes pretty clear so i created some flat boulders and placed those then created some some bigger boulders and and placed those and created these little rock piles and some loose rocks as well and basically all these measures are made the same way and they're just like if we open up something like this a flat boulder here it's basically just a high density mesh very high density uh that's where the textures are then baked um and i used text tools for that so um i just basically just have a high quality mesh a low quality mesh that's uv unwrapped and then you know you can do all the classic stuff you can you can make a normal map you can bake an ao map i use the curvature as well to create some nice details um and then um i took those maps and then i just you know could take them into material maker this is for the rockpile um and this just looks weird because you're seeing it on a on basic model but if you take the rockpile model here you know and then i could take all those textures i generated like the normal map and the ambient inclusion map and the curvature map um and then inside material maker you can just you can just generate a position map which means you can place some textures on it and another map i baked out for some of these was like an id map so each stone had a separate id from the from the higher detail mesh so you could give them a bit of variation and uh calls in the end you just bring everything back in here and it gets a pretty decent look so that's basically the the way i did all these different uh meshes just uh a bit of baking i didn't really go for like manually painting anything which can can be a bit of a pain and i i think this gave a pretty decent result um so one thing that was a little bit different is the the shrub here which i'm not super happy with i tried to use custom normals for it which is something you use sometimes for foliage and it looks okay in blender but it looks really bad and good old but we can look at that in a second what you'll see is i to make those textures i just um i just use some some symbol modeling and some particle systems and then you could render this out for some textures and further manipulate those in material maker okay so as i mentioned i wanted to see if i could export this whole thing in sort of one go over to godot and um there's a few things to be aware of when trying to export a whole scene like this over to widow in mike's experience like a blender together like use gltf i i know that the manual isn't super clear on what the most straightforward forwarder file extension to use for for pogodo and for blender but like gltf is just like far above the others it's a modern format it's an open standard it has really good support both on the blender and the good old side of things so use that if you can if you're using blender definitely um one thing you have to be aware of of course is that you if you want all the all the materials to uh to export correctly you want to set them up the right way and basically just you know connect the albedo connect the normal map but for the arm texture right so that's a rough occlusion roughness and metalness uh you run it through separate and you can connect the roughness directly but you'll need to use a little group called gltf settings um to with an occlusion input to to get the occlusion map to automatically set up correctly when you actually import it on the good old side and another thing that it's a bit of an annoyance that you just have to remember is uh in general um on ev backface occlusion is disabled so it'll be rendering the backsides of meshes uh like this um and you just you just wanna enable backface calling on all your materials that you wanna use so otherwise you'll have to do it over on the good old side or if you forget it you know you're just wasting rendering budget on rendering the back faces of a bunch of stuff that you can't see like in most cases right you don't have one have back faces on um another thing that i i think people are not always aware of is that um when you're when you have a bunch of the same model um we used a lot of times in a scene for example these are all the same right um then you want to be sure that they're all referencing the same mesh that they're not like unique measures so you can see that if we go in here you can see that 66 objects are using this mesh or like 11 objects are using this folder mesh so um basically the the way to ensure that is just when you're duplicating your mesh around you can just use alt d instead of shifty and that'll create a new link cup you can see it's using the same it's referencing the same or like if you do use a shift d you can see now it gets a unique copy of the mesh you can always just fix that afterwards for the objects and link transfer link object data then it goes over to using the same data like the reason that's important is because when you're exporting all this stuff into um into a gltf file like if you're not doing that then each mesh will be saved separately as its own copy of the mesh data and the file will be way bigger and when godot actually has to like process the data to render it and stuff like every mesh has to sit in memory instead of it just having one copy of the mesh that it's rendering a bunch of times so uh definitely like something to remember uh that you might just not realize if you're not aware of it um so um so yeah the whole idea then was like you know export this whole file into um into good o and that actually worked pretty well like i opened the file and everything more or less looked correct but i did run into some issues because i uh when like when you when you get the model in then you'll get all the materials and all the textures and they'll just be in the same in the same folder structure and i really wanted to like be able to move my materials around i wanted to be able to delete some of the materials that i didn't need because i was going to go over to custom shaders and you can't really do that if you're exporting all the materials um because when you then delete some of the materials and move them then you'll just get like a dependency error when you open up the the file uh so what i ended up doing instead was um i first exported with all the materials so i got a copy of them all in here and then afterwards i exported a new version where i just exported with placeholder materials so it was empty and then i could assign the materials myself and that meant i could move them around and change them and delete them as i needed to so like my materials are all sorted in here and some of them are custom ones instead um so we can have a look at the custom materials that's sort of like the thing that that ended up being the big thing in this project is that i ended up making this this custom shader um for doing a texture blending and normal blending on the terrain so we can see that here so if we look at the if we look at this custom material i made here we can see if we lower this blend distance then this is how it would look if i didn't have this um this custom material and we can also so the prob we run into some small issues because of the big lighting if i start moving some of these objects around it won't look so realistic so let's just uh you would have to rebake the light in between so let's just uh disable the bake lighting and then we can just see here it's the same if we move this and bring it down you see we get these very um oh we get these very smooth great looking transitions so like uh okay so how are we doing that uh so the way we are doing that is that we uh instead of just having this be a model uh it's actually a height map so i um in in blender i uh i rendered out a position map of the of the terrain and then i used a flat plane inside kudo and like uh um extruded it the vertex along the the y axis uh to to do that um to you know get a height map that fit exactly so when i then i can just use the exact same data in each of the materials i want to blend to so you can see if we select one of these you can see that down here we have the terrain height map and we actually we also have a normal map um because we need to be able to blend with the normal as well um so you know the the terrain is tri-planar um and the part i fade into also becomes the tri-planar textured uh and then i try to exactly fit the the normal and i i know how close it is to intersecting because i have the height map information right uh there are some issues with this you can see here that we get some weird stretching that's because the dry planer is based on the normal of the terrain not the normal of the mesh because of the the smooth blend i'm trying to do so it's not always it doesn't always look great but um that can probably be improved you can probably adjust it but it the result is still pretty convincing and it's pretty cool the it is pretty limited it it's like you know i'm i'm doing it with one texture here it wouldn't really work with a a bunch of mixed textured in a in a more advanced terrain so uh it's interesting i learned something from it but i i don't know how realistic it is i'd love to be able to do something more elegant like what the unveil does with its depth dithering for example another thing i added in um was to you know try and hide the fact that this is so much the the same little mesh and the same texture i'm using again and again i try to add in this a bit of hue variation and a bit of a color variation and these are like i'm only adjusting this on on this material but like they're exact they should be exactly the same on the big boulders and the small boulders and they uh you know they are placed in in world space right so they sort of go across the whole thing and add a little bit of variation like um i think it sort of works but it's maybe a little bit too subtle and something else that that could require some more work um we can just turn on the big light again um and then we have this little uh this little shrub here which caused me so much trouble and you can see i i think it sort of looks pretty decent texture and when you look at it close but like the the light is just not great on even though it looks better now because i just raised its roughness to uh to one um i'm not sure what the issues are with good oh and like flat geometry and transparency and roughness and smoothness and specularity but there's just something wrong like it's just really difficult to get anything uh foliage related realistic looking um so i'd like to use some more time on that um so uh this uh this moves around a little bit just a simple vertex shader um uh one thing to note i had to use vertex color to make the gradient for that instead of just using vertex uv2 which is what i would normally do um and the reason for that is another one of these issues with importing the entire scene um because when you when you want to do light baiting baking which i ended up doing because i had to use good o3 uh you need the ub 2 to be unwrapped um and for uv2 to be unwrapped you need to to select that in on the you know on the gltf file during import um and that means that you'll also use lose your ub2s for anything you don't actually need to be um into the to the bake light because like the you wouldn't put the foliage into the bakelite because they're just tiny little things right they would just get some ambient light from it um but yeah that doesn't work they overwrite the uv2 so everything has uv2 so if you look here i have a uv2 that's completely useless for this um so yeah that's annoying i think it's fixed in 104 i think you can manually select which things need to be baked and you also have more uvs and you have like eight sets of uv data or something crazy and good of all so it's not as complicated either so just a little annoyance but but okay um then in the end of course i did this bake light which i think ended up being really good like the the new light baker in uh in good old 3.3 is just really good like this is basically just the default settings it just did everything correctly you get this nice light bounce in here um i made a different version of the scene here where it's uh let's see where it's like evening and for some reason sometimes when you load scenes some of the meshes are missing why is that happening i don't know let's try again okay they all look to be here um so like just lowered the sun and like change the colors of the skybox and then you know we got something pretty nice looking and again we can see here if we like this really does a lot with the with the bounce lighting right like you get so many little uh details back in from from this so that looks very nice um so yeah so that's basically the scene so like a few takeaways um from from making this i i think i'm gonna try and make some more of these like i might really like to try and make one where i concentrate on foliage just because it's such a damn mess and see if i can actually conquer some of these issues but i'd really like to sort of try and plan it out better next time like make some a specific plan about what the scene should look like and uh maybe make some some sketches set up a mood board and stuff like that this this was just sort of started a bit happily so that's uh turned out to be a bit of a mess um i think a big takeaway is like a lot of the things that i've ran into issues with will will just be bitter and easier in good of all like also like something i didn't even touch on like global variables for shaders will be so practical i have so many things that are like copied into all the shaders and i'm i have to adjust it on all the shaders like um which would just be so easy and straightforward with global variables so um lots of good stuff there um so uh and like i really liked using um blender for for setting everything up but uh at the same time it did cause some issues so i think it could be interesting to sort of try and do the other uh the other work around to try and like create separate meshes inside blender and try and place everything and set up the level inside uh kudo so i might try that for another one um last one that uh sort of annoyed me was that um i i really wanted to use um parallax occlusion mapping to you know create a better details and all these textures but you can't do that when you're using triplaner um so that's something i really wish that worked in godot but like other than that i would probably rather have some tessellation which would bring a lot to this scene and like i think tessellation is just a can do a lot more than parallel execution mapping can do so that would be nice um so yeah so the the scene is available for free um on a repository um all the assets are made by me so they're all going to be released as a creative commons so you can just use them copy them destroy them make a game with them whatever you want to do so yeah thank you so much for watching if you liked the video and would like to support me in making more videos and uh and open source projects like my godot around so you can consider supporting me on patreon and thanks to my patrons joseph trambone oscar johnson little mouse games winston johannesbunch space chase zero dimitri keane and marcus richter
Info
Channel: Kasper Frandsen
Views: 21,241
Rating: undefined out of 5
Keywords: Godot, Blender, Open Source, Material Maker
Id: 7Rq0LehSFiE
Channel Id: undefined
Length: 22min 52sec (1372 seconds)
Published: Thu Jul 01 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.