A downloadable tool for Windows and Linux

Download NowName your own price


FlatPixel is a tool for generating diffuse and normal spritesheets from 3d

models.

Features:

  •  Easily create spritesheets from animated 3d models
  • Export normal maps for use with 2d lighting solutions
  • Custom palettes allow for easy styling of assets
  • Many camera and render options


A diffuse texture is created from the colors on your model...


...and normals are created from the mesh info! Works great with 2d lights!


With loads of camera options, you can even create first-person sprites!


Render stills with any palette you'd like! Perfect for UI icons or other graphic elements.



Changelog:

v1.1:

- New turntable mode makes it easy to export sprites from several angles at once!
 

StatusIn development
CategoryTool
PlatformsWindows, Linux
Rating
Rated 4.8 out of 5 stars
(4 total ratings)
AuthorTripleSeven
Made withGodot
TagsAnimation, Pixel Art, Sprites, Textures, tool, User Interface (UI)
Average sessionAbout a half-hour

Download

Download NowName your own price

Click download now to get access to the following files:

FlatPixel.exe 93 MB
FlatPixel.x86_64 66 MB
readme.pdf 123 kB

Development log

Comments

Log in with itch.io to leave a comment.

Hey! I love this tool. The turntable feature is awesome and I'm attempting to make use of it for a tower-defense thing I haven't yet really thought out.

While working on that, I set up a neat little script that automates importing these animations into godot using the .json Super super super handy to have that! If this project goes well I might think about making that a standalone addon for godot. It'd... probably need some quality of life changes to really be usable in any arbitrary project though.

Here's some feature requests if you're interested:

  1. Some way of denoting loops in the json might be nice? Right now I'm using animation names to work that out, ending them in "-loop" and checking it on import. This is similar to how blender imports work in godot which is fine.
  2. Arbitrary rotations for the turntable mode. If I were to want to make an isometric game, I imagine I'd want slightly different angles for the 4/8 rotations. Or, if I were making a hexagonal top down game, even weirder angles than that. Maybe some combo of rotation_count and rotation_offset, or even more flexible, just a straight array list of rotations to use (with presets for the most common).
  3. Option to disable diffuse_path/normal_path in json output, or make them relative. This one's more for working with a team, as other members probably won't have my exact file system to use that file path, and I may not want to share my system username or something weird like that.
  4. Per-animation FPS. This is admittedly fancy, but some animations require more frames than others and having a universal frame rate can make things feel a bit weird. Running vs idle for example. 
  5. Culling duplicate frames. This requires per-frame fps data, so very tricky and a massive ask. If I were to make an animation that holds several frames (via like, no interpolation of frames in blender), this will create duplicate frames in the animation. sometimes those frames are like, just a few pixels off though so I imagine this might be a tricky problem to solve. Doing it manually kind of messes up the importing, so I've opted to just... not do this, but I think it would really open up the use cases a ton.

Aside from that, an oddity I've noticed that might just be my own lack of understanding on how animations work and all that: An animation that moves the root bone can cause animations that play after it be offset by the root motion. I think this is because the transforms aren't reset between animations, and that might be intended, but it can cause some funky behavior. It seems to require keyframing everything at the beginning of animations to really resolve that, and that might be a good idea anyway, I'm unsure what the standard is for that kind of thing but I'm new to it so

(+1)

Hey mate, glad you're getting use out of the tool and appreciate the comment. I'd love to see what you've cooked up using it.

Regarding your point about the animations - yes it's likely your root motion is causing the animation rig to shift in world space. In order to capture the frames I'm actually manually stepping the animation and capturing the render result really fast (you can sometimes see it pop up when rendering). I'd recommend avoiding root motion entirely because the camera itself won't track the object, leading to potential challenges when trying to fit all of your frames within the render space.

You can probably tell by the UI but this is built in Godot itself. I'm a big fan of the engine and seeing a plugin to automatically load the outputs of FlatPixel into it would be great :)

Your feature requests are very helpful! Especially the point about arbitrary turntable mode settings - I had been struggling to find a way to set that up that was intuitive. Maybe just an integer slider with the "number of angles" would be enough...

(+1)

Really neat tool, I could most likely use it for my project. I have an issue though and if it's not possible I entirely understand. But is there a way to import a model without it having a UV map and it not being completely white? I currently create my model and then split individual elements up, before using materials and shaders to give them a cell shaded look. Hence not having to paint UV maps myself at all. But because of that I can't bake the texture to the gltf file.

Thanks in advance!

(+1)

Hi, thanks for giving my tool a try! If you're using single-color materials (i.e. no texture, just a flat color, and applied to the faces) then this should work (I use blender to make my models, and I have had no problem with this).

However, I don't think this would support vertex colors, sorry! Also, custom shaders aren't supported. I set my colors on the default blender material and these import correctly. If your custom cel-shader has a different format for the colors then I don't know if FlatPixel will be able to pick that up.

(+1)

Thanks for the quick reply!
I'm just gonna throw a picture showing my node setup for the material, that might explain the set up better than I ever could.



Based on this, is it possible to still use FlatPixel? Understandable if not but it would be a shame, it's a really neat program! :)

(+1)

Ah yeah, unfortunately those shaders don't translate well outside of Blender. I'm afraid those won't work in FlatPixel :(

But if you build a simple gradient texture and map the UVs, that would work no problem! Best of luck!

You might be able to bake fake lighting into a texture, which could be used. Though.... if you use the normal lighting system offered with this tool, it might be simpler to just make things a solid color, and use a lighting shader to ensure you have that toon shaded lighting while in-game. I could totally help with that, shading's fun!

(1 edit) (+1)

Looks neat. Does this support automatically generating multi-view 8-sprites? Like from Doom? Or does one need to render, rotate, and re-render?

Currently, you have to render, rotate, then re-render. I have a "turntable mode" in the works though, which will allow 4 and 8 multi-view exports!

(+1)

This tool is amazing! <3 

First!