Listen to Your HEart
In this article we’re joined by Morgan Jones as we deep dive into his dreamy, charming environment, Listen To Your Heart. Learn how Morgan replicated his chosen concept to a tee as well as how he incorporated Blender’s Geometry Nodes into his workflow. We also delve into Morgan’s workflows for lighting, foliage, sky/clouds, stylized texturing, creating background assets and much more!
Intro
Hi all, my name is Morgan Jones and I’m a 3D environment artist from beautiful South Wales. I got into digital art years ago when I was in secondary school after following an old photoshop tutorial on how to turn myself into an Na’vi from Avatar. Since then, I’ve loved creating digital art and in 2015 made the move to De Montfort University in Leicester to join the ‘Game Art’ course. This is where my love for 3D really kicked off.
I got lucky enough to get my first industry job working on the hit mobile game ‘Golf Clash’ at Playdemic which is where I spent 4 years creating and learning around some extremely talented artists and developers. After a large stint of working from home, my wife and I decided to take year off and travel around Europe! On that trip is where I could really sink my teeth into a personal project that I’ve wanted to do for ages… as well as visiting and eating everything we could on the way!
Composition
I decided to recreate an awesome illustration by Denis Istomin called ‘Listen To Your Heart’ who kindly gave me permission to do so. The first reason this image jumped out at me was his use of colour and how he captured that post golden hour aesthetic. The composition is very clear and readable which was a feature that I really wanted to translate into 3D without losing any clarity. The whole image leads the viewers eye through the scene by having shapes flow down the S-Curve path (Green) and then opens to the sunset sky. The whole scene has a clear shape language that varies from simple to more complex silhouettes (Orange) with values that are all contrasted against the sky, helping with that stylized graphical quality of the image. The lower horizon line (Red) along with the foreground elements (Blue) framing the piece really give the scene a sense of scale and depth. Also, it always helps when there’s a human reference to test your scale against (Purple).
Concept
Instead of creating my own concept for this project, I decided to challenge myself in trying to create another artist’s vision. This is a good exercise as this is often what you might get in a larger studio environment. It also forced me to work outside my own comfort zone and problem solve regularly to create shapes that fit the creative decisions made by the original artist.
When choosing a concept, there are a couple of areas that I looked out for. Firstly, due to the long time these scenes take (especially if you’re doing them around work hours) it’s important to choose something that keeps you excited. This sounds obvious, but you often find yourself in situations when you start a project that ends up not holding your interest and suddenly, you’re having a hard time opening the file back up.
I also choose concepts that can help further my education. I wanted to learn new software such as Blender (incl. Geometry Nodes) as well as pushing my understanding of sky boxes and animated shaders. The next project I choose will purposely lean into a completely different area of 3D. This keeps things fresh for me but should also cater to the requests of future employers (if you’re looking to be in the industry). It’s often a good idea to look at job applications for the role you’re looking for prior to starting a project to make sure that you get the most bang for your buck with each project you undertake.
Colour and Light
The colours were chosen intentionally to suit the cool post golden hour time of day. The warm colours of the house and lanterns helps to accentuate the focal points of the image as well as being a great way of playing off the cooler sky gradients. What’s difficult to replicate with this kind of lighting is that there isn’t a strong directional light because the sun has already set, which means the scene is being lit mostly by the sky with some stylized directional light from the moon. I pushed this contrast in my scene to help show off the silhouette of the house as well as accentuating the rounded graphic shapes of my tree meshes.
Having a fixed camera also allows me the luxury to add extra lights to the scene to fake some additional bounce/rim light to get the most out of my 3D forms. One challenge is getting enough lighting in the scene by using a sky light and due to the moon being in the background, all my meshes were ending up quite dark from the camera view. To get around this, you can create a second (non-shadow casting) directional light set to a second ‘Light channel’ that faces in the opposite direction to the main light. This acts like a stylized fill light that is used to fight the effects of that scene darkening. It’s by no means accurate, but it does do a really good job of selling that cool temperature (especially when set to a nice blue).
Skybox and Clouds
I wanted a great deal of control with the clouds, so I decided to opt for a classic hand painted approach for my sky box. I started the project by nailing down the camera position of the scene by using the F-Spy plugin for Blender. This allowed me to project the concept onto a sky dome from the camera position and then use that as a base for my painting. When I was happy with the base shapes of the clouds that I wanted to keep I cut them out of the mesh and baked them on to a second (more efficiently laid out) UV map that I used to create a set of masks. Next I went into the opacity texture, further refined the painting and then created another mask on top that was used to dictate where the clouds shadows should be.
On the main sky dome texture, I started with nailing down the main colours of the gradient whilst testing it in engine. I painted on the mesh in Blender to break up the shapes in line with the concept whilst then taking it into Photoshop for extra control on the texture. This process took quite a lot of iteration, particularly with the colours as they would need to change to work with the fog/atmospheric components of the scene.
I decided to use an overlay texture to blend between the base colour of the clouds and their shadows separately. This gave me control as to what the colour of the cloud would be based on its position in the sky. I could then copy and paste the cloud meshes and arrange them in different ways without the viewer noticing the repetition. I also used these same clouds with an emissive shader to create the distant fog effects seen in front of the background mountains.
After I was happy with how the sky was looking from the camera view, I opted to use procedural techniques for creating the top half of the sky dome. I used tiling masks that you can see below and layered them up using mixtures of lerps/overlay blends whilst panning them over each other. I love creating these kinds of effects as they allow for very fluid workflow with creating drastically different effects with minimum input. I was also able to use the 3rd painterly effect in the image as a mask for other materials, like fog cards or building vertex painting for colour breakup. As a final polish, it would be just a matter of comparing my sky with the concept closely and colour matching or adjusting textures to finish.
Geometry Nodes
Proceduralism is something that has been an ongoing addiction for me. I don’t need much of an excuse to try out node networks, be it Substance Designer, World machine or Unreal Engine. So, when Blender announced its brand new Geometry nodes system, that was all the push I needed to learn Blender (Previously a devout 3DS Max user). So far, I’ve really enjoyed learning geometry nodes and all the potential applications that it could have. To prove that point, I created a super simple node set up to help in the creation of my foliage assets. The main requisites with this set up was to create complicated shadow/outline shapes seen in the concept whilst maintaining a healthy poly count, as these kinds of meshes have a habit of getting out of control fast.
The benefit of doing this with procedural methods is 100% the speed. It would be a nightmare to hand model something like this and if you ever needed to make variations/changes to the model, you’re looking at even more time invested in something that could take minutes. Also due to its non-destructive nature, making changes is a simple as swapping out a few connections.
After exporting these into engine, the beauty of these assets was that the material is just a flat colour value with no roughness and no specular. This is because I was using a ‘post process material’ to handle anything that I wanted to be ‘cel shaded’ (e.g all the trees and the Character). To mask out the areas that you want your cel shader to appear on you have to select each mesh and make sure to turn on ‘Render CustomDepth Pass’. You can then set up your material to say ‘use this style shader for anything that’s white in the mask and to ignore everything else’. I followed a great tutorial by PrismaticaDev. I highly recommend his videos for anyone looking for a more technical view of Unreal Engines more tricky features. This cel shader allowed me to fine tune the scale of each band of colour to get it as close as possible to the concept.
The bushes used the same techniques as the trees (just without the trunk) and to get more variation out of them, I created a detail orientated alpha material to apply on the bushes closer to camera. It’s handy that the geo-nodes mesh is made with all quads as in Blender, you can use a UV unwrapping trick where if you select every quad face and select ‘Reset’ in the UV unwrapping workspace, it will place each quad individually in the 0,1 space perfectly. You can then use a simple leaf opacity mask along with the following shader that makes use of World Position Offset (WPO) to force all the planes to face the camera. I’ve detailed what parameters to play with in this set up so you can experiment further with it if you like. Credit for this set up goes to Stylized Station’s great environment artist course.
The rest of the foliage is nothing more than good old fashioned hand painting for the alpha/greyscale masks. I did make use of ‘Runtime Virtual Textures’ (RVT’s) to colour them based on tile-able landscape textures.
Textures and Materials
I was fascinated with that 2D/3D hybrid style workflow used on shows like Arcane. In this case I had the benefit of having a jumping off point for my textures because of the concept, which allowed me to make use of camera projection. I mentioned before this scene made use of the the fSpy to Blender Plugin. This tool creates a camera for you in Blender with the correct settings, position and rotation based on the perspective lines from the concept. You can then simply model from the camera and line up the assets appropriately within the scene whilst making sure to keep an eye on your scale regularly.
Once I was happy with how the forms were looking, I would project the concept back onto the visible geometry which then gives you a fantastic starting point for what your textures should look like. You’ll have to clean up textures that are bleeding over from other objects using Blenders Texture Paint tools (e.g. the bushes that are in front of the house will be projected onto the wall). Once I had blocked out the textures, I created a second UV map that had a more efficient UV layout and baked the diffuse texture over to it. This is where the refinement comes in using a mixture of Blender and Photoshop hand painting. I was then able to enjoy the experience of just refining the texture because I already knew that it was going to work at an early stage (Side note: keep in mind texture reusability at the baking stage as in this case, you only need so many wooden beams or windows).
Another feature of the concept is that the self-shadowed areas, particularly on the building are quite pronounced and stylized. To achieve this effect, I created a Light map style UV in an extra UV channel, so I’d be able to uniquely texture this effect onto its own bespoke mask. I could then blend it in engine using a lerp for complete control over the end result. The effect mostly derived from Substance Painters baked AO output with some additional broad hand painting that then got broken up using procedural filters/noises.
The other interesting area of stylization was in the reflections used in this scene. Part of the appeal of the concept for me was how everything had a matte feel, with very limited roughness/specular information coming through. This is why I opted to eliminate this data all together and pushed for stylized fakery. For example, the top windows of the building or the muddy puddles on the path are using a simple Cube map texture of how the scene would look if it was just the sky dome without the environment. The result is a very clean and predictable reflection that doesn’t get influenced by the rest of the world which in this case, was exactly what I was after.
Background Assets
Due to the style of this piece being so interesting, I decided to approach scene depth much like you might if you painted the piece in 2D. This means that the further assets get away from you, the more simple/impressionistic they should be. This is the main reason why as the trees get further away from the camera, they go from 3D volumes to 2D billboards. This helps of course with performance as they are much quicker to render, as well as being more visually appealing given how far away they are. I got the idea from the film ‘Entergalactic’ where the artist chose to design LOD’s differently dependant on how they should look at certain distances, as opposed to just doing it just for the sake of increased performance.
As far as the background mountains, I started by painting the basic silhouettes as a mask in Photoshop and then took that bitmap into designer to bring procedural layering effects to the whole mask. The two main ideas I was keeping in mind was that I wanted the opacity to gradually fade out as they go back in the scene as well as having a nice play between hard and soft layered edges to imply a larger amount of detail that there actually ends up being.
I could use these masks as a base for creating the lights for the distant towns. I made sure to keep these masks separated so that I could have control in the engine with what mountains had lights as well as being able to use alternate textures to vary the colour of the lights.
As a bonus I also threw in my other Designer mission of creating mud road tracks. This made use of a stylized track generator to power different kinds of track effects. I then made sure to only use half the texture for the main mask, so that I could also give a separate feel to the water mask which appears on the right. This would ultimately be controlled in engine using vertex colour.
Animation / Moving Parts
Aside from the characters and particle effects, the rest of the scene was animated using ‘World Position offset’ (WPO) based materials. The general theory behind this is to blend a series of black and white masks to make Vertices move in a controlled direction. In this example, I used a simple linear gradient set up that I got by isolating the red channel of my UV coordinates and remapped that data using a sine curve. This stops the ends of the cable from moving and instead moves the rest of the cable. The rest of the setup makes use of another remapped sine wave to have the cable sway back and forth from -1 to 1. You can then add more control by adding parameters for sway speed/intensity, direction and randomising the time input so they don’t all sway at the same time.
This is a very similar set up as the trees with the main difference being instead of swaying back all the way, I offset the sine wave so it would sway more in one direction than the other. This was to add a more directional believability to the trees motion.
The grass is basically the same effect overall. The main difference is that I’m using a series of noise textures mapped in World Position and panning them over each other at different scales and speeds to push the vertices around. An additional WPO called ‘SimpleGrassWind’ brings in some extra randomization on top of this. You could go as far as adding parameter collections to control global wind direction and intensity but due to the more subtle effect I was after, it seemed a little overkill (this is worth considering if wind plays a more integral role in a scene your developing).
This concept is very prevalent in VFX based materials as well. For the chimney smoke, you can use a simple primitive (cylinder) with a good number of vertices and apply complex movement using the same techniques. Effects like these benefit from a layered approach, moving from large to small details with your masks which were all created in Designer. The beauty of these effects is that you can get a completely different look and feel depending on what textures you plug without changing any settings. With this in mind, my advice would be to ‘GO WILD’ and experiment around with bunch of different textures until you land on something you like. This is a very rewarding process and you’d be amazed how often you look at an effect and go ‘this would be great as a fire material’ for example. This leaves you with the ability to save that effect to another material and keep experimenting further.
The characters ended up being animated by using Unreal Engine 5’s new control rig feature and the particles are using pretty standard Niagara effects, as they were a good excuse to move on from UE4’s old particle system that I was used to using.
Areas Looking To Grow As An Artist
This project was a way for me to experiment with a different art style as well as taking new skills from professional work and applying them to my own personal work. I’m currently planning on working a lot more non-destructively than I currently do and focussing on procedural workflows. I’d love to do a project powered by tools like Substance Designer, Gaea or Houdini as I feel like they empower you to efficiently create very interesting effects in a production orientated way. It’s amazing to see some of the incredible assets artists have made, purely by displacing a plane using a height map generated in Designer. I want to take this idea to put my node skills to the test and create something interesting.
How has your focus and artistic preference/style changed through the years?
When I started university, I was excited to make anything and everything I fancied, be it realistic or stylized. Growing up I was (still am) a big fan of animated films from Disney and Pixar and its amazing to see how much their films style have shifted throughout their early days of 2D animation to now. I’m really excited to see how different companies like SPA studios and Sony Pictures Animation have been challenging their creations to look as unique as their narrative. What’s interesting with stylized art in video games currently is with the advent of tools like Photogrammetry and Megascans, making realistic next generation video games has become a much more approachable task. However, with this has come a desire to push games in new and interesting directions to help games stand out from their realistic counterparts. I don’t believe there’s ever a one shoe fits all solution to these kinds of decisions. It’s all about how the art style is used to benefit what the game is trying to do, but I am really excited to see the fresh approaches other artists take to the future of art style development.
Inspiration
Aside from loving film and games, I really enjoy looking through services like Artstation for inspiration on seeing how other like-minded people are contributing their projects and insights to the world of digital art. It’s amazing how willing people are to talk about their processes to help other artists progress in their own way.
Also, without sounding too cheesy, I’d highly recommend for any environment artists out there, to actually go outside and travel, if possible, to places that they would be interested in replicating. Other than being a fantastic excuse to get away from the computer for a bit, it would also give you an invaluable insight into what makes up these kinds of environments. For instance, going to a coastal cliffside landscape would give you that sense of scale you would want to capture in your models as well as the more minute details, like how the different materials blend together or how rocks fall to make the resulting patterns on the floor. Denis’ concept resonated with me purely because it’s very similar to the countryside that I grew up in and ended up being a great source of reference for me to work with alongside the original illustration.
Feedback
I generally collect feedback from trusted artists that I’ve been lucky enough to meet either from university or in the industry. However, there are some fantastic resources out there for portfolio review from industry professionals as well as messaging like minded people to see if they would be willing to spare you some feedback. You would be amazed at how willing people are to give up some of their time to help those trying to break into the industry or improve as an artist, as they were once in the same position at the start of their own search.
As important as getting feedback from people who know what they are talking about, its also a good idea to get feedback from people who don’t understand the ins and outs of the process, but you can still trust to give you their honest opinion on the artwork. You have to careful with what you choose to act upon in this case however as the feedback can be quite vague so there will be a good amount of reading between the lines to figure out what in your work causes them to feel this way. For example, if someone says, ‘This looks a bit spooky’ and that’s not what you’re going for, it might be because your shape language is too sharp, or the scene could do with a lighting alteration.
Finally, especially in this case, the best form of feedback is to constantly check in with the concept/reference you’re using and make sure that you’re not straying too far off course. If at the end of production, your piece matches the concept, then that’s a good indication that you’re on the right path.
Additional Advice
The biggest advice I can currently give to other artists is a bit cliché, but I don’t believe you can ever be an expert in the craft because it’s a constant ever growing learning exercise. Every year an exciting new development comes out in game development technology and its always considered a paradigm shift. Remembering that if you apply your art fundamentals to any new digital creation tool, you will always be able to make informed decisions into whether or not you’re using the best tool for the job. Also, as I mentioned above, people are more than happy to jump into new workflows and give their views at the same time which is an invaluable resource for learning.
Also, the most important advice would be to have fun! Your creating video games and its worth remembering how cool that is as you can sometimes get too wrapped up in the weeds that you forget. It’s a lot to learn, but its equally the most rewarding craft I’m on my own journey with learning.
Outro
I want to give a huge thanks to Experience Points for doing what they do with providing artists like me invaluable insights from the industries top artists. Also of course, thank you for giving me the opportunity to talk about this project because I had an absolute blast making it and I’m really looking forward to my next big piece!