Sculpting Desert Civilization in 3D

Sculpting Desert Civilization in 3D

Jack McKelvie from Pixel Perfect Polygons discusses the production of his latest scene.

Jack McKelvie, lead 3d artist from Pixel Perfect Polygons, discussed the creation of his Extinct Desert Civilization scene. The artist talks making each rock look unique, building assets and setting up the right light. 



Hi everyone, my name is Jack McKelvie and I’m lead 3d artist at Pixel Perfect Polygons. I attended school back in late 2012 where I studied a variety of things at a surface level including art, photography, programming, and other studies. I ended up spending all of my spare time making 3d art and eventually started looking for a school that would suit my ambitions to become a 3d artist. Unfortunately, at the time at least, most of the schools I could go to were producing subpar artists and the one school that wasn’t I couldn’t attend for a variety of reasons including my location (University of Hertfordshire).

Eventually, I decided to quit my studies and go full time into pursuing my passion of becoming a 3d artist. I was picked up shortly before stopping my studies by an indie team that was working on a horror game called Conscience. The game didn’t get any traction though and I ended up going back to occasional freelance work and building up a portfolio. About a year later me and a couple of the core members of the Conscience project formed up Pixel Perfect Polygons. We started building our name doing work on the Unreal Engine forums and since then I’ve worked on close to 17 indie titles. Most of them went under or are still in development, but there’s a couple that survived such as Embers of War by Dark Rift Entertainment. Currently, I’m working as lead 3d artist on Our Ghosts of War.

Extinct Desert Civilization

This project was actually an art test for a company so I had a concept to go off of. The concept itself was really rough so I actually had a lot of freedom to do what I wanted with the project. I started with a goal to communicate a level of age and scale for the environment. I wanted it to feel immense, but I also wanted hints of a civilization long past littered throughout the scene.

Production of the scene started as most productions start: lots of resource gather. What I really wanted to try with this scene was to learn some of Naughty Dog’s pipelines to achieve a similar art style as what that studio outputs. To do this I first did some reference gathering from Uncharted 4. Luckily there’s been plenty of art dumps through ArtStation and Polycount so references were easy to find. The next thing I did was I started reading up on and watching talks about their pipelines to nail down their workflows. After some research I found that they used Zbrush a lot for their organic modeling and substance painter/designer for their texturing. Adopting these programs into my own workflow allowed me to get quite a bit closer to their art style while maintaining a unique vision that stuck to my main concept.



Before I got into doing any modeling or texturing I jumped straight into UE4 and made something. I’ve always struggled with getting started on something so before I did any modeling I just used some of the free assets from the unreal marketplace to block out the shapes and get the perspective right. When I finished blocking out the basics it was no longer about creating something from nothing, it was about changing an existing creation to fit the concept or vision.

The reason why I chose UE4 is because of it’s flexibility to do anything I want it to do. The flexibility of every element of UE4 is incredible. I think even something as simple as the post process settings I ended up using would have been significantly harder to do within Unity 5 or Cryengine 5. Even though I love UE4 it’s definitely harder to get it looking good than Cryengine 5. However, UE4 allows me to experiment and do new and interesting things which I value a lot.




My workflow for this project typically started with 3ds Max for the simple blockout. I used Bitmap2Material 3 to generate height maps from trim textures found on I used Zbrush for sculpting the large and medium details, for adding the trims using the surface noise modifier, and using decimation master for the low poly. I then went back to 3ds Max for cleaning up the low poly (decimation master almost always makes a hole with a bunch of rogue vertices somewhere on the mesh) and doing the uvs. I then went to substance painter for baking and texturing. Texturing in Substance Painter was pretty simple with this project. I used a couple simple concrete materials and made multiple color/value changes and masked them out using the generators to get an interesting texture.


1 of 2
1 of 2


One of the challenges with this workflow is making it fast enough to be practical. With the use of substance painter though you can use a pre-existing substance for a rock you’ve made reload a new rock and re-bake using the updated meshes and the material will update correctly after the baking is completed. This brings down texturing time to 10-20 minutes per asset.

Once I got used to the workflow it actually proved to be a lot faster than I initially expected. That is however the major downside to this workflow. Even though it’s faster than I expected it is still slower than a lot of other workflows. Sculpting everything by hand does prove to be very nice looking, but in a lot of studio environments it may not be practical.


My secret formula for making rocks isn’t much of a secret actually. It’s sort of the garlic salt of secret recipes. What I do with every rock is I use trim smooth border with a square alpha to sculpt. A lot of the times I will create and use alphas (I’m a big fan of Jonas Ronnegard’s brushes) to get in some interesting forms which I then clean up and change using the trim smooth border brush. I also couldn’t live without dynamesh. It’s perfect for making rocks.


1 of 2
1 of 2

To some degree there will always be some repetition but there’s a few things that can help mitigate the effect. One thing that helps is if you try and minimize really unique details and patterns on your mesh. That way when you’re copying the mesh around your scene the visible repetition won’t stand out quite as much. Another thing you can do is add a flow to your meshes. In general your cliffs should flow in a direction and having them flow in a direction rather than having them be random helps hide the repetition well. Another thing you can do is the most obvious thing. That is to create more rocks.

1 of 2

The materials are pretty simple. The only thing that’s been added to the material that isn’t default is I did add detail textures to the rocks to help maintain their level of fidelity up close.


The lighting for this scene was particularly important to me. I wanted the background mountains fairly illuminated and the temple located inside the mountain enclosed in shadow. This ended up requiring two directional lights and two point lights. After doing a few tests I felt the scale wasn’t feeling quite as big as I wanted it to so I added a very harsh point light inside of the entrance at the top of the stairs. While not a focal point before it’s now a point of focus for the scene. I found I assumed the height of that entrance was roughly 1.5x the size of a person so after adding the light the scene as a whole began to feel much bigger.


Jack McKelvie, Co-Founder and 3d Artist at Pixel Perfect Polygons

Interview conducted by Artyom Sergeev

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more