If it easy to get Substance working with your Rome Fantasy packs after the changes to Substance? Do we still need to read instructions to get PostProcessing set up? Any other issues with installing your packs on Unity?
this will be just perfect for my scene
Luan Vetoreti did a very detailed overview of his interesting sci-fi environment.
Hello! My name is Luan Vetoreti. I’m an Environment Artist at Foundry 42 / Cloud Imperium Games in the UK. Before joining CIG, I did the BA Games Art & Design course at Norwich University of the Arts, and before that worked in professional sound design for a little while. I’ve always had this insatiable love for sci-fi and storytelling, so getting a job at CIG straight out of university was really exciting. Here, I focus on all aspects of the art pipeline, from establishing new workflows, to modeling, to texturing, to set dressing, to making great cups of coffee. Star Citizen / Squadron 42 are the only games I’ve worked on, though I always enjoy a good game jam. My interest in making games goes back to the days where I’d boot up games like the old TIE Fighter series on my dad’s PC and just losing myself in those worlds. Eventually my curiosity started making me question how things are made, and well, the rest is history. In this article I’ll be walking you through the process I went through to make my Beyond Human ArtStation Challenge:
I joined the challenge on a whim. I thought it’d be a good way for me to get back into Unreal after a couple of years using Lumberyard / CryEngine, and most importantly, I wanted to establish my personal workflow. I knew the time constraints would be quite taxing, especially since between work and other personal endeavours, I only had a few hours every evening or so to spend on it. After having a look through the concepts available from the concept phase of the challenge, I decided to pick one that interested me the most in terms of the story and context behind it, and an image I thought overall was quite interesting. Thanks to Chang-Wei Chen for the concept image:
The idea of the environment was essentially “In an effort to save the environment, what is left of humanity moves to thousands of far reaching towers that not only act as residence, but also as terraformers.”. So with this idea in mind, I started whiteboxing the concept and planning materials. Originally I wanted to do the interior of this habitation pod, but the more time passed the more I ended up just neglecting that and doing the concept instead.
For the workflow, I used some of the basic ideas of the how we do things at CIG, with the custom normals and mesh decals. For quite a while I tried to find the best way to do POM decals in Unreal Engine 4, and even considered using Lumberyard for this environment, but after a little while decided to just use the Normal/Roughness/Color decals that Unreal supports. From the start, I wanted to light the scene fully dynamically, to really learn what Unreal can do with its dynamic lighting. During the whiteboxing phase I spent quite some time working out metrics for the different assets on the scene, which in hindsight was a bit of wasted time since I wasn’t making a building set for game production. After realizing that, I decided to do a call-out sheet of the materials with some stretch goals in mind, since this was a timed effort after all, well as breakdown of the assets I felt would be necessary to make the scene work.
Ultimately, this planning was what helped me figure out what was most important to build this scene within the timeframe I allocated myself to work on it. I certainly think that a more organized idea of what you need to do, including how an estimate of time for how long assets / materials / post processing will take is integral to how I like to work.
I was working as modularly as I could, even too modularly for this kind of environment, having planned out swappable walls, roof, add-ons, etc. Which for me is great, but I quickly realized that I was giving myself way too much work, so I dialed back on some of those aspects, and ended up with just some basic swappable assets, whilst keeping most of the variation coming from different add-on pieces like antennas, exhaust fans, machines, and so on so forth. It’s important to understand how to make your scene as varied as possible using limited resources, as most games don’t have an unlimited pool of assets and materials.
In making these assets, I find it really useful to use a dummy node as the pivot position of the asset, with multiple meshes linked to that node. I find this provides a lot of flexibility when it comes to constructing an asset, as well as keeping things organized and named for ease of editing later.
These assets usually started with some very basic shapes, primitives even to block things out in the scene, then slowly developed as and when I needed the assets. I would not bevel edges and apply custom normals unless I was 100% happy with the asset. Afterwards a very tidy and quick UV job if the asset uses a tileable material, if not, then some more careful consideration and time was spent in the UV process. The decal pass always came last, as it feels right to add insets, bolts, panel lines, and other smaller details only when I’m happy with the quality of a single asset’s geometry. Since the scene was always going to be dynamically lit, I did not need to create any unique lightmaps for the assets.
In terms of the smaller details of the scene, I tried to use mostly some deferred decals to break up the repetition of some surfaces, and to add a little bit more history to the scene. Things like leaks, stains, and general grunge decals applied smartly can give your scene much more depth. I believe it’s important to try and establish an environment that is as believable and lived in as possible. As far as set dressing goes, I simply tried to make decisions that made sense. For example, if I’m going to add a piping infrastructure going through the tower, I want it to have purpose. That doesn’t mean I spent hours figuring out how water is recycled and moved across the length of the tower, but I made sure that something like a pipe was connected to everything in a logical manner. Things like the ivy growing along the tower only made sense to me given the context of the scene. The same goes for an antenna, for example. Why is it there? Do the people living here maybe need some sort of radio reception? I tried not to overthink things (it’s easy to do so), but these little narrative elements are what sell an environment as believable for me.
I really quite enjoy making panels and hard surface materials. All of the mats were made in Substance Designer, then put together in Unreal using a custom master material shader graph derived from the excellent work done by Wiktor Ohman in his master material setup.
For the actual creation of the 2 main panel materials, I started by creating a shape using an SVG node, then using a combination of Blur HQ / Histogram Scan to create a more beveled edge for each panel shape. That is then run through a blend node where it’s used as an alpha, and an Uniform Color node controls the height of the panel, using 127 as the mid point, anything above would be an “extruded” panel, where as anything below being inset. This makes up the large majority of each panel construction, with some variations here and there, sometimes directional blurs to create a tighter bevel on one side, or sometimes a Curves node to create more unique shapes. Everything else was usually done with a Shapes node combined with a Transform 2D to create things like panel lines, or even small insets to add some more interest.
A secondary graph is used to create the color / roughness / metallic / AO maps. I imported the “panel shapes” into this separate graph, and just went to town on it. Creating multiple different masks using the mask builder for all kinds of different scuffs, scratches, stains, etc. I tried to keep the base albedo of the materials on a value closer to white so I could tint it in engine. Originally I was going to do a more worn version of each panel and use vertex blending to drive more variation on each mesh, but decided that it would probably take up more time than needed, and what I had was enough.
To compliment the geometry, I used POM on the panel materials to make them feel much thicker and layered. This was quite nice to create that more heavy duty and industrial feel. Whereas using just normal information looked a bit flat for my liking. I was able to create variations on each material by adding detail normal maps, and detail roughness maps. In combination with a customizable albedo color, I was able to heavily use these two panel materials in the scene, especially when I wanted the dirtier and grungier aspects to come through a bit more.
The one thing I wish I spent more time on is the VFX and general post processing polish. For all of the near to the camera effects, I used a basic smoke like particle that simulated both clouds and steam. For the actual clouds, I was a bit more old school about it. They are simple flat geometry, but to create a bit more depth and react to the lighting a little bit more realistically, I used a raymarched heightmap shader based on the excellent work by Ryan Brucks. As the landscape wasn’t the focus of the scene, I resorted to what I knew to create a fast and convincing looking surrounding to the tower. A mesh generated out of World Machine, with a simple color also generated inside WM used as my albedo. I then took these into Substance to just add a little bit of variation and a base roughness pass. Landscapes are something I want to explore more in the future, but due to time constraints, these methods proved the quickest for me.
Shot from the movie Oblivion by Universal Pictures
I have a simple process for lighting. I find an image I like on the internet, and I try to recreate the mood with my lighting. This being an exterior scene, I mostly relied on a single directional light, with some spotlights here and there to create some highlights in certain areas. Everything is lit dynamically, so no lightmaps or baked lighting was used at all. This proved a big challenge, and the only way I’ve managed to overcome was by establishing what I wanted it to look like as early as possible, and tweaking it from there. I can be quite obsessive about how much I tweak things, so at some point I decided it was enough and did a final lighting pass. The lights in combination with a DFAO solution, and a HDRI image helped me create the tone of the scene. Then it was just a matter of adjusting contrast and saturation individually in the tonemapper. This is where I want to improve the most, so in this project, it was really about learning how much control I have of the post processing within Unreal, as I did not want to take the image into Photoshop and adjust it afterwards.
This was a really fun project to work on, if a little exhausting due to the limited amount of time I allowed myself throughout the challenge. The scope was large too, so it was a real learning experience on how to manage it. The biggest challenge really was creating a scene that looked believable. Very often I felt bogged down by how much work I had to do, so finding ways to reuse materials smartly and focusing on variation with addon assets and decals, I managed to add a lot more depth to the scene. The objective of any project for me is to learn new things. This was no exception, and it was a really good experience in planning and understanding what I can and can’t do given a certain timeframe. I’ve much left to learn. Especially when it comes to lighting a scene.