A downloadable Aseprite script

Download NowName your own price

Important: Since aseSlab has made enough money now to cover for the price of Aseprite — a sincerely bloated, broken, and incompetent piece of software as it still is — I feel free now to release the project as pay-what-you-want AND as Unlicense/CC0, that is, the code now is in the public domain, and everyone is free to use it, reuse it, improve it, and share it. Maybe if the Aseprite devs stop making stupid plushies, and sit down and actually add features that people obviously want (this was a hit beyond even my expectation), this script could be one of them. Otherwise, thank you to to everyone who purchased it. Fuck Aseprite. Peace.

P.S. You can still donate if you want, but only do so if you can.

aseSlab is a voxel suite for Aseprite that allows you to live preview your pixel art as a 3D voxel model for easy creation of voxel art right from the program itself, with multiple useful features such as:

  • Custom voxel shape, size, and borders
  • Two projection modes: orthographic and perspective.
  • Full 3D rotation, with mouse support
  • Depth map rendering
  • ... and more!

Also included with the suite are sample projects to use as the basis for your own voxel models; examples for both live animation previewing and multi-layered rendering; and also, as a bonus, a Python script for converting Aseprite exports from .png to .vox (using Ken Silverman's Slabspri/Slab6 voxel standard).

Source code available on GitHub

What It Does:

  • aseSlab will display the currently selected sprite in full 3D as a series of floating squares or "voxels", with multiple settings to choose from, to control the preview and test the resulting voxel model.
  • The preview can also be rendered to sprite at any time, mostly preserving the preview's settings, on a transparent background and with the original sprite's palette.

How to use it:

  • Open the script from the File > Scripts menu. This will bring the dialog up with a preview of the sprite in 3D. You can move the preview around using the left mouse button if needed.
  • Select "Render all layers" if the Aseprite project has been set-up with multiple layers in mind. This means that multiple 3D elements can be drawn separately and on top of each other, which will then be converted to flat slices in the live render.
  • In the "Sprite settings" tab, select "Set the current sprite as the render target" if it isn't selected already by default. You can also use the grid settings or current selection to define the model's width and height.
  • You may also want to adjust the tile size and the amount of tiles per column and row. The voxel model will be rendered by drawing each tile from back to front, going left to right and top to bottom, with the last frame in the grid representing the front of the model.
  • In "Voxel settings", you can tweak the size, padding and roundness of the squares that make up the voxel model. These settings will also affect the "Render to Sprite" export.
  • In "Camera settings", you can change the projection type, distance, and rotation, to test how the model will look from different angles. This can also be controlled with the right and middle mouse buttons.
  • In "Render settings", you can toggle whether to draw borders around the voxels; whether to use the currently selected brush background color as the image background; to hide inner voxels in unoptimized models for faster render times; and to display the voxels as a depth map by displaying their distance to the camera as different shades of gray.
  • In "Manual Input" you can set the values of multiple options that are otherwise only controllable using sliders, such as the camera rotation and voxel size.
  • And finally, you can refresh the preview if it hasn't updated automatically; hide or show the settings for full screen preview; reset the view, which is useful for when the model moves outside the preview; reset the rotation with one click; render the current preview to sprite; get information about the current render (amount of voxels, and render time); and finally, exit the dialog.

Other useful stuff:

  • We have bundled in the "examples" subfolder three Aseprite projects showcasing features such as live animation previewing, multi-layer rendering, and a stress test for how the script will behave when the amount of voxels is in the five digits.
  • We have also bundled in the "samples" subfolder another three Aseprite projects for models such as a sphere, cube and pyramid, to use as the basis for your own voxel creations.
  • Finally, in the "extra" subfolder, we have included a Python script that can export to a .vox file, compatible with voxel art software such as MagicaVoxel and Slab6. For more information, read png2vox.txt. Be aware that the script requires Python 3.10 or newer installed on your system.

Important:

  • For models that aren't optimized, i.e. they contain pixel data that will not be visible on the 3D render, it's very much encouraged for "hide inner voxels" to be turned on. However, the opposite is also true: The script may take more time trying to cull the voxels than actually rendering them when the model is already optimized, in which case it's better to turn the setting off.
  • The rendering has been optimized to the limit of what a single Lua script can do within the constraints of the Aseprite API. However, do know that the graphics environment in which the preview is rendered is severely lacking in optimization, and that this accounts for most of the slow down when the voxel count reaches five digits.
  • There are multiple bugs described in the script itself, which are outside of the script's control due to being the result of the Aseprite API, and also the underlying code of the Aseprite application itself. None of them should break the script's functionality, but do check out the provided help pop-ups in the program to learn more about these bugs and how to work with them. As soon as I find a solution around them, they will be implemented and available online for paying users.
  • Finally, do understand that the goal of this script is to serve as a live preview for drawing voxels in Aseprite, and that any further features, such as more advanced rendering of voxels, exporting to popular voxel formats, and elaborate voxel art animations such as turntable rotations, should be made with more appropriate software, such as the aforementioned MagicaVoxel, Qubicle, Blender, etc.

Setup:

  • In Aseprite, go to File > Scripts > Open Scripts Folder. This should open an Explorer window at <Aseprite program folder>/scripts.
  • Copy the file aseSlab.lua to this folder and in File > Scripts select Rescan Scripts Folder.
  • The script should now be available for use.

In case of a bug, or any other kind of unintentional behavior, feel free to contact me at kidmarscat [at] gmail [dot] com or leave a comment on the aseSlab download page, kidmarscat.itch.io/aseslab

On a final note...

I've only ever released my scripts for free online, but this project took me the better part of a month, taking time away from more lucrative endeavors I could have done instead. And I could have kept it as an internal tool like some other scripts I've developed, except I'm hoping that, by releasing the project online, it may result in Aseprite itself implementing these features out-of-the-box for all users, or perhaps even helping to directly interface between Aseprite and any of the popular voxel programs available today. Disregard that lol lmao.

Developing scripts for Aseprite has mostly been a thankless effort, especially due to the total lack of support from the Aseprite developers in maintaining the API and fixing bugs that affect all script developers. In an ideal world, these kind of features would be available already — the existence of this script proves how easy it would be to implement them, if anyone gave a crap.

Until this happens, I'm choosing to release this as a paid download, to get something back for all the time and effort invested on a project like this, 1000+ lines of code and all. If you choose to buy it, feel free to share it around with friends, but please don't let it go any further than that, if you can. It's free now lol fuck all.

Do know that, in the end, it's less about the money than it is about making a point, with the hopes that one day this project is made obsolete by Aseprite itself. Edit: And I made my point fuck you David Capello you hack lmao.

ChangeLog

Date Version What changed
2024-09 0.1 First release, including every essential feature considered for the project.

Download

Download NowName your own price

Click download now to get access to the following files:

aseSlab_0_1unl.zip 26 kB

Development log

Comments

Log in with itch.io to leave a comment.

"a sincerely bloated, broken, and incompetent piece of software"

spoken like someone who has never used aseprite

Used it enough to report bugs then wait a long time for the devs to do nothing until some random user fixed it for them. How's the palette cycling feature going btw? Does the API still expose a palette array that is used by no feature in the program after almost a decade? Does the workspace layout allow for more than moving the same four panels left or right? Does selecting tiles and a palette range allow for doing anything at all yet, without user scripts? Is the brush system still a broken disjointed mess compared to Photoshop from 15 years ago? Does Aseprite have any of the basic features Deluxe Paint had 20 years ago? What about Multi Paint System for the PC98? How far would you go to defend a 20 dollar purchase?

(1 edit)

yeah i guess palette cycling would be a neat feature but ive managed to get 20 dollars worth of value out of this program without it.


its also pretty hypocritical to get weirdly angry about missing features on the itch page for a voxel script thats missing an unfathomable amount of features compared to a dedicated program like magicavoxel. i think its a neat little script, but by your own logic you should be pretty pissed at yourself.

i think youd enjoy art a lot more if you focused on actually painting instead of what wood your easel is made of, but if youd rather grit your teeth and seethe, i guess thats your decision to make. just know youre well in the minority.


(2 edits)

I made thousands of dollars using Aseprite, but also using mspaint.exe from WinXP, and I ain't giving credit for my artistic prowess to either, and neither should you. Now imagine how much "value" you would've kept if you had just downloaded LibreSprite instead. I got Aseprite free, so this was never my problem. But you'd hope the "Overwhelmingly Positive" userbase would expect more than a handful updates a year, missing/abandoned features, and an atrocious, barely documented API. But if you're happy working like that, that's your prerogative.

As for aseSlab, I made it exactly to avoid MagicaVoxel's clunkiness and closed-source limitations. Most of the "features" in MV are irrelevant to my project, which is just a live voxel previs, all I said it would be. I think being able to export a PNG that can be read with any program (including MV) is better than dealing with proprietary formats, or time-wasting importing/exporting workflows built around ancient 3D model formats. But again, if you think MagicaVoxel is good enough for you, that's your prerogative as well. Me, I wanted something else, so I developed something else myself.

If anything, I'm only "pissed" at Aseprite's GraphicsContext for lacking GPU acceleration, which hurt my script's performance and forced me to find every optimization to make it work AROUND Aseprite's limitations. Now that my script is officially Unlicensed, it's no longer my problem, but voxel visualization, and any other advanced non-2D rendering for Aseprite, will not improve or perhaps even happen unless they fix/improve this issue, and many other issues, starting with the API and its documentation. You may not care, but I do, and I think the Aseprite userbase should care too, if they want Aseprite to do anything but be a basic pixel art editor stuck in the 2010s.

But of course, you're lucky to not have anything to complain about to the Aseprite developers (so far). Instead, you're complaining to me, in the comment section of a script you probably don't even use. I hope they send you a marketable plushie for defending the commercial product otherwise all that "value" is going out the window for you.

Edit: I've had my fun, but the user has been banned to protect the thread from spam, angry rants and personal attacks; but also to protect the user from themselves. I've trimmed the thread to the original four replies, as I hope they contained the only remotely valid discussion on the matter, off-topic as it was from the beginning. Better to end it cleanly for everyone's sake.

Deleted 21 hours ago
Deleted 21 hours ago