Creating a Modular Candy Shop in UE4
Heather Dove did a breakdown of her modular Capone’s Candies shop made during a class at CGMA and explained how texel density can help you with modeling at a proper scale.
Introduction
My name is Heather Dove, and I am a Junior Technical Artist at Disbelief, a video game consulting company based in Chicago.
Growing up, I created music videos for my favorite video games and shared them on YouTube. When deciding what college I wanted to go to and for what major, I had the epiphany that someone had to make the video games I was playing (thanks for the heads-up, mom!). Since then I’ve got a BFA in Animation and continued studying at CGMA, plus got career coaching from Joshua Lynch. Before Disbelief, I worked on simulation for government, industrial BIM kitchen modeling, and mobile AR. My latest personal projects are a mobile game called Lamb Chopped and a modular environment called Capone’s Candies.
Capone’s Candies
Capone’s Candies: How It Started
Capone’s Candies is a scene that came about when I was taking the Modular Environment class at CGMA under the mentorship of Clinton Crumpler. I had been let go from my previous job due to budget cuts, and suddenly I had all the time in the world and a portfolio that didn’t match my ambitions. The funny thing about CGMA courses in my experience is that you enroll thinking you have a handle on things, and then an industry titan comes along and shows you a crazy array of tools and workflows you need to check out.
My inspiration for Capone’s Candies started with the word “modular”. Modularity is all about reusing pieces in an effective way. What things in real life repeat a lot? My mind went from organization bins to candy. Once I had that concept, I eventually found reference images of this awesome candy shop called Shane’s Confectionery based in Philadelphia.
Originally, I had a different idea and wanted to recreate a scene from a TV show. I asked Clinton about it and he had advised against it, saying that when you’re learning, it is better to do a new environment. I quickly saw what Clinton meant; using a loose reference means that you can focus more on your ability to execute ideas well, rather than focusing on mirroring the reference exactly. Additionally, I could reimagine the space in an art deco style, which I have a soft spot for.
Modeling the Scene Relying on Texel Density
To create the space, I predominantly used Maya. The ultimate goal of modeling for modularity is to create the biggest possible chunks with the least amount of materials and polygons, all of which are tiling when possible and use appropriate texel density. To break down that techno-babble, the first thing you need to do is determine if your scene is third-person or first-person. First-person and third-person are generally approached differently in the industry. While different artists have different opinions on the matter, a first-person game should have a texel density close to 10.24 and a third-person game should have a texel density close to 3.5. A studio you work at might do this differently, but it is important to understand the fundamentals. For those of us not familiar with texel density, I highly recommend checking out this video. 80 level also has an in-depth article here.
To explain it broadly, Texel Density refers to the idea that everything in your scene should appear to be about the same visual quality. When you see a very pixelated ad on a billboard, you know the original image didn’t have a high enough resolution for the size it was created at… But if you put that same image on a stamp, it probably wouldn’t look pixelated at all, right? Take this concept, but put it into the 3D world. You could eyeball your texture space and put way too much detail into a small object, or not give enough space to a large object. Instead of eyeballing whether or not your texture “looks good” by sizing your UVs up and down, you can actually use a specific number that is related to the size of your object and the amount of UV space you want to give it. Every single object in your scene will use this number, and your modeling package will adjust the UV size accordingly. In Maya, you can set the texel density of the UVs in the UV Toolkit:
In Capone’s Candies project, I went through trial and error because I was modeling at the real-world scale and not with the UVs or texel density in mind. I came up with 80cm as a real-world distance between countertops but never considered how big the player’s character was. That’s one way to go about making your pieces, but hopefully, you’re in a scenario where you can use texel density as your guide. For example, if you know you’re committing to a 2048×2048 texture sheet for an entire wall (which is a square chunk, just like the UV), and you’re doing a first-person game with a texel density of 10.24, that means your walls are going to be 200x200cm. Doing this would mean that your UVs would take up the entire UV square, and therefore tile seamlessly if your texture is set up based on that grid. If your texture is repeated seamlessly on half of the 2048×2048 sheet, then making a set piece that is half the size would perhaps work better. Once you start thinking about texel density, it will inform what kind of block-out kits you need to deliver to your level designer. If texel density is still confusing as a concept, worry not. Just put it into practice and get feedback from others. It takes a while to click for many artists (myself included).
Materials
For the materials and textures in the scene, I’ve used a combination of Substance Designer and Painter, with the exception of anything glass- or mirror-based (these are done in Unreal Engine). Originally, since I knew I had a tight deadline, I kept the materials simple. After the CGMA course was finished, I continued to polish my scene based on the feedback. My floor originally looked not so hot, to be honest. It’s crazy how feedback can really open your eyes to that.
The floor wasn’t the only learning experience. Originally, all of the glass in this scene was more turquoise in color, since I had followed along with a tutorial where it was done similarly. If you want a good starting place, you can check it out here. Eventually, I understood that tonally this did not fit my scene and looked out of place. Some feedback I got on it was to think about how people interact with glass at shops. They put their hands on it, glass gets scratch by things over time, and so on. A good practice for telling a story in your scene is to think about how the world and people interact with the objects. The candy jars and display cases all originally used the same material, but I realized that wasn’t specific enough. I wanted the jars to appear “sugar-dusted”, and the display cases to have more “wear and tear”.
Since the jar and the candy was all exported as one object, I had a completely opaque surface (the candy), a completely transparent surface (one layer of glass), and a mixture of both (a different layer of glass which was “dusted”). There were a lot of issues with rendering this way – the candy appeared “on top” of the glass sometimes, while other times it looked like it was “inside” it. Eventually, I decided to separate the glass from the candy mesh, so that I could tell the engine what order to render things in (sort order) since I found no such option for different parts of the same mesh.
Register Prop
Another asset I spent quite a bit of time on was the cash register in the scene. I chose to create the shapes in Maya. I treated the detailing as a high-rez model, which I baked down onto the low poly using Marmoset Toolbag. When designing the register, I built it in a way that allowed me to programmatically move the number dials, therefore making this prop more interactable. If I were to tackle this again, I would most likely try to create the detailing in Substance Designer.
Lighting & Post-Process
Lighting the scene was left to the very end of the project. It is tempting to do lighting sooner in the project, but it can slow down production and affect how you produce assets in a harmful way. I knew from the beginning that I wanted the candy shop to feel just as glitzy as The Great Gatsby, so I set out to mimic a Sepia-toned photo. Lighting in Unreal is pretty self-explanatory, but I will point out the following: make sure that you have a Lightmass Importance Volume encompassing your scene. It may not seem to do much visually, but it id important for processes under-the-hood. Additionally, for high-level polish, you can add Post Processing Volume. Here is an example of the result with and without the Post Processing Volume (the gif gets a bit crunched, so seeing the jitter difference won’t be easy):
The Post Processing Volume is very powerful, and it is pretty intuitive for anyone familiar with layer modes in Photoshop. The two settings that I think made the biggest impact for this scene was Image Effects and Chromatic Aberration. I’ve heard from some people that “too much” Chromatic Aberration is sort of looked down on in the industry as something that hides flaws, so I’d be careful not to crank it up too much. However, it does mimic what a traditional camera does in real life, so it really helps pull together that “realistic feel”. The Post Processing Volume can get a bit heavy, so keep that in mind when utilizing it.
Afterword
My biggest challenge in this project is on a more personal side. In a lot of ways, this project felt like a “make it or break it” moment for me. My portfolio right now is almost entirely composed of this project, and it’s likely to be what helped me land my current job. For me, the challenge was balancing the need to work really hard to crank out a portfolio piece with a healthy mentality. Talking with my mentors about the project is one of the biggest aspects that gave me that healthier mentality; yes, they’re there to point out things you should do better, but they’ll also call you out when you’re being a bit too harsh on yourself. If you’re looking to improve in astronomical ways, I 100% suggest both the Vegetation & Plants for Games course and the Modular Environment course at CGMA. If you’ve already got the skills and a pretty solid portfolio, but you’re confused about where you fit in the industry or how to get where you need to go, I definitely recommend chatting with Joshua Lynch via the Mentor Coalition’s Career Coaching.
For me, the next steps involve a little less crunch-time and a little more life balance. I plan on adding more to Capone’s Candies, but I’ve also got a score of other projects I’m excited to eventually tap into. If you’d like to read more details about my projects, you can read my blog here. If you’d like to give feedback or chat, you can find me on Twitter or ArtStation.