This post comes to you from one of BA2’s artists. They are going to give us a walkthrough detailing some of their work for Shepherd’s Sky.
Hey! I’m Lex, thanks for checking out my DevBlog. During the course of developing this game with my team, I’ve worked on concept art, modeling, rigging, texturing, and animations for Shepherd’s Sky. Today I’ll be covering what I’ve done for our adorable little sheep characters.
I started by developing concept art in the beginning, trying to work out what our characters should look like and how they would interact with the environment. Did we want something realistic? Stylized? Something bouncy and cute? I played with the ideas I had and conversed with my team to develop a style we agreed on, sketching out what I thought the sheep should look like.
After coming up with concepts for our sheep (I will be using our “Ram” character for this description), I took our favorite design and started sculpting it within a modeling program called Zbrush. With this program I was able to create a high-poly (polygon) asset of our sheep by literally drawing out a 3D model on a computer tablet. High-poly refers to how many polygon faces are present on the surface of the model.
Once I’d created the high-poly model, I packaged and imported it into another program called Maya. By transporting it into this different program, I was able to start reducing the number of polygons that made up the model (if you have too many, it will lag your game because it contains too much data!). And we couldn’t have that.
So, following BA2’s art pipeline, I started using a feature in Maya called Quad-Draw. By using this feature, you can take a high-poly model that you’ve sculpted and create a low-poly model over it (this way you won’t make any accidental inaccuracies!) by creating a completely new mesh. Once I was done with Quad-Draw, the sheep model had gone from a few million polygons (the high-poly) to just under a few thousand (the low-poly). Which is quite the difference and will help save our game’s performance.
Now that the low-poly for the sheep had been created, the next viable step was to begin rigging in Maya. Rigging refers to the process of creating the bone structure of a 3D model. This bone structure is used to manipulate the 3D model like a puppet for animation. I started by inserting some joints into the low-poly model (like where the sheep’s joints would be on an actual skeleton), and once those were inserted I was able to convert them into IK Handles. IK Handles connect the created joints into a moveable object that I can use to animate. And to make things really smooth for the leg IK Handles, I went into Maya’s Node Editor to create some code. This code’s purpose is to regulate how far the legs can bend and stretch, so nothing too wacky happens when they move.
Once that was done, I added skin weights to the model. This ensures that the sheep’s body will move in accordance with the correct joint (you don’t want three legs moving around when only one should!). This process had to cover the entire body, making sure that not a single polygon was out of place. It’s very tedious and time-consuming work.
The next step after that was to create animation controllers. This is done by inserting an object called a NURB into the model’s skeleton and parenting a joint to the controller. With these created it makes animating much smoother and easier to control, with a NURB you can set an original point (or a return point) so your animations will snap back to a predetermined position. I placed these NURBS on essential places like the legs, head, tail, ears, spine, mouth, and one that controls the position of the entire body.
A functioning skeleton has been made. With that out of the way, now I could get to the fun stuff: animating! Utilizing the controllers that I’d made, I was able to move each limb of the sheep’s body into whatever position I needed. And by doing this I could create keyframes. A sequence of keyframes defines which movement the viewer will see. I animated our sheep at sixty frames per second. Here is an example of the ram’s “charge” animation, which is a looped 20 frame animation.
As a final touch, I added textures to our sheep. Textures are what give the model color in-game. In order to do this, before I started rigging, I had to carefully organize the sheep’s UV’s. A UV map is the flat representation of the surface of a 3D model, used to easily wrap textures. It’s essential to do this BEFORE animating your character, otherwise the textures will not fit correctly when you apply them.
With the UV’s all sorted I could start coloring the model. Using a program called Substance Painter, I was able to go in and manually paint each UV and apply proper textures. And once that was finished, I was able to bake the high-poly model (the one from WAY BACK at the beginning!) onto the low-poly, so that it would appear High Definition in-game without using too much memory space.
Putting it all together
And finally, at long last! We have our cute little sheep. 🙂
— Lex Klusman
Thanks for reading through our developer blog posts! Be sure to check back in the coming weeks for even more content from the awesome people working on this game!