Building 2d sprites from 3d models using Blender

In this post I want to share the process used to create the ship sprite sheet of Super Flying Thing (STF from now on). I will assume you have a basic experience with Blender or software alike.

Model and texture

The first step will be to get or create a model you want for the sprite sheet. In my case, the ship was created from zero, following this excellent tutorial (a bit boring to watch, but great content). Of course, as I am not an artist and I only dedicated three hours, my model sucks a bit compared to the one of the tutorial.

Set the camera

Now that you have a model, you will have to configure the camera for the Blender rendering process. The idea is to put it pointing to the model, and bring it closer to the model until you get it in the camera view port. The next image shows an example:

In the case of SFT, I configured the view port to be 64x64.

Create the animation

Now, you have to create the animation you want to render. For SFT, I wanted to create the animation of ship rotating 360 degrees. As the speed of the ship is approx 300 degrees per second, and I was using a 30FPS animation, then I wanted to have the matching frames for the complete rotation animation, in this case, 36 frames. So I created one key frame for 0 degrees, 90, 180, 270 and 360 degrees. The last one is only used to complete the interpolation and is not included in the final animation.

ship animation key frames

Be sure to configure the animation to use a linear interpolation to match the frame with the ship's angle, unless you want otherwise. To do that, open the Graph Editor, and from Key menu modify Interpolation Mode to Linear.

Finally, export the animation using Render animation from blender, it will create each frame of the animation in your temp folder. Be aware you will get a better result using an Anti-Aliasing algorithm, for example, Catmull-Rom, thanks void256 for the tip.

Here is the difference:

The left image is not using anti aliasing at all, the right one is using Catmull-Rom with 16 samples per pixel.

And here is the animation:

The process is tools independent, so you could use, for example, 3D Studio if you want. You only need a good artist, as we do.

As always, hope you like the post and it could be of help.

VN:F [1.9.22_1171]
Rating: 5.0/5 (14 votes cast)
Building 2d sprites from 3d models using Blender, 5.0 out of 5 based on 14 ratings
  • Anonymous

    really nice! Do you think is possible to use same tecnique for a diablo-clone (aka isometric rpg ?)

  • arielsan

    Of course, you can even generate animated stuff using skeletons, for example, a guy slashing with a sword, then render it in 360 degrees for each slash animation.

  • Tomás Lázaro

    Diablo 2 did use 3d models to make the player and monsters animations but they have hundreds and hundreds of images composed in real time to make the animations work. It's really complex and requires extra work. This tutorial is awesome and will definitely bring us closer to achieving the the Diablo looks.

    The complex part is that you have 16 rotated views per animation frame. Then each character has 2 legs, 2 arms, 2 hands, head and torso separate images per frame. Each of those might have a different style based on armor and weapon equipped independently. Then you must also adjust the layers order per frame per view as some times the left arm should be on top the torso and right arm and vice versa. Then you must make different version of some animations depending on the equipped weapon like running, jumping, casting and attacking at least, think single handed weapons, dual-wielding, bows and staffs and lances. And then you must do that for each character... and don't forget to add real-time tinting to certain parts of weapons and armor to add more variety.

    Most of the process can be definitely automated, from 3d you only have to make each animation with each complete body armor type and weapon. Then it's just about making a good script that generates all that stuff and implementing the usage inside the game.

    Would it be possible to export different parts of the model in the animations separately? Can you export hands and torso to 2d to different files?

  • arielsan

    I believe it is possible, Blender lets you work using different layers, so you can render only the layer you want, but as I never used it I am not 100% sure. One thing I am sure is Blender lets you write your own scripts using python, as Gimp does, so you could create your customized logic for that case.

  • Anonymous

    thanks 😀 It's seems really more complex then I ever imaginated! Maybe should try to reinstall diablo 1 or 2 and take care of this particulars

  • Pingback: Building 2d animations using Inkscape and Synfig « Gemserk()

  • nice post!
    I just would like to emit a remark on antialiasing: if you wish to have a transparent background sprite, sou would be better to deactivate antialising and reduce the size of the image (by 2 or 4 for example): this way you will not have any artifact of the blender background around the border of the sprite.
    Actualy, render an image and reducing the size is the better antialising (also the less performant...)

    See you!

  • arielsan

     Thanks for the advice!