Red Hills - Grand Space Opera Challenge

Angelo discusses his journey creating Red Hills, a lush, vibrant environment that secured him a third place in the Artstation Grand Space Opera Challenge. Discover how Angelo utilized shaders to drive his texturing and maintain consistency across the scene, how he tackled working to the challenge’s time constraints, his foliage workflow and much more!

Intro

Hey there! My name is Angelo Tsiflas, writing you all the way from sunny Athens, Greece! I’m currently working as an Environment & Lighting Artist at Out of the Blue Games. My journey began back in my high-school days, where a friend of mine introduced me to Cinema4D. I always enjoyed Feature Animation Films (Toy Story, Dinosaur, Wall-e, etc) and PS2 games (Ratchet & Clank, Jak & Daxter) so I naturally looked up how they were all made. I don’t recall a specific point in time where I felt the spark to create things, but I vividly remember enjoying my time creating things from scratch with Lego bricks as a kid. Jump to today, I’m glad to work in an industry where I get paid to do more or less the same thing and also help create unforgettable and meaningful stories for other people to enjoy.

Composition Analysis

Composition is probably the most important tool for any artist when creating an art piece. Rule of thirds, leading lines, framing, and the golden ratio are some of the many guidelines that we must always keep in mind when building a shot. For this environment, I paid special attention to having a strong background/ foreground separation and a clear path that connects the two. When the initial camera angle was set, I made two slightly bent/curved variations of my vertical rocks and used them in the foreground area to complement my radial composition and give a slight feel of closure to the viewer. I used a similar approach using the vista planets in the sky. You can see them all represented as some of the pink lines in the image below.

Composition Paintover

Another thing you probably noticed in that picture is all of the subtle leading lines that guide the viewer’s eye towards my point of interest (PoI, in short). You can also see how I placed mid-size foliage, pipes & lamps were placed in such a way as to accomplish that.

As mentioned earlier, foreground/background separation was another huge focus area for this piece. In the image below, you can see how the different parts of the scene are separated. I used a mixture of atmospheric fog and hand-placed translucent fog cards to achieve that effect (don’t ask me about overdraw, hahaha).

Scene Separation

Contrast is a term that is usually used in regards to colour. It is of paramount importance that we use contrast even when talking about composition. In the shot above, I use both shape language and narrative to add more contrast to it. Shape language is all about the silhouette of an object and I achieve contrast using the only sharp/pyramid-shaped object as my point of interest. Regarding narrative, you’ll notice that both the spacecraft and the wind turbines are the only man-made assets that imply any sort of movement (especially apparent in the video version).

Colour and Light

After composition, colour and light are the second most important aspects of an environment that can make or break an art piece. Having an initial plan with the colour scheme from a concept or a rough idea in your mind is really useful to kickstart your creative process once you have your first models in UE. In my case, everything started at pastel, washed-out colour tones but were quickly replaced by much more vibrant colours. Since I had red grass basically from the beginning, I decided to go with a vivid blue colour for the sky. This colour combination ensured a good initial read of the scene and gave me the perceived contrast I needed to separate the sky and atmosphere from the rest of the ground elements. Of course, I never 100% lock on things such as colours early on. It’s an iterative process that usually spans the entirety of the project. Last but definitely not least, make sure to always keep your values in check. The way to do that is to completely desaturate your image and check how it looks in grayscale. For this project, I used Affinity Photo. The plan is to set up a post-process effect to be able to do that value checking inside Unreal next time. If you want to read some more thoughts on the subject, here’s a great blog post by Tom Munro. Tom’s angle is coming from a photography/ realistic perspective but these principles are still the same and will always apply to any medium of art.

Grayscale Values

Working From a Concept

This environment scene was one of the few times, where I didn’t follow one specific concept. This gave me the creative freedom I needed to try out different things regarding lighting, colours, and the amount of stylization. Even with a clear visual target in my mind, there were still a lot of struggles while translating it to 3D. For instance, the foliage was something I iterated a lot through the challenge, and its material required a full refactor by the end. Another hugely important thing that is blatantly apparent for anyone watching the progression gif, is that I didn’t have a solid idea of what my scene’s hero asset would be, requiring a lot of tests before I commit to one main form. I’m still 100% happy with the final design of it but it got the job done on time. Below you can see my concise but focused mood board.

Mood Board

Lighting and Camera Setup

The whole lighting setup is easier than you probably expected. the use of a fully dynamic light setup. To start with, I used the new Environment Light Mixer, Sky Atmosphere and real-time skylight capture allowed me to test out a lot of different lighting scenarios, and atmosphere colours. Everything was set to dynamic and I made heavy use of Distance Field shadows, DFAO, and Far-cascaded shadow maps. The rest of the setup was pretty minimal, consisting of non-shadow-casting point lights to “paint” out the various parts of the shot. You can especially notice this with the foliage in the foreground and middle ground areas. A neat way to save up some performance without a huge visual trade-off is to disable shadow casting on your foliage. Since my grass was already very dense and the landscape had close to zero visibility, it felt like a minor optimization I could afford.

Lighting

