In the final week of this project, I have spent my time on last-minute adjustments and compiling my submissions. This has involved combing through the environment for minor errors often due to the normal mapping or placement. Compiling the submission was predominantly rendering out videos and beauty shots of the environment to present my work in its best light then gathering the various relevant files from the rest of the project. To keep file size low I cleared out any unused data such as early versions of assets or older versions of the map. I now move on to completing my report of the project and prepearing for the viva.
Final Year Project
Week 15 - Pollish
As I approach the end of this project I have transitioned to focusing on polishing the assets I have created over the course of the project. For some assets, I have touched up the texture to create a more detailed final image, for others I have also edited the original geometry. I have focused on the larger assets as they take up more screen space and therefore need to better stand up to scrutiny. There have also been adjustments made to the materials of some assets to help make, for example, the various metal material instances in the environment look more distinct from each other to add some variety.
Edited sculpture stand (original top, new bottom). |
Edited bookcase (original top, new bottom). |
Edited barrel (original top, new bottom). |
Across this project I've used a number of tiling materials and trim sheets, this has a number of benefits but runs the risk of looking repetitive. To break up that repetition and add in smaller detail I have used decals, these decals were created using both Adobe Substance Designer and Adobe Illustrator depending on what was more appropriate. I elected to use Unreals 4s Dbuffer Decal blending instead of the standard decal blending as it allowed me to project colour, roughness and normal information onto the surface at once.
Paint chipping on the railing (original top, new bottom). |
Scuff mark decals on the walls and floors. |
Week 14 - Continued Enviroment Decoration
This week I continued to use SpeedTree to generate more foliage to populate the environment with. As with the trees I used Substance Designer to generate the materials used here, I did experiment with using photography to create the textures but the results were not as effective or versatile. To understand how fantastical such plants in Monster Hunter should be I cross-referenced foliage found in the game with real-life examples and found much of it to be fairly grounded in design. I knew that I wanted grass and reeds outside to be dense but I also knew that the majority of those assets would be at a distance. I, therefore, prioritized mainating silhouette over significant detail or high polycount for these assets. These, as well as the trees, were applied using Unreal Engine 4s standard foliage brush tool in the aim of maintain the best performance.
Plants and reeds in the scene. |
Close up of potted plants. |
Close up of potted plants. |
I also continued to focus on detailing the interior, adding and improving on what I had already done. Considering the rustic nature of the structure and the abundance of wood, including sculptures, I thought it appropriate to add woodworking tools that the occupants could use for various tasks. These tools included a wooden mallet as well as a range of chisels and knives. I also reworked the rugs in front of the fireplace to be more visually interesting with a new mesh and textures. The mesh was generated from cloth simulation within Maya and then processed in Mesh Lab to create optimized geometry that preserved shape.
Woodworking tool assets. |
. |
New rug mesh and textures. |
Week 13 - Decorating the Enviroment
This week I continued to decorate the environment with various assets, while I am aiming for the densely populated environments found in Monster Hunter: World I want to leave enough time to polish the scene. One of the larger assets I developed this week was the model of the creature "Tzitzi-Ya-Ku", a creature from Monster Hunter: World that I felt would help sell the "hunters lodge" aesthetic. I initially aimed for it to be a taxidermied creature, however that proved to be to high scope for this environment given the rest of the project so I changed it to a painted sculpture. I would still like to go back to the original plan if I have time at the end of the project but I felt it more important to have a finished version in-engine now.
I also developed several boating assets, with the surrounding wetlands it would make sense for boats to be present it some compacity. I based the design of these assets of boat assets found in Monster Hunter: World, I had considered having the boat suspended such as they were in the game. However, I had not accounted for the skull when blocking out the environment as that was added later in the project. I looked at alternative locations in the rafters to place the boat but I was not happy with any of them so I placed it on the second floor instead.
The rowing boat, Palico boat, oars and hunting knife in-scene. |
A closer look at the hunting knife elsewhere in the scene. |
Week 12 - Populating the Enviroment
I spent this week populating the environment with miscellaneous assets both new and old to help polish the environment. Some of the new assets I created included crates, pots rolls of paper and books. The books themselves have a unique material that uses a mosaic texture to vary the colour between each static mesh based on their position in world space. This helps break up repetition and removes the need for multiple material instances and textures for each variant. The colours used in the mosaic are based on photos of various book, I focused on older leather-bound books such as religious texts and encyclopedias as that was more appropriate for the setting.
To fill out the background of the environment I am using SpeedTree to quickly build foliage such as trees and variants of them. Because I want a fairly dense result I aim to keep the poly count as low as possible. I plan to use these tree predominantly in the background so I want to use as much topology for the silhouette and not minor details where possible. While Monster Hunter's flora is fictitious I still researched into the species native to swamps and wetlands such as the bald cypress and used them as reference. when building these.
A tree variant inside of SpeedTree. |
Week 11 - Fabric and Lighting
This week I spent time developing a reusable fabric material, I wanted the material to appear somewhat coarse as that felt more appropriate for the rest of the environment. I opted to keep the input albedo simple and find ways in the material graph of giving it the textured look I wanted using the normal and roughness. This meant I could reasonably drop any albedo in and it would work.
Close up of a rug. |
Hanging drapes in the entryway, |
Other cloth in the scene. |
Hanging elements simply looked wrong if they were completely static so I knew I needed to emulate a subtle breeze. The solution I settled on was to use a panning gradient within the fabric material in the world position offset. Scaler parameters would let me control how fast and strong the wind was blowing and I used vertex colours to mask out the areas I didn't want to blow in the wind.
The redder the vertex colour the more that area is affected by the world position offset. |
Wind simulation nodes in the material graph, |
I also reassessed my lighting set-up this week, while I initially choose a night time setting to provide some contrast to the interior lights. the result was a more dingy atmosphere than I wanted. I pivoted to a day-time setting and experimented more with lighting it in this setting. I am overall much happier with this direction and will look to push in going forward.
Week 10 - Fire
While I did continued to populate and texture my environment this week much of my effort went into developing the fire effect for the fireplace. Unlike the candle flame I made last week, this fire effect required a full particle system. The particle system would in the end feature 5 emitters within Cascade for the body of the flames, the higher bursts of flames, the embers, the smoke and the heat haze.
The fire particle system in the scene. |
The fire particle systems 5 emitters within Cascade. |
I knew I wanted to avoid the effect looking to static so targeted animating the material used for the particles. I developed a sprite sheet for both the fire and smoke effects that would achieve this and hopefully add in some of the finer detail to help sell the effect. I initially considered hand drawing or rotoscoping the animation but I am not an animator so the results would have likely been sub-optimal. I instead decided to simulate fire and smoke within a 3D suit and render out the results. I choose Blenders Mantaflow system for this as I had previous experience creating simulations within in Blender and was confident in the results. However, Mantaflow requires simulation data to be fully baked out before it can be viewed, there was no way to avoid this slowing progress. But as the baking did not use significant amount of my CPU I could work on other things while Mantaflow baked. Once I had settled on results I was happy with I render out each frame and arranged them into a 6 by 6 sprite sheet to use within Unreal Engine 4. 6 by 6 at 1024 resolution was a happy medium between reasonable texture size, smooth animation and maintaining as much detail in each frame as possible. I found that the simulations did not render correctly without a background behind them so I used a uniform colour that I then cut out afterwards.
The material used for the haze uses a noise texture initially for the water material plugged into the refraction output to create varying levels of refraction similar to the distortion you see from heat. I then used a radial gradient to give the material a soft edge. The alpha of the particle colour is used for the density of the radial gradient allowing me to slowly fade out the particle so its death is not noticeable. Cascade appears to handle refractions differently to the rest of Unreal Engine 4 as the refractions were initially non-existent on the particles.
Shader graph for the haze material. |
While the fire particle system took up the bulk of my time this week I did develop some assets and textures as well including the leather and wood textures used for the sofas. The leather material was a new material authored within Substance Designer similar to previous materials, I tried to add patches to the albedo and roughness to indicate where the leather had been worn away from use.
Softa assets textured, the emblem on the back belongs to the "Research Commission" the organisation the player works for in Monster Hunter: World. |
Leather material within Substance Designer. |
The hanging lanterns will hopefully give me more options for lighting the scene, the metal is an instance of the metal material I created earlier while the glass is an instance of the heat haze material.
To avoid having to line up each piece of the balcony railings individually and to make them easier to update I created a blueprint to automate the process.
I replaced the texture used for the floor with a more advanced set designed to allow for more fine-tuning in engine. This approach also allows for the resolution to stand up to scrutiny better, while the shader is more intensive as a result I feel the amount of screen real estate the floor occupies justifies this.
Floor shader graph. |
New material left, original material right. |
Close up shot, both have a texture resolution of 1024 by 1024. |
Week 9 - Zero to One Textures
While last week I predominantly worked on tileable textures and trim sheets this week my work was mainly on zero to one textures. At the start of the week, I began texturing the Blossomajesty Insect Glaive. Being able to cross-reference my work with the real in-game assets helped guide me however I did run in trouble figuring out how to build some of the detail, in particular the molten blade.
Screenshot of original glaive within Monster Hunter: World | . |
Screenshot of recreation within Unreal Engine 4. |
Another asset I textured this week was the Gammoth head-crest for above the fireplace, Gammoth only appears in older 3DS games so I could not gather a lot about the finner details from the in-game assets so instead, I turned to reference of tusks and skulls. Situated above an open fire there would doubtless be a build-up of smoke and soot so I blackened the underside of the head-crest as well.
Gammoth head-crest textured in the scene. |
I also developed textures for a couple of more minor assets as well including the horns and table. Like the other assets this week, these are also simple zero to one textures created in Substance Painter.
Textured Horn. |
Texture table asset. |
Finally, I created a small flame to be used for the multiple candles scattered throughout the scene. Studying similar effects in games I found most opted for an animated texture that always faced the player instead of a particle effect. I initially felt this would be a simple thing to execute but making the flame always face the player proved surprisingly laborious. Unreal Engine 4 features a component called material billboard what takes a material and loads it into the scene always facing the player, this seems perfect on paper but was ultimately useless to me. The problem with the material billboard was that it rotated the material in all axis so that it faced straight on against the camera meaning if the camera was above or below the flame it would lay on its side instead of standing up. I needed a solution that would allow me to rotate the material on only a single axis and there wasn't a way to do this with the material billboard. Searching online turned up Epic games writing on a way to achieve a similar effect within the material editor. However, it was written for an older version of UE4 and used a custom expression node and while I was able to get the material partially working I could not properly control the way the material rotated. The documentation was also light on explanation for what nodes within the material were doing making it hard to reverse engineer and identify the problems. Finally, I applied the material to a plane within an actor and used the even graph to rotated the static mesh based on the camera. After some troubleshooting, this worked and could be reused. As this solution involves updating the rotation every tick I feel the solution is suboptimal though.
Event Graph for the small candle flame. |
The candle flame in use on the fan. |
Week 8 - Refining Textures
This week was mostly spent polishing my Unreal Engine 4 materials to achieve as high a level of fidelity as possible. During the week I researched further into water shaders to help find direction for my water material. I mostly focused on the opacity and reflection elements, bringing in a depth fade to allow for a varying level of translucency depending on depth. This allowed the shoreline to be translucent while the deep centre of the river was still opaque.
I want to aim with this to use trim sheets and reusable materials, I've tried to develop broad versatile materials where possible. However, this week I tried to specialize my materials a bit more, making materials specifically focused around wood and metal. These are still versatile but I hope offer a better opportunity for high-quality visuals due to the tailored nature of them.
Metal material instanced as both bronze and steel. |
The same metal material being reused on different assets. |
Equipment box and the instance of the wood material used for it. |
One of the larger assets I textured using these materials was the fan in the centre of the room. This was my main test piece for the metal material while developing it. However, the asset does still use a zero to one texture for the blades and candles. Having the asset partially trim sheeted does free up space in the zero to one texture allowing me to get as much out of it as possible though.
Fan, in UE4 from above. |
Fan, in UE4 from below demonstrating the subsurface scattering on the fan blades. |
While texturing has taken up most of my time this week I have also been sculpting a rendition of the "Blossomajesty" Insect glaive from Monster Hunter: World. Due to the nature of this asset, I do not think it can be textured with trim sheets, at least not at my current skill level. This will instead be textured using a standard zero to one texture within Substance Painter next week. Unlike a number of my high-poly sculpts this module I did the Blossomajesty retopology by hand, the modular nature and shape of the asset made this a relatively straightforward task and allowed me to optimize the geometry where I needed it.
Blossomajesty low-poly mesh with high-poly bake within Substance Painter. |
Subscribe to:
Posts (Atom)