Hi Elliott, This is a great breakdown and very generous in sharing your process and insights, you came a long way from the vending machine days!
Are you planning on releasing the UE4 project to the public? Or only builds? I'd love to play around with it in the editor if possible!
Nicole Gorny discussed the way ‘Space Beer’ scene was created with tiling materials, realistic water, and amazing lighting.
Hi, my name is Nicole Gorny I am a graduate of Full Sail University in Orlando, FL. I graduated as a Computer Animation student with my focus in Shading and Lighting. I didn’t start making anything related to games until my first job, which was a small studio in Orlando, the team responsible for making short films was switched to help support a game the studio was also making. I never looked back. From there I worked in Simulation where I used Unreal Engine 4 to make training games for the Military. Now I work at Crystal Dynamics.
The Space Beer scene was a concept piece by the amazing artist Min Nguen. I wanted a new project to test using the RGB channels of a texture to define where tiling materials would go. This way you would be able to still get edge damage and dirt/dust, but would not lose fidelity when you get close to the asset.
With that I wanted to see the efficiency vs quality for generated maps. So effectively with each texture I could get 4 masks, or 5 if I used black as a base of the texture. The Blue channel would be a generated Curvature map that I used for scratches on the edges of objects the Alpha would be the AO that I used for dust or dirt. The maps I generated in Substance Designer or Painter. Black would be the base material then red and green for material variation. Also I wanted to try out using splines for wires and pipes, because why not.
I was trying out quite a few new ways to work, so I decided to stick with Unreal. I am comfortable with the material editor, which is where most of the trial and error would take place. I usually start a project with a blockout, first with primitives for quick iteration. Always testing my level with the size of the character. With this you can also test lighting and play with cameras a bit. Not until I had started building out assets did I find I wanted to add something to that left side that ended up becoming a lab area. From blockout, I then started making more finalized models. I would also make basic materials to try out the RGB masks, just to test the waters.
Honestly before this project I never really had to make high polys and bake them. I learned it in school, but at my jobs there was no need for it. So I struggled re-learning ZBrush as well using booleans in Maya to do a ton of hard surface modeling. I ended up doing about 80% of the high poly in Maya with booleans then would take that into ZBrush. Dynamesh at a high rez, and reproject details if needed. In Zbrush I did most small details like wires or screws. I kept everything in the pieces I would bake in so it was easier to name and bake in Substance with their bake by mesh name feature. I ended up working as Blockout>Highpoly>lowpoly.
Speedtree all the way, I was focused mainly on practicing hard surface and the RGB workflow so I found the fasted way to get a good result for the foliage was to use a premade tree and edit it to fit my scene. It is a small but important part of this scene.
The materials had to look awesome up close, because they were tiled and not on a 1:1 texture sheet for each asset I was able to get a ton of detail out of them. I wanted to practice creating materials from scratch in Substance Designer, so I set out with that in mind. One of the biggest problems I ran into was with the Material function plugged into Materials I could only source 12 textures. Which seems like plenty, but when you have 5 material functions. Say, stainless steel, black rubber, painted metal, scratched steel and dirt. Each one having it’s own albedo, roughness and normal. You plug that all into a material with at least one RGBA mask texture, sometimes two it adds up quickly. I ended up packing the albedo, roughness and normal into one for the tiling materials in most cases. So it would take a count of three textures down to one.This example of the keg I broke the mask and the AO and Curvature into different maps to keep the graph a little neater.
Each channel is just a black and white mask. Anything with a _MF is a material function, they are the tiling materials. I made a small library for this project. This might make it easier to visualize each channel.
This is doing the same thing, just with some extra controls. The problem with the auto generated AO and Curvature is that it was too perfect. So I created some generic scratches, dirts and clouds then packed them in RGB channels to pick and choose which ones I wanted. I would Multiply, Add or use the AO/Curvature into a alpha of a Lerp to add variation to the mask.
Sounds confusing, I know. Starting with the Curvature, which is the red channel of the curvature/AO. Sometimes the Map is covering to much area, so I use an SCurve to control that. Basicly what “Levels” does in Photoshop. The tileable scratches/dirt is multiplied on top to add variation to the Curvature. The red channel from the first mask is inverted and multiplied on top, just to say “I don’t want edge damage here”. All that makes up an alpha that you use for the edge scratches. Most of the extra math and adding detail can be done in Photoshop or Substance. But for this project I didn’t want to be bouncing, I wanted to be able to do it all in Unreal.
Actually, I just watched like 5 tutorials on how people made water in Unreal and I took a little from all of them. I had a high frequency normal and a smaller frequency normal and had them scroll over the UV’s at slightly different speeds. Color and Opacity to change based on Fresnel and Depth Fade.
This was the biggest part where I was bugging all my peers for critiques. My first “final” lighting pass was very flat, but I had been staring at the project for so long it looked great to me. It was pointed out to me that the overhead lights in the lab were very flat and distracting. I wanted to get more of the sunlight being the main lighting source with the warm bounce light coming in. The cool lights were there to be a contrast to that warm sunlight. Such as the blue lights in the water, the monitors and the lights by the glass to the fermentor room.
You can, in fact, get pretty good results from automated maps. I would probably use this on props or assets that are not hero assets. It is a good start for hero assets, but you definitely want to build on top of that. I think the main challenge was the one I mentioned before with having too many textures set up in a material. As far as advice goes it usually helps to get the broad strokes first, things are easy to adjust and test in this phase. Always get critiques, this can give you a new perspective on your project also new ideas for overcoming problems when you run into them. Last I would say is don’t be afraid to change things. Sometimes you can get to attached to your work, and that can get in the way of progression.