Light Settings

As far as cameras go, I prefer to use Cinematic Cameras for all my projects. They provide a lot of useful tools such as superior physically-based depth of field, easier focus controls, and great focal length and aperture settings. When working with cinematic cameras, there are really only two little settings I always like to highlight. The first one is to go into my lens settings and decrease the Min FStop & aperture values. This simply makes the bokeh effect a lot more noticeable and is especially useful if you are working on stylized scenes and you want to achieve a more miniature look. Lastly, one “magic” rendering command that I recently discovered (thanks to this awesome tutorial) is r.TemporalAA.Upsampling 0. Without getting into much detail, it simply makes your depth of field instantly better.

For the animation setup, I used Sequencer and relied on a lot of keyframe animation for things such as the wind turbines, cloud cards, and even slight camera and aperture movements. One subtle touch that made the whole thing a tiny bit more believable was camera shake. Thankfully Unreal offers MatineeCameraShake, which does exactly that. It’s a very easy-to-use blueprint class to simulate realistic camera shake.

Keyframe Animations

Keyframe Animations

Camera Shake

Sculpting Techniques

Crazy as it may seem, this project involved very little ZBrush. The only thing that I used it for was to get a rough decimated model for my vertical rocks. My usual ZBrush workflow starts with a messy blockout in Maya mainly to establish scale and basic shape language. Once I’m satisfied with it, I import it into ZBrush, use Dynamesh or ZRemesher depending on the use case and start refining the shapes till I get a pleasing result. I usually do up to 3 art passes for each asset (Blockout, Revisit, Polish). For this specific occasion though, I was happy enough with the rock structures on the second phase, so I didn’t spend much time with them. Once sculpting is over, I typically do a proper manual retopo in Maya. Again, since we’re talking about rocks that are not even considered hero assets, I simply decimated them and cut some rough UV seams and that was it. The plan was to not bake down normal maps but instead rely on tiling textures and detail normals. This allowed for a much speedier asset creation pipeline without any sacrifices in the overall big picture of the scene.

Sculpts

Time Management When Working on the Challenge

Avoiding feature creep was the name of the game from the very start. I already knew that my available time to work on this piece would be limited and if that was not enough already, I also had to manage a job transition. Notion has been an instrumental tool in my daily planning and task assessment toolkit. After I collected some initial references, I set up a kanban board and roughly wrote down all of the assets, textures, materials, VFX that I’ll need for this piece. I also make sure to list down any new techniques, tools, or workflows that I would like to test during the creation of it. That way, I somewhat know how long stuff will take and I can better judge what is truly needed (must have) and what is optional (good to have). I always try to prioritize the most critical assets and sure to always have the big picture in mind. Having the best-looking pebbles in the world won’t do you any good if you didn’t have time to polish your hero prop. Funnily enough, my biggest time sink in the whole process was exactly that, my hero spacecraft asset. It took way too many iterations to settle on a final design and it also required some tricky material setup and some decal work.

Progression

Techniques To Maintain Quality and Work Fast

I see every new project as an opportunity to try out new techniques and tools. This time around, I wanted to do some additional research on Runtime Virtual Textures (RVTs in short), play around with a fully dynamic lighting setup, and try a mid-poly/no-bake asset creation approach. It turned out that RVTs were an instrumental tool to quickly iterate on different landscape material setups. The way I set them allowed me to sample the landscape base colour, normals & height and transfer them to my foliage (and all other standard master materials if needed). I could then quickly tweak the colour parameters of my landscape and have my foliage and other assets automatically change their base colour to blend seamlessly with the terrain. Transferring the landscape normals to my foliage also meant that I could have any amount of slope without having to worry about my foliage looking off and grabbing light in a way that was not desirable.

Terrain Painting

Another important factor that helped keep iteration times to the minimum was the newly introduced Movie Render Queue plugin. It really was a godsend for this project. Without getting into much detail, this neat little tool allows for batch rendering sequencer shots, while also exposing a ton of useful rendering options to get the best possible image quality out of Unreal Engine. If you haven’t checked this tool already, William Faucher has some excellent tutorials on the subject.

Movie Render Queue

Grass and Foliage

Even though grass (and other foliage) were one of the key elements of my scenes, their final setup was much simpler than you might think. Before we break down the foliage material, I would also like to briefly touch upon the landscape one, since this is the main contributing factor for the foliage colour. All I do for it is, mix two colour values with an overlaid custom noise texture and then paint those in with typical landscape layers. Below you’ll find the material breakdown and a short GIF that showcases the various parameters of it.

Landscape Material

Custom Noise Textures

The foliage Base Colour is sampled from the landscape material with the help of RVTs. Vertex colours are utilized to mask out a smooth gradient in a top-down fashion. I also use the same topdown mask for both roughness and wind.

Foliage Vertex Colours

All foliage models are using solid geometry and their master material is two-sided, opaque, and has Tangent space normals disabled. This approach definitely results in a lot more polygons but I’m also skipping the more complicated masked material setup and avoiding any potential overdraw issues. I made sure to uncap any foliage distance to get lush grass even in the faraway landscape. To help a bit on the performance part, I made two LOD Levels for my grass mesh.

Foliage Master Material

Foliage Parameters

Texturing

My texturing process might seem a bit complex at first but I assure you that it’s not. The real power in the setup is the actual stylized textures. To start, all of my prop assets utilize the same master material, ensuring a consistent look and amount of detail throughout the scene. The base colour utilizes a similar flat colour & overlaid noise setup like the one found in my landscape material. For assets, I wanted to go one step further though. Apart from the landscape colour blend functionality, I gave myself the ability to manually paint to that mask with vertex colours, in case I wanted those reds anywhere else in my mesh. I used this last bit to paint the top parts of my rocks red. In retrospect, I could also do this with an automatic topdown world space mask but I wouldn’t probably have had the same amount of creative freedom.

Rocks Parameters

Roughness was done similarly. The extra controls came in really handy especially in the metallic surfaces and gave me the control I needed to visually separate them from the non-metallic ones. One last noteworthy thing is that I didn’t use any baked normal map for the entirety of the scene. I instead opted for 2 sets of tiling detail normal maps. I was also extremely lucky to have had the chance to experiment with a similar material setup just a couple of months ago for an art test. This gave me the confidence boost I needed to try this pipeline in a full environment.

Rocks Material

VFX

VFX in Unreal Engine is still one of the areas where I’m fairly new. In this scene, I used one traditional cascade particle system and a Niagara one. For the stylized wind VFX, I followed this amazing tutorial by Dean Ashford, albeit with a lot of parameter tweaking to better match my scene. For the small ambient atmosphere floaty bits, I made a Niagara emitter and mostly played around with its default properties. The most important bit to achieve this noisy wind effect is Curl Noise Force. This gave the particles just the subtle randomness they needed to look a bit more grounded in this world. Below you can see the emitter setup and a rough representation of the particle movement (particles are scaled up for easier viewing).

Emitter Setup

Emitter Setup

Particle Movement

Where are you still looking to grow as an artist? What new techniques or topics interest you? What can we be on the lookout for from you in the future?

That’s a tough one. For one, I would like to keep expanding my pipeline and tech art knowledge, while also exploring new stylized art boundaries. I’m already experimenting with things like cel-shading, outlines, and a super-fun Kuwahara filter. I cannot wait to play around with all those effects and styles in my next pieces, to establish a personal art style of sorts. I’m also looking into ways to automate and speed up my asset creation workflow. I managed to tick a lot of checkboxes regarding texturing with this scene, but there’s still a lot of experimentation and tests to be done. It’s too soon to announce anything yet, but if things go as planned, I should have a couple of really exciting projects to show you all in the coming months!

Inspiration

In my opinion, there is no better place for artists to gather their inspiration than real life itself. We already live in an “artist bubble” which is usually a place far outside the typical human life, so at least for me, I try to use real-life experiences as the anchor to connect these two worlds. Art is all about the smallest and simplest daily life things. Unfortunately, due to the global pandemic and like most people, I’ve had to cut down all of my planned travels. Let’s hope that things get better soon and we can all start enjoying life and take like we used to.

Feedback

Good feedback is one of the most useful tools for any artist to grow. Nowadays my go-to place for feedback is Discord servers and close friends in the industry. For this particular challenge, EXP’s Artstation challenge channel was the perfect place to share my updates and ask around for thoughts & feedback. I seriously doubt I would have made it if it wasn’t for all the amazing support and constructive feedback I got from the amazing folks in there.

Additional Advice

Since we are on the subject of feedback, I’d like to share a couple of thoughts on how to ask for feedback effectively. The first bit of advice is to be specific. Don’t just throw your work-in-progress screenshot without any context/ reference or specific question. Even if I want to help you, I won’t be able to know which aspects of your scene are more worked on and which ones are still in a rough blockout phase. Generic questions such as “How is my environment looking?” are most likely going to get you generic answers that can in no meaningful way help you get your scene one step further. On the other hand, questions like “How’s my lighting/ composition/ asset quality?” accompanied by the concept art or reference board you’re following, will allow everyone to give you much more specific feedback. The last bit of advice that I would like to add on this subject would be to not take anything personally. Most if not all of the people in these servers don’t know you personally, so don’t take anything they say by heart. You have to realize that these people are taking their time to give you feedback, instead of working on their personal projects/ spend time with their loved ones, and so on. The takeaway from all this is to separate yourself from your portfolio work and accept all the feedback you get objectively. We are lucky to be in an industry that promotes sharing and openness, so please, by all means, ask questions! People will be more than happy to help you out as long as you’re thankful towards them and listen to what they have to say.

Outro

Thank you so much for the opportunity to share my thought process! I hope that everyone learned something valuable from reading this. My inbox is always open to anyone who might have a question or need any further clarification on how approached this environment. You can find me on Artstation, Linkedin, and Twitter. Lastly, you can always find me lurking around on the EXP Points Discord server. If you haven’t joined already, now’s the perfect time to do so. Rumour has it that you can summon me at any time just by mentioning Feta.