Model . Render . Export
This application is suitable for rapid prototyping, speed modeling, creating small assets in large numbers, loading and saving MagicaVoxel VOX format, or simply playing around and learning 3D modeling.
https://nimadez.github.io/voxel-builder/
Changelog
Installation
Wiki
Known Issues
FAQ
Bug Report
File I/O
- Save and load JSON
- Save and load MagicaVoxel VOX
- Export to GLB, GLTF, OBJ, STL, PLY
- Localstorage, snapshots, quicksave, undo
- Backup and share snapshots in a ZIP archive
Model and Paint
- High performance voxel engine
- Generators (terrain, cube, sphere, isometric...)
- Interactive modeling toolsets
- Symmetric drawing and painting
- Voxel transforms and manipulation
- Color groups and visibility options
Rendering
- Three.js Sandbox
- Three.js GPU path tracer
- Basic PBR rendering
- Post-process effects
Voxelization
- Fast BVH method
- Model voxelizer (GLB, OBJ, STL, PLY)
- Image voxelizer
- Text voxelizer (unicode & emoji)
Export Meshes
- Bake voxels to editable meshes
- Unbake exported GLB back to voxels
- glTF compatible editor
Extensibility
- ES modules
- User startup project
- Blender importer script
More
- Average startup time 300 ms (after the first launch)
- Unique handcrafted user-interface
- Minimum dependency, portable, online and offline
- Ad-free, no trackers, no logging
- Electron (recommended)
- Mozilla Firefox
- Google Chrome
- PWA A2HS-ready (add to home screen)
- For the best experience, a tablet with pen or Wacom is recommended
Clone or Download
git clone https://github.com/nimadez/voxel-builder
cd voxel-builder
Linux: electron-v*-linux-x64.zip
Windows: electron-v*-win32-x64.zip
For ease of use, extract the zip file into the "voxel-builder/electron" directory.
Start with Electron
electron .
$ sh run-electron.sh
> run-electron.bat
Start with Node.js
node server.js
Makes a backup of the "/user" directory, ignoring the "/electron" directory.
cd voxel-builder
python3 update.py
Electron is recommended for working with a large number of voxels.
Also, the FPS depends on many factors, such as the material (CEL is faster) and the distance between the camera and the model. Rendering a dense Thin volume at close range greatly increases GPU load.
- Use "Minimal UIX" to save battery on mobile devices.
- Do not enable "Frosted Glass UI"
- Use XFORM > "Optimize" to reduce the volume of voxels.
- Note that this app runs on a web browser and you shouldn't expect much.
If you draw and it doesn't, it means the builder is working, you are drawing faster than your hardware and browser will allow. (latency >150 ms)
Browser storage is limited, use Electron for much higher capacity.
Multiple meshes need to have the same properties or they won't merge, the only solution is to merge meshes before exporting to GLB.
We do not support geometry animations.
They are often a piece of a larger model data.
Warning: BJS - Max number of touches exceeded. Ignoring touches in excess of 2.
This problem is related to Babylon.js and nothing can be done.
There is, you can have 16,777,216 layers (groups or color groups), because the layering system in this app is determined by colors, even a change in the brightness of a color creates a new group that can contain hundreds of voxels.
So groups are automatically created, merged, or deleted based on color. You can even hide, delete, select, paint, transform, or duplicate color groups.
There are no objects, you work with a grid of voxels, the XFORM feature only mimics the transformation of 3D objects, you just grab a piece of connected voxels and move them.
Never, even if they have different colors, the system will automatically delete one.
GLB has a special use in this application, you can save and retrieve voxel data using baked meshes, exporting raw voxels to GLB leads to interference and errors when loading it using the "Load Bakes" option.
-- Save to JSON (primary, human-readable, fastest)
-- Export baked meshes to GLB (and 'Load Bakes', supports Blender and other 3D apps, slower)
-- Save snapshots to ZIP archive (easy to share, browser storage limits, speed is variable)
-- Save to VOX format (supported by many 3D apps and engines, very fast)
1- Open exported GLB file in Blender
2- Go to "Modeling" tab and choose vertex selection mode
3- Select all vertices (Ctrl + A)
4- Mesh > Clean Up > Merge by Distance
1- Save project to JSON
2- Open Blender and go to "Scripting" tab
3- Click "Open" and select "blender-importer.py"
4- Run the script and select a JSON file
git clone https://github.com/nimadez/voxel-builder
cd voxel-builder
git log -2 (copy the hash of the previous commit)
git reset --hard $HASH
↑ Advancing to the Renaissance Bubble
↑ A fundamental overhaul of the core
↑ Core initialization!
↑ Rendering was left to Three and three-gpu-pathtracer
↑ ES6 (the original index.html playground was moved)
↑ x1.5 faster startup (2s to 300ms)
↑ Migrating to Linux: Firefox ready
↑ High performance GPU picking system
↑ Voxel engine updated to thin-instances (64k to 512k)
↑ The world moved (from 0.0 to 0.5 center to avoid 0.5)
↑ Real-time GPU path tracing
↑ Introducing ES modules
↑ Advancing to the next level (bakery)
↑ Changed default handiness to right-handed coordinate
↑ New SPS particles to build the world
↑ 2019 - I wrote a playground for learning Babylon.js
Version 3.0.0 (BJS 4) to 4.2.2 (BJS 6)

Code released under the GPL-3.0 license.
- Babylon.js
- Three.js
- Three-mesh-bvh
- Three-gpu-pathtracer
- Electron
- MagicaVoxel
- Google Material Icons
- Reinvented Color Wheel
- JSZip
- Blender
- Inkscape
- GIMP
- Sketchfab
- KhronosGroup
- Shadertoy
- vengi
- Allen Hastings
- David Catuhe
- Erich Loftis
- Eric Heitz
- Evan Wallace
- Garrett Johnson
- Inigo Quilez
- knightcrawler25
- Mr.doob
