Skip to content

nimadez/voxel-builder

Repository files navigation

Voxel Builder

banner

Voxel-based 3D modeling application
https://nimadez.github.io/voxel-builder/

Version 4.2.9 Beta
Changelog

Installation
Documentation
Known Issues
FAQ

Features

File I/O

  • Save and load JSON ?
  • Import MagicaVoxel VOX
  • Export to GLB, GLTF, OBJ, STL ?

Voxelization

  • BVH voxelization method
  • 3D model voxelizer ?
  • Image voxelizer

Model and Paint

  • Generators (terrain, cube, sphere, isometric...)
  • Interactive modeling toolsets ?
  • Symmetric drawing and painting

Rendering

  • Real-time GPU path tracing ?

Export Meshes

  • Bake voxels to mesh ?
  • Unbake mesh to voxels

Extensibility

  • ES modules ?
  • WebSocket client ?
  • User startup project

More

  • Extras ?
  • Minimum dependency, portable, online and offline
  • Ad-free, no trackers, no logging

Installation

Install Electron for linux or windows

electron-v*-linux-x64.zip
electron-v*-win32-x64.zip

Get and run Voxel Builder

git clone https://github.com/nimadez/voxel-builder.git
cd voxel-builder
electron .

Update to the latest version

cd voxel-builder
python3 update.py

Supported Browsers

  • Electron (recommended)
  • Google Chrome for desktop
  • Google Chrome for mobile devices
  • PWA A2HS-ready (add to home screen)
  • Touch pen or Wacom tablet recommended for best experience
  • Voxel Builder is made for desktop and mobile, but its features have not been fully tested on mobile devices.

Known Issues

Higher than 512K is not recommended

Electron is recommended for working with a large number of voxels

Higher values can have the following problems:
- Unable to quick-save baked meshes (DOMException: exceeded the quota)
- Intolerable delay when starting the real-time renderer
- Chrome tab may freeze or crash

Of course, the number of voxels is unlimited,
I have rendered up to 1 million voxels at 25 FPS.

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.

Visual artifacts and moire patterns

These are related to thin-instances and currently nothing special can be done.

FAQ

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

History

↑ Voxel engine updated to thin-instances
↑ Cut half precision (new scene)
↑ Real-time GPU path tracing
↑ Introducing ES modules
↑ Stable beta release
↑ Advancing to the next level (bakery)
↑ Major code rewrite (functions to classes)
↑ Features and uix overhaul
↑ New SPS particles to build the world
↑ I wrote a playground for learning Babylon.js

screenshot

Version 3.0.0 (BJS 4) to 4.2.2 (BJS 6)
screenshot

License

Code released under the MIT license.

Credits