Voxelise is a 3D voxel editor that is designed to be easy and intuitive yet powerful, being the only voxel editor available with both frame-based animation and layers.
I originally conceived Voxelise as a tool to make content for Unity game projects that I was working on in my spare time. I’d tried a few existing tools such as MagicaVoxel, Qubicle and VoxelShop, but none of them had all the features that I required, or a user interface that I found to be intuitive.
I began prototyping in my spare time and within two weeks, I had a viable demo. Digimania had been looking for new a product to develop and liked the demo, so they picked it up as an in-house project with an aim to target the educational software market, complementing their existing Muvizu Education brand.
I lead every aspect of the project and managed the team, consisting of myself, another programmer, and two artists. Once an alpha version was ready, I spoke to several artists in the voxel art and game dev communities and arranged for them to provide feedback in exchange for a free licence key. The feedback was overwhelmingly positive, with a few requests for changes and improvements which were either made or added to the task backlog.
The project had several challenges, for example:
- Voxels take up a surprisingly large amount of memory. Voxelise handles models that are 128x128x128 in size, up to 32 frames of animation, and up to 8 layers, with each voxel storing 4 bytes of RGB and material information. That’s a whopping 2 gigabytes of potential voxel data! I helped to design a system for compressing this data in the background and designed a dispatcher system that allows Unity coroutines to seamlessly become threads, simplifying the synchronisation with the Unity Engine.
- Even smaller models with a single layer and frame can be a lot of information to process when it potentially changes every frame and needs to be rendered in real-time. Data structures and methods of processing and rendering the data in real-time had to developed and refined.
- The user interface is implemented Unity’s own UI system, which isn’t designed for such a complex hierarchical design. I also discovered several bugs in Unity’s controls that I worked around by either modifying Unity’s code from their open source repository, or by implementing our own versions entirely. The result is a pixel-perfect user interface that performs excellently despite being very complex.
- As a non-game application that uses files extensively, I wanted to use the operating system’s own open and save file dialogs instead of using the Unity UI. This involved creating native plugins for both Windows and macOS. The Windows version was a straightforward C++ DLL, but the macOS version required learning the Objective-C programming language, the Xcode environment and the macOS API. I also developed a plugin for Linux using C++ and GTK+, but this was never completed.
- To help synchronise releases across two platforms, I wrote a custom build process that can be triggered from within the Unity Editor. It manages the version number (including internal, alpha, beta, release candidate and release versions), builds for both Windows and macOS, signs the executable, builds the installer and finally also signs the installer executable.
On this project, I used the following technology:
- Unity 5.4, 5.5 and 5.6 using C# scripting.
- C++ and Objective-C for native plugin development.
- Xcode development environment for macOS.
- Source control was handled using BitBucket, SourceTree and Mercurial.
Voxelise was soft-launched on the official website in November 2016 to allow time for feedback and to fix any issues before the educational launch.
It was then officially launched at the BETT education trade show in London in January 2017 and was a hit with school teachers. The simplicity of the user interface and the voxel connection with Minecraft made it appealing to children, but it had enough depth and complexity to allow complex models and animations, making it an interesting tool for the classroom.
Voxelise was especially of interest to those schools who had recently obtained a 3D printer and were looking for creative ways for the children to build their own content for 3D printing.
At the time of Digimania entering administration in April 2017, a new version (v1.1.0) was close to completion. This new version was a vast improvement on the initial releases (v1.0.x), featuring:
- A fresh new look with a redesigned pixel-perfect user interface.
- Major improvements to the performance.
- New editing tools such as a move tool, a clipboard brush, etc.
- Heavily optimised rendering, taking advantage of compute shaders.
- Welcome screen, offering easy access to tutorials, recent files, examples and a news feed.
- Simplified image and animation generation.
- Much improved handling of indexed (8-bit paletted) models.
Two other features were also in development and slated for a release later in the year:
- A ray-traced renderer with the ability to change the material properties of voxels, giving them the appearance of plastic, metal or glass, or to emit light.
- A scene editor, allowing massive and complex scenes to be built from multiple models, each with their own scale and rotation.
With these features complete, Voxelise would have competed as the world’s leading voxel editor.