This addon aims to help you create 2D sprite sheets from 3D models inside Blender 3D.
With this addon you get two new panels.
One in Render Settings -> Render Strips: will let you render out animations from multiple cameras.
You can simple render out to Output location (Render Settings -> Output) or/and create single or multiple sprite sheets.
The other, in Image Viewer -> Toolshelf -> Get Sheet Done will let you load images and combine them into spritesheet.
You can slice images (to individual, smaller images or to spritesheets), reorganize rows and columns, as well as removing individual sprites or appending more sprites to existing sheets.
Generated spritesheet is grid-based. It means it is organized in columns and rows and each tile (sprite) has same size as first loaded image, which becomes a reference for spritesheet's sprites.
If you want to combine images of different sizes, you can simply check Scale to first toggle, which will automatically scale loaded images to the reference size. Keep in mind though - all sprites will have same size ratio.
After loading files you can change column and row count. Spritesheet will automatically place all sprites in correct positions - from top left to bottom right. If you decide to reverse sprite order you can do that wih Flip order button. Initially sprites are ordered according to the loading order (internal Blender's file browser order) and then by appending images (Add more images button).
If you view other images you can quicly bring back spritesheet to front with Show spritesheet button.
If you decide to scale image after you load and place all sprites, you can do that from Extended options. Tile size there refers to reference sprite size in pixels. This is destructive operation (scaling to lower and back to higher resolution will result in quality loss), so it is advised to scale images just once before saving out to a file. You can however reset all scaling with Reload and update button, which reloads all sprites to original (reference) size.
After all files are loaded, placed and combined - hit F3 to save your spritesheet to file (or access Image -> Save file from bottom menu).
For more information please check FAQ section.
Do I need to install additional software?
All you need is Blender and this addon.
It uses only Blender's native functions for image processing.
What image types can I use?
Anything Blender can handle - another advantage of using Blender's native functionality.
If you can load an image to Blender - you can make a spritesheet out of it.
Can I use Blender internal/Cycles/other renderer?
You can - anything that produces rendered image inside Blender can be used to render animation directly to spritesheet.
In any other case you can still use image files to create a spritesheet.
What image type spritesheet is?
Whatever you save it to be - spritesheet is a native Blender image, just hit F3, pick your format and save.
Ok, it's cross platform right?
Exactly, there are many advantages of this approach:
- No additional software,
- Any image type Blender can handle (including those that might be introduced in future),
- Cross platform,
- Rendering animation directly to spritesheet,
And all that within familiar environment of Blender's Image Viewer.
There is one result of this approach that might be undesirable:
- All images must be loaded to Blender. It means they will be loaded as datablocks and accessible from within the Image Viewer. They are treated as an "empty users" - they won't be saved with the .blend file (unless of course you mark them to be saved as "fake users" or actually use them somewhere).
How is spritesheet organized?
Spritesheet is grid-based (columns by rows) with constant tile size per sprite. It means that if you have for example four images of size 64x64, spritesheet will calculate its size to fit all of them in the best manner - in this case it would take shape of size 2x2 sprites (128x128 pixel size). Of course this is just starting point - you can change the number of columns and rows, append more images etc.
How is tile size calculated?
Tile size will be calculated from first loaded image, which is treated as a reference for all pending images - if other images fit the size of reference image, they will be loaded, if not - see next question.
What if I want to load images of diffrent sizes to one spritesheet?
There is an option to resize images on load to fit the reference image (first loaded image). Simply put: if you have reference image of size 64x64 and one or more images of different sizes - they will be resized to 64x64 to match the template and appended to spritesheet.
I appended an image to existing spritesheet, but some tiles are darker/brighter!
It might happen if you mix 8-bit/channel images with 10, 12, 16, 32-bit/channel images. This is current limitation to how Blender handles 8-bit images. There is working solution to the issue, but I decided to not include it (as a marginal case and couple downsides that come with it). It boils down to gamma curve color transformation and I'm not sure if this is a feature or a subject to future Blender API changes.
In any case - if you find your mixed sprites shifted in color - just convert images to similar bit-per-channel format before appending to the spritesheet.
I have no alpha channel in my spritesheet!
Just make sure you use render output format that has alpha channel even if you don't save any images yourself. The format you pick will be used to transport images to spritesheet.
I interrupted rendering, how can I resume without re-rendering existing frames?
Well, in any case it is advised to save render to image files even if you render out directly to spritesheet, however all frames are stored independently in Blender's temporary folder (see Blender's User Preferences -> File -> Temp). You can simply use images stored there.
So... I can finally get my sheet together?
Yes, sheet got real.