Voxel-based 3D Modeling Application
Model . Render . Export
https://nimadez.github.io/voxel-builder/
Changelog
Installation
Known Issues
FAQ
Bug Report
File I/O
- Save and load JSON
- Import MagicaVoxel VOX
- Export to GLB, GLTF, OBJ, STL
- Local storages, snapshots, quicksave, undo
Model and Paint
- High performance voxel engine
- Generators (terrain, cube, sphere, isometric...)
- Interactive modeling toolsets
- Symmetric drawing and painting
- Color groups and voxel transforms
Rendering
- Three.js sandbox
- Three.js GPU path tracer
- Basic PBR rendering
Voxelization
- Fast BVH voxelization
- 3D model voxelizer
- Image voxelizer
Export Meshes
- Bake voxels to editable meshes
- Bake voxels by color groups
- Unbake exported GLB back to voxels
- glTF compatible editor
Extensibility
- ES modules
- WebSockets client
- 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, no loading screens
Install Electron (recommended)
electron-v*-linux-x64.zip
electron-v*-win32-x64.zip
Clone
git clone https://github.com/nimadez/voxel-builder
cd voxel-builder
Run
# Start with Electron:
electron .
# Start with Node.js:
node server.js
Update
cd voxel-builder
python3 update.py
- Electron (recommended)
- Google Chrome
- Mozilla Firefox
- PWA A2HS-ready (add to home screen)
- For the best experience, a tablet with pen or Wacom is recommended
Higher than 512K is not recommended
Electron is recommended for working with a large number of voxels
Higher values can have the following problems:
- Intolerable delay when starting the renderer
- Chrome tab may freeze or crash
Of course, the number of voxels is unlimited,
I have rendered up to 1 million voxels.
Failed to import GLB meshes for voxelization
Multiple meshes need to have the same properties or they won't merge,
the only solution is to merge meshes before exporting to GLB.
Wacom tablet crashes randomly and throws warning on Linux (GNOME)
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.
Error: Exceeded the quota
Browser storage is limited, use Electron for much higher capacity.
How to merge vertices after export to GLB?
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
How to run Blender importer script?
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
How to go back to the previous version?
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
↑ Unsafe WebGPU support
↑ 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 MIT license.
- Babylon.js
- Three.js
- Three-mesh-bvh
- Three-gpu-pathtracer
- Electron
- MagicaVoxel
- Google Material Icons
- Blender
- Sketchfab
- KhronosGroup
- Shadertoy
- vengi
- Allen Hastings
- David Catuhe
- Erich Loftis
- Eric Heitz
- Evan Wallace
- Garrett Johnson
- Inigo Quilez
- knightcrawler25
- Mr.doob