Joseph Burgan gave a huge talk on his Zelda fanart scene: prop & tree production, various materials workflows, Game Arts Institute Bootcamp experience & more.
Joseph Burgan gave a huge talk on his Zelda: Twilight Princess fanart scene Outside Link’s House: prop & tree production, various materials workflows, use of Megascans, struggles, experience with a Game Arts Institute Bootcamp and more.
Hello. My name’s Joseph Burgan, and I grew up in a little town called Colne in Lancashire, England, but have been living in Utah, USA, with my family since 2009. I’m a music theory geek, a video game enthusiast, and I love to create 3D video game art.
I currently work at Epic Games now as a Junior Environment Artist on a contract, which they’re treating as an internship since this is my first job in the industry. I live and breathe video games and their creation, and I’d be a happy man if I could work hard on video game art for the rest of my life!
Path into CG
When I found out about the Unity 3D game engine, I realized that I really could be one of those guys who make video games! I started getting into game design and the basics of Unity 3D when I came across a tutorial that talked about an asset they had created in Maya to use for the game they were making in the tutorial. It was a tent, and I got so curious about how they got the textures to line up on the model just right. It blew my mind wondering how someone would go about doing that!
I started learning basic modeling in Maya by following tutorials on YouTube. Shortly, a group of friends got together who wanted to create apps and games, so I offered to help and was excited to contribute.
I wanted to create cool 3D experiences for people to explore, but none of my friends knew how to create a 3D world to put the player into. So… it looked like the 3D modeler had to be me!
Over the next couple years, I was learning pretty much everything in the game design pipeline as I took leadership of the group, from programming to team and project management, and from music composition to 3D modeling.
But as time went on, and I was getting more and more sick of boring jobs that just felt more and more like a prison to be at, taking me away from what I loved doing the most, I decided it was finally time to focus all-in on something to do with game development. So I chose to pursue 3D art.
I didn’t want the debt of college (and I hated school when I was younger), and I trusted my gut feeling that game developers didn’t care if I went to college or not as long as I could produce the work they wanted. So I did all my learning on YouTube and sites like DigitalTutors.com (who are now Pluralsight.com) and did my best to climb that hill by myself, while still making games with my small team that we called Puddygum (you can check some of the month-long prototype projects we did here).
Finally, during this beastly endeavor, I learned about the Game Arts Institute’s Environment Artist Bootcamp that promoted helping their students build a portfolio that made them a candidate for jobs, by meeting one-on-one with the teachers. Ryan Kingslien and Alexis Boyer of BluePoint Games were my teachers. It was very well worth it, and it was the sort of thing I had been wishing I could get for a long time – getting one-on-one mentorship from a professional game artist! With their help, I was able to produce the Twilight Princess environment piece.
The reason I decided to do this piece was that I was uncomfortable with modeling and texturing organic things at the time. I also knew I needed to do something I was passionate about finishing because I knew I’d be learning a lot of new and uncomfortable things, and needed a strong motivation to see the project to the end.
Reference & Style
To gather references, I first played the game and explored every nook and cranny of the area. I took screenshots of everything.
I also searched Google for a lot of real-life references like big trees, colored roof slates, wall plaster, rocks, wood, bark, etc.
My goal for style was to make it look close to what you would see in a Pixar film. I’m a huge fan of Pixar, and always have been from as far back as I can remember!
Through studying screenshots of Pixar environments and characters, I found that their textures were usually extremely realistic, with some stylization. But they get most of their cartoony and stylized look from the shapes and colors of their objects, characters, and environments. The above picture is a shot from Pixar’s “The Good Dinosaur”.
That style was something I hadn’t really seen much in video games, and I thought that would compliment Twilight Princess really well. Twilight Princess had a very realistic look, but it was typically the shapes that brought out a unique style to the game, I found.
For the blockout, I actually found a ripped (or extracted) file of the original map/in-game location on the internet and studied the placement and scale of the area. This was a great learning experience for me, as I had exactly what was in the game to study from and pick apart.
When I was figuring out how much of the scene to make, it was suggested to me that I only work on the features of the house and tree, and the nearby surrounding elements to create a diorama piece. I went with that idea with the intent to revisit it when I had completed the diorama to complete the scene.
Overall, I wanted to get as close to the original as I could, just with an enhanced look. So I did my best to make sure it was recognizable to fans of the game.
Main Tree Production: Blocking & Texturing
Oh man, creating the main tree was definitely a daunting task at first. I had no idea how to approach it originally!
I started by creating a low poly blockout tree in Blender. Then, I started sculpting and defining the form in ZBrush (after I had the house blocked out, so I knew where the tree had to wrap around the house). Then I pushed the detail further by moving from the large details to the medium details. Like I mentioned before, I wanted the textures to look realistic, but the shape could be pushed to a more stylized look.
Once I was happy with my sculpt, I used ZBrush’s Decimation Master tool to create the game-ready low poly tree. I cleaned up the decimated result in Blender and started to add the UV seams along the flow of the wood. The triangle count for the tree is 17,681 triangles.
I would have reduced the amount of triangles a lot on the top half of the tree, and even more on the very top of the tree, because if this was an asset for the actual game, the camera wouldn’t be able to get close enough to notice the amount of detail that is there in that picture, so I could have saved a lot of triangles without harming the quality from the ground view. But because I wasn’t sure what my final render camera angles would be, I decided to keep the triangle detail the same everywhere.
The tree has two UV channels. The first channel is for the tiling bark textures that will be applied in Unreal Engine 4 later on. I cut seams to create small sections throughout the tree so when I unwrapped it all, I would have minimal UV stretching. I also rotated the UV islands around so that the flow of the wood in the tree object would match the flow of the wood in the textures. I used Blender’s color grid texture to indicate the UV face direction.
I wasn’t concerned about keeping the UV islands within the UV 0-1 space for this UV channel because I just needed the textures to tile – no texture painting needed. The white area on the picture shows where I applied my second material, which would be the leafy area in front of the door (the first material being the bark).
The second UV channel was unwrapped and packed within the UV 0-1 space, so I could bake normals and ambient occlusion from the high poly to help accentuate the sculpted medium details of the tree’s wood flow. I used Substance Painter to bake those maps.
At this point, both of my UV channels were ready to be combined in Unreal Engine!
I wanted my tree bark textures to look very realistic, so I ultimately decided to use the Megascans library. Megascans is a big collection of the photo scanned textures and materials, so they’re as realistic as you can get.
My tree bark material is made up of 4 different tree bark textures from Megascans. By combining all those textures into one material, you can vertex paint your mesh in Unreal Engine to tell it where to render each texture.
There is a limit to how many textures you can use in one material in Unreal Engine, so it’s important to combine any grayscale (black and white) maps together since they only need one color channel in the image to display the needed information. In Unreal Engine’s material editor, you can assign an image’s color channel to a map output. For example, with an ambient occlusion grayscale map pasted to the red channel in Photoshop, a roughness map pasted into the green channel, and another map pasted into the blue channel, you export them out to a single image and you get away with 3 textures in 1! I used this map combining method for all of my assets.
Here’s an example image using my scarecrow prop textures.
With the 4 bark textures all applied to the tree, the last thing I needed to do with the material was to combine my normal and ambient occlusion bakes with the other textures. I basically used a lerp node (or normal equivalent for the normals) to blend the two UV channels together to define the medium details from the sculpt
Finally, I needed to green it up. I created branch cards from a Megascans texture for the big branches at the top. Then I dressed the tree with fern and vines, trying to get as close to the original as I could and then enhancing the look from there. After all the foliage had been placed, I used Unreal’s decals to stick moss textures all over the tree. It may not have been the best method for the moss, but it still runs very well in real time on my computer, and it gave me a good look that I was satisfied with.
So, that was my process of creating the tree! There was a lot to figure out because it was such a big object, but Alexis had my back in all of this, for which I’ll be forever grateful.
Props: Roof, Door & Horn
I paid close attention to how the objects could have been made if it was a real, physical object. It was a little problematic sometimes because some things just don’t make sense from a realistic/physical point of view. For example, I’m still not even exactly sure how the diagonal branch thing on the front of the door makes sense, but I never thought about it when I saw it in the game before, so I hoped people wouldn’t think too hard on it when I created it!
That was probably the biggest challenge in recreating the props. Trying to make sense of them so people wouldn’t think twice about how it was made, but it would look right.
In all of my props, I tried my hardest to find pictures of real objects that were close to the game props. I looked at a lot of designs of doors, horns, even weird tree formations that made sense.
For the roof tiles, I wanted to see if I could find a reference that was close to the original Twilight Princess roof design. Here is a picture of the original roof.
As I said before, I did my best to find real-life examples of the things I was recreating. I actually did find one picture of a roof with similar colors to the original roof! So I used that as my main reference.
There’s quite a bit more grunge on the original roof, and if I was to go back and touch up some things in the scene, I think I’d add some more grunge to the roof tiles.
Something else that was a bit of a challenge to make was the horn. I found a good picture of a goat with similar colors, so I tried to replicate the look and feel of the horns in the image, but stay true to the original concept.
I modeled the pine trees myself in Blender. I started off by cutting up cards using Megascans atlases.
Then, I made multiple branch section variations using those cards and used those sections to fill up a few long branches.
Finally, I stuck those branches on a tree trunk mesh.
I wanted to know how to make something like this by hand because before doing this project I was very uncomfortable with the idea of making foliage. This really helped break me into learning about how foliage is made.
Use of Megascans
I used Megascans for pretty much all my foliage for two reasons:
- 1) Megascans were realistic, and that’s what I was going for
- It would have taken me much longer to sculpt and create textures for every single plant, and I just needed to get it finished in a reasonable amount of time.
As I mentioned earlier, I wanted to play with a style that was similar to what you would see in a Pixar film. I looked at a lot of pictures from The Good Dinosaur because they have a lot of stunning natural landscapes in that film. It looks so realistic with an added Pixar stylized charm. That’s the look I wanted to experiment with. It’s such a visually stunning film!
I figured Megascans would save me time and help me achieve this sort of look. This is the kind of style I’m most attracted to, so this project was to help me practice that style.
In the future, I’d like to try sculpting and painting foliage myself.
Different Material Workflows: Roof Tiles, Door, Pine Bark
I used Substance Painter for my material/texture blending. I used a few other programs for textures, too. I’ll show how I made a few of my textures.
For my roof tiles, I sculpted the high poly in ZBrush. It was really important that I captured the little cracks and things in the slate so that Substance Painter could use them to help make the textures look more detailed.
Then in Substance Painter, I baked my high poly meshes to my low poly meshes and started adding layers. I think it’s common at first to feel uncomfortable and possibly overwhelmed at how to go about building a texture from nothing, but you just work on layer after layer after layer. Bob Ross, the famous painter, taught me that!
Start with the main color, then add a second color that is close to the main one to add variation with a mask made by noise maps. Do a third variation, using noise masks scaled differently. Use the edge wear generator as a base for your edges, and play with the settings to make it fit the feel you’re going for. Think about how your object would get a lot of the marks and wear if it was a real object. What places would be touched or scratched up? If there are areas in the model that wouldn’t get a lot of wear, then get rid of the wear that the generator put there.
I always use fill layers in Substance Painter. I hardly ever, if at all, use standard layers. The reasoning for this is because you have so much non-destructive control of your layer that way. If I use a fill layer with one color, stick a black mask on it, and generate or paint a mask out, then I can still change the color or visual qualities of that layer without having to repaint anything. On a standard layer though, if I wanted to change the color of the layer, I would have to repaint it. It is much easier to use fill layers. That’s part of the power of Substance Painter. So use it!
Once you have your color all figured out, start adding a couple layers of height information. Add a layer of small grain using the height channel and a noise map in the black mask. Then add another height layer of a different scale. Same with the roughness–apply a base roughness value to a layer. On top of that, add some roughness variation using a different roughness value, and a grunge map or something on your black mask. Then one more time if you think it’s necessary.
The key to realistic textures is variation, variation, variation. I’m no master at texturing, but that’s basically how the masters do it!
Another method I used was by using photo textures online. I’ll use the door as an example.
I found a stripped bark texture on Textures.com and then took it into a program called AwesomeBump, which is very similar to the popular tool, CrazyBump. In that program, you can take a color image and a grayscale version of the image, and generate other maps from them, like your normals, height, roughness, ambient occlusion, and metallic maps.
I took in into Substance Painter, and that gave me a great base to start with. But it’s a start, and there’s a lot more to do to give it a better look. I then painted some height information between where wood sections touch, to make them look like separate pieces, along with a wood grain height layer.
After I added those smaller details, I went and added a darker tint to the color, and brought out the edge highlights using the edge wear generator and editing the settings and adding other masks to it from there. I then added the dirt generator and toned it down quite a bit before adding some dirty edge definition.
Then, I really brought out the shape by manually painting some dirt (note: painting the mask for the layer, not the layer itself. I could then change the color and qualities of the dirt easily without having to repaint anything). And finally, just before calling it good, I added some moss by using a mask generator and touching it up with a paint layer (for the mask).
Finally, I’ll explain one more method I used for texturing.
I used Substance Designer for a small number of my materials. In Substance Designer, it’s important to build your shape with height information before you worry about anything else, just like you would with a model made in a 3D modeling program. In this case, though, I will show you an interesting approach on how I made the pine bark, which was made with a combination of programs.
First, I started with a Megascans 3D photo scanned pine trunk asset. I took their high poly scan into ZBrush and decimated it a little to bring the file size down. Then I took it into Blender and created a cylinder of the same size and used the shrink wrap modifier to bring the vertices to the face of the high poly. When I unwrapped the low poly cylinder, I made sure the UVs were straight so I could work with the textures easily to make a tileable texture later. I took the low poly into Substance Painter and baked the high poly model’s detail to the low poly. This left me a texture to work with.
I exported the normals and ambient occlusion maps to Photoshop, where I made sure they tiled fine horizontally by using the Offset filter.
Then I brought them into Substance Designer where I created the Base Colour map using the height information from the normals and ambient occlusion.
I used the ‘Make It Tile’ node to tile the texture vertically.
And that’s what gave me the final result! I was pleased with how it turned out, especially after going about it in a very round-about way.
So in conclusion to the texturing question, I made textures in a lot of different ways, which gave me a lot of experience with all the different methods. At the end of the day, what matters is how it looks and functions. Don’t think you have to do something just one way! Whatever you can do to get a final result you’re pleased with – do it! That can sometimes lead to processes that work better for you. I think you should try multiple ways to get your end results and stick to the ones that you find most effective for you. There are so many tools to use, and, like in a wood workshop or something, use the tool that works the best for your situation.
Challenges: Figuring Out the Scene & New Software
There were a few challenging things in this project.
One of them was trying to figure out how to build this scene in a way that made sense physically, specifically the house. I wanted this scene to be an enhanced version of the original, and as close as I could get it to the original that everyone remembers. Sometimes, that left me stuck, because some of the things they had in the original game didn’t make any sense at all, from a physics point of view.
For example, the exterior of the bottom walls of the house was a wood texture on top of a sort of a mush of polygons, leaving a very undefined shape. Also, the actual wall texture looked like bark, which didn’t make physical sense either. How would someone use bark as a sturdy wall for a house?
I don’t think anyone noticed these things when they played the game. I certainly didn’t, and I’ve played through the game a few times!
Here’s a picture of the original house mesh. Note that on the pictures above, the grain of the wood textures doesn’t even follow the arc shapes on the sides of the house.
I’m sure the original developers had a lot of constraints to work with at the time, so they had to make do. But now, as I needed to take it apart and rebuild it, I had to reimagine how I would go about making this work while keeping the same shape and form. That was challenging, especially when I was trying to be as true as I could to the original.
Should I make some crazy tree formation and keep it all one mesh? Could I make it in a way that made sense, or at the very least not noticeable to the average observer? How would I make this sort of shape if I had only tree trunks to use?
Ultimately, I decided to make tree trunks for the corners with branches that kept the arching shape on the sides. And for the door frame, I actually found that it’s built differently, in a way that makes sense, on the inside of the house in the game, as you can see below.
So I stuck with that idea and made it into what you see on the final images.
Then for the walls, the inside walls of the house looked like plaster (as you can see in the image above with the door) so I used a plaster texture for the outside also.
Another challenge that comes to mind is feeling like I had to use a program I was very uncomfortable with. In the Bootcamp, it was highly suggested that we use Substance Designer for our materials. I had never used Substance Designer before this project and that was an incredibly daunting task. I knew what I wanted my end result to look like, but using something like Substance Designer to get those results?! That was going to be a long journey…
I started watching and following tutorials. I followed along and started to get the hang of things, at a more basic level. My goal, though, was to make a realistic bark material for my door, another one for my roof soffit, sign, scarecrow sticks, and the biggest one – the main tree. The tree was going to be so big that the detail had to be good. It was the main piece! I wanted to follow the advice I was given, but felt very trapped and pinned down because of my lack of experience in creating beautiful and realistic materials in Substance Designer.
I found myself wasting time, procrastinating, just watching YouTube videos and becoming easily distracted. I was completely lost.
This went on for a few weeks, and my enthusiasm for the project dropped. Until I came and talked to Alexis about it. Basically, she said she’s never used Substance Designer before, and that using Megascans would be an excellent way to get the results I was looking for. For her work at BluePoint Games for Shadow of the Colossus (PS4 remake), she said that’s what she did, by taking images from online places like Textures.com and going about it using a method similar to what I demonstrated texturing the door earlier in the interview.
Dumbfounded and surprised at such a simple response, I said, “Oh… well okay then,” and got right into things – excitement and enthusiasm rising again!
I didn’t give up on Substance Designer though, I still worked at it and made a few materials in it so I could have the experience, but I was so relieved knowing I didn’t have to use Substance Designer for everything. Like I said before, use whatever tool you want to get the results you need! Don’t let yourself freeze up on something; find any way you can to move forward! And while you do it, try to broaden your skills and abilities.
I will improve on Substance Designer, and I’m very excited to work on improving my skills in it in the future!
Finally, the last challenge that comes to mind was managing how to go about making an entire environment.
At first, I was doing all of my high poly models before moving onto my low poly models, and then doing all of my low poly models before moving onto texturing, and so on. This is something I was encouraged to try, and while it was good to try it to see if that worked for me, I wouldn’t recommend ever doing an environment like that. It makes sense, but it’s a poor flow, for a couple reasons.
After you block out your entire scene, you know where everything is going to go. The next thing to do is to start seeing what everything needs to look like. And doing things one prop at a time 1) makes it easier to see progress, which also means more dopamine more often! (And who doesn’t want a bit of dopamine to help you stay motivated?!) 2) It helps you get a better idea of the look and feel of the rest of the environment much earlier on, and 3) you can start to tell if certain colors or looks of your props need to be adjusted to help match each other, especially when you start to get it into the game engine.
This is a workflow Alexis helped me to develop. 3D art can be an incredibly overwhelming thing to learn how to do, and if you’re doing it on your own at home with help from online, it can get very discouraging. I went through times like this often when I was first learning.
Having Alexis there to help me was invaluable. That was the most valuable thing I got from the Bootcamp – having someone who knew the whole process, whose work I wanted to emulate, show me the way to go.
I want to help others get past those learning barriers, too. Now I’m helping others who have come to me wanting to make 3D art, but have just felt stuck; not knowing how to go about things, feeling uncomfortable with the process, or just needing guidance. These people are starting to make the progress they’ve wanted to see in their work for a long time now. It gives me such a great feeling of fulfillment to be able to help others out of the holes I found myself in when I was on my own.
If there’s anyone out there who feels like they need a hand or just wants to finally finish something all the way (I know what it feels like), it would be my absolute pleasure to help them out! They can reach me at josephburgan.3D.email@example.com or message me via Discord at Joseph Burgan#1531.
In the next year, once my contract/internship is finished at Epic Games, I may need to find another game studio to work at. So email me at the same address if you need someone to fill your position!
Thank you 80 Level for interviewing me, I was very grateful for this opportunity!