Overview The purpose of this unit is to understand how to create environments using heightmaps and the landscape tools inside of unreal engine, create models to populate the environment and also create background models to add depth to the environment. For my first task I have to look into different software’s to create heightmaps and how to create environments then create mood boards and mind maps to get an idea of what type of environment I am looking to create. For my second task I will consider creating my environment using software’s and tools that I researched. Then for my 3rd and 4th task I will consider creating models and materials to use on my landscape. Time scale Task 1 – pre-production Start date: 22/11/17 Completion date: 6/12/17 I have given myself two weeks to create pre-production for my environment and research techniques that I could use to create my environment. Task 2 – Environment creation Start date: 7/12/17 Completion date: 20/12/17 For creating the landscape, I have given myself two weeks to apply the methods from my research and create a landscape matching my pre-production. Task 3 / 4 – model and materials Start date: 21/12/17 Finish date: 21/1/18 I have given myself a month to create models and materials for the environment, including the background models and landscape / foliage as well. This time also counters for Christmas and new year holidays. Task 1 For this task was about consider research about how to create environments that I could use for my environment and then from this create a mind map and mood board. For my researched I considered different processes of creating environments and terrains that would be used in the game industry, I looked at the unreal engine tools that are mainly used to create and sculpt environments. I then looked into alternative ways to create landscapes, I looked into using software such as world machine, photoshop and Terragen, these are used in the industry but not as common as using the tools that comes with unreal engine. From my research I found that I can make background models that I can use with my environment as well. From this I considered creating heightmaps using these software’s and how to use satellite images to create landscapes based off real world locations as well as creating my own unique heightmaps using with this software. After this I then researched how to create landscape materials but looking at the unreal documentation and how to use blend materials to create height based materials which is a customary practice in games, I then also looked into using 3rd party plugins that has a high-end material that saves time creating materials for the landscape and gives you an AAA quality material to use in the game. From this research I got an idea how to create an environment for my game, I then created a mind map of different ideas I wanted to incorporate in the environment, how I want it to look like and ideas for props I can use for the environment. Once I had ideas for my environment I then created a mood bored to get visual ideas of what I want to create for my game, I used my concept art as inspiration to give me ideas of the colours and style I was look for. I then created basic sketches of the level design so I could get the main features down on to paper before creating the environment so I could get an idea of what I am creating for my landscape. Task 2 For task two I wanted to experiment with height maps before I started creating my terrain I looked into different methods that I could use for my project, I looked into using satellite height maps of other planets I used a height map from mars, then I also looked into creating my own custom height map for my level using Photoshop and using clouds trying to create the valleys and after testing this out I wanted to try a final method of using real world locations and turning them into a height map so I could find someone in the world that has the bending valleys that I am looking for. Below is screenshots of the height map and how they looked in unreal engine. For my project I decided not to use a height map I felt that when I was testing them out I could not find a valley that suited the style I had intended to have in my game. I decided that to have a landscape that I intended to have in my game I will have to sculpted my own terrain. I started off by creating a landscape and then I sculpted the mountains ranges around the landscape creating a basic path to the boss arena then I built up smaller hills around the path to create a unique environment for my game. I then placed a basic landscape material on the landscape so that I could see how the mountains fall and where the grass and slopes are visually. Below are screenshots of the first stage of the sculpt After I got the basic sculpt on my landscape I decided I needed to work on a better material for my landscape I decided to use an AAA quality landscape material to make my landscape pop more, the other reasons I wanted to use this is because of time it was quickly to use a plugin and play material then spending a big chunk learning how to create a high end material. Once I had the material added onto my environment I needed to import textures into my game and apply them onto the landscape. I started off by finding material I wanted and then opening g them into Photoshop and then I changed the colour of these textures to fit into my environment and colour scheme that I picked in my concept art. After this I then used painting weights and blend spaces to paint on different textures on to the environment to create the paths and grass areas and add sand to the rivers and waterfall areas. Below is screenshots after the material has been added to the landscape. I then wanted to add water features to my game to add more detail to the environment I used a spline to use the same mesh over and over again and this allows me to add bends into the mesh as well, I placed this on the river bed following the curves of the river and then I used the same method to create waterfall. To make the waterfall stand out more and make then look more natural I added a mist particle effect and water dripping on the water below, after this I then add sound to the waterfall to enhance them. Below is the screenshots of the water added into the level After creating the landscape for my game I then decided I need to create some background models for my environment, this will help to make the environment look larger than it actual is and give the impression there is more land past the playable area. I started off by creating a model inside of world machine I used nodes to create a mountain and then I used more nodes to add smaller details like fallen rocks and snow fall. After this I used nodes to export the model and height map of the mountain I created in world machine. I then took the model into Maya since it was high poly I decided to create a low poly version of the model by using the quad tool and then smoothing it to fit into the groves of the mesh I then took the low poly into substance painter and then I baked the high poly onto the low poly to get all the details from the high poly onto the low poly. I then added different material to create the look of the mountain using mask to use multiple materials and then using alpha masks to add unique features onto the mountain like fallen snow. I then imported the model and textures into the landscape and placed them behind the terrain and placed them around the level to give the appearance of mountains in the distance. Below is images of the background terrain added to the landscape Task 3 & 4 For these tasks is about populating the level with models and then creating materials for each model, I decided for this task that I would use new software such as Zbrush and other tools in the substance package so I could familiarize myself with software used in the industry. I planned on creating a couple of models that would be widely used in my level; crystals, rocks and foliage. I started off by taking photos of rocks so that I could get an idea how I could break down these rocks and create a model of them. I then used Zbrush to create a high-poly model of the rocks, using tools to morph it into the shape of a rock then add details to build on top of the rock and then used noise to add fine details into the rock such as air holes. Once the rock was created in Zbrush I needed to create a low poly version so I took this into Maya and then used the quad draw tools to create a low poly version then from this I was able to take it into substance painter and I was able to bake a normal map of the high-poly and place it on top of the low poly. After creating the rock, I then took this into substance painter and then added materials onto the rock to give it a sci-fi look to fit into my concept. From this I then exported the materials and imported then into unreal engine. Improve the cosmetics of the rock After placing them into my level I found that these rocks looked two clean and decided that I needed to add some dirt and grim to these rocks, I decided after looking at photos of natural rocks that they had moss growing on top of them, I could do this in substance but the rock would look repetitive, I decided to create a shader in unreal engine. I used a moss texture which I turned blue in substance bit2material so that I would fit into my theme, I then used a material to create a shader that would place the material onto of the rock and give it parameters so that these could be edited for each rock. I then added a world space so depending on the position the moss would change. I felt that I need more to my environment to make it more alien esque I decided on creating crystals, I plan for this to also help guide the player like the small orb plants but use these less frequent but at major points. I want to create a crystal that uses an alpha texture that I have created and use basic parameters in a material to change the colour of the crystal and take advantage of the alpha texture to make a unique pattern, I then plan to add a shine effect to the material. I then opened the crystal in substance painter, I wanted to create an alpha base material to get the patches on the crystals like you would find on cloudy quartz crystals. I started of by making a dark grey base layer and then I created another fill layer, I then added a smart mask to this layer to add a patchy mark onto the crystals. I added my texture to a new material which I plan on been my master, so I can create material instances for this. I then created two scalar parameters to be used as my light and dark colours, I added these to a lerp along with the base material and added it to the base colour. I changed the material blend mode to translucent with a lighting mode of surface translucency. I then added an opacity texture which is a gradient created in Photoshop and also created emissive node to control the amount of light produced, I also created a colour normal map and specular and roughness nodes. Error I then spent time trying to make the mesh look less opacity as it was causing clipping issues, looking into forward vectoring but was unsuccessful, I also try adding more to the refraction to create a more realistic shimmer but these was not working as well due to the clipping of the mesh. Solution To fix the clipping problem I turned the transparent blend mode off and replaced it with opaque which turns of the refraction which ruined the shimmer effect I was after, to solve this I created a line texture in photoshop and added to an world position and panner to move the texture across the crystals to give an effect of it shimmering in the light. For the foliage I will consider creating my own using 3D software’s and I will also look into using game engine ready grass and migrating / exporting these and look into modifying them to suit my environment. I will then consider adding illusion to my foliage such as wind to give that feel that there is an environment. I started off by creating my grass, I wanted to create an alien looking grass, so I started off by going into ZBrush with a small plane, about 100by100uu. On this plane I used the fibre mesh to produce grass and then I played around with the settings till I found a happy medium of grass blades and then I exported these. Then I exported this to Maya and rearranged the grass blades to fix into a close square. I then wanted to add wind effect to the grass so I found a video to how to create a shader to give the impression of wind I applied this to my grass I look into this a found that in unreal engine I can create a grass landscape type node, in this node I can add my grass mesh and tell the engine how many grass meshes to spawn on the landscape per 10meters squared in unreal units, I can also add unique features like scaling and rotation to the meshes to make it more random and also add a culling distance to help optimization. It is also an array, so I can add as many meshes I want to this node and it will spawn them depending on how many to spawn per squared meter. I found the textures for the meshes and exported the diffuse mesh out and opened it in photoshop and used the hue and saturation to change the colour of the texture. I then wanted the flowers to glow to make them more alien like, so I decided to cut the flowers from the image and place them into a new image and created an alpha channel for these by duplicating one of the RBG and then I imported this back into the game engine. Below is an image of the final grass Optimization To improve the optimization of the level to get better performance I will look into different aspects of areas for optimization editing the landscape, level of details of assets and materials including billboards and level streaming for the indoor sections. Optimizing the landscape since I have created a large landscape with mountains around the edge of the landscape there is a lot of sections to the landscape that are been rendered that the player will not see, deleting this will help the performance a little as it will not have to render unseen landscape taking pressure of the CPU and graphics card. Level of details For each asset I wanted to create level of details of the mesh. this is an automatic process that I can use in unreal engine, it reduces the number of polygon based on distance to be rendered. this use to be done in Maya by deleting edges on the mesh. Now its automatic process in unreal engine where you selected how many LODs you need and select the distance to apply the reduced rate. For each model I created I added 4 levels of detail to the model and changed the reduced percentage to 75 / 50 / 25 depending on how far away and added a distance of the same values. To help the performance during the level of details I can also set the textures to change at each point of distance in the LODS, to display a reduced texture size which will help the graphics card process quicker the materials and geometry around it without bottle netting and causing a performance issue I set up my tree material before so that I could change textures by using a master material and creating material instances from this master. to get reduced textures I opened my full resolution textures into Photoshop and went to the image size and reduced them to 1024 by 1024 and 512 by 512. tree billboards To optimize the trees even more I decided to create tree cards for my trees, these are an image of the tree rendered onto a plane so when the user reaches a certain distance it shows a silhouette of the tree and when they get closer it turns into a model. I took a screenshot of the tree I wanted to turn into a billboard and created an alpha channel on this in Photoshop. I then created a plan that matched the tree. I then exported this and added this onto the level of details for the tree. I then created a material that makes the plane and texture of the tree follow the players’ camera so it looks like the tree is always in the correct ordination to the player. Culling the environment Since I have added high quality textures and a lot of models / foliage this takes its toll on the game and its performance. I have been running stat fps though the creation and I get an average of 60 – 120 frames per second. This is a basic performance test and I am going to look into improve the frames so that I can achieve a high frame rate in the areas I am getting 60 fps. I am going to look at 4 other performance stat commands:
I started off by adding a cull distance volume, this culls the models in the volumes depending on size and distance to the camera. I set up distance of anything under 100uu to be culled at 3500uu away from the camera and anything under 200uu at 4700uu, and anything under 500 to be culled at 6500. The next area to cull is the foliage as this might be low poly having it in large clumps that move in the wind is costly on the GPU and this could be where the performance drops are coming from, I opened the grass landscape node and changed the start and end cull distance to a low and high number as these were set to 0. I set it to be 250 is the start of the cull and the maximum is 2500uu from the camera. I then ran the performance stat tests again in the same area that is get low performance. The fps has shot up and now in these bad areas I get between 75fps to 90 which is a huge increase from 60fps. The unit stats have stayed around the same area but seemed to produce the same figure with out dipping.
The RHI shows that the tris count is now around 1.5million which is over half cut of the original test and shows this is helping the performance. The scene rendering shows that the times have dropped as well dropping form 11/12ms to around 6.5 to 7.5ms which has helped the performance massively as it not trying to render as much and the lag has reduced. Conclusion Overall I really enjoyed this development, I have learned a lot about creating environments and how to optimize large scale environments. I enjoyed creating and scuttling a custom environment and creating my own foliage and models to populate this environment to add feedbacks matching my concept art. I didn’t encounter any problems but I feel it has helped me learn more about unreal engine and how to use the tools inside to my power and create powerful landscapes. It has also shown me areas where I could improve on such as improving on my researching techniques to find more reliable information. I could also improve on my pre-production creating more and covering more areas as I felt missing out the character customization was something to overlook. The development went well, I was able to produced everything I had planned, either on schedule or before the schedule date. There was one task that was over the date completed but this was down due to the scale of the models that needed to be created and learning new software.
0 Comments
Leave a Reply. |
Archives
June 2018
Categories |