Hero Image

Blobby Ring Generator

## Introduction When I first saw voxel art tutorials online, I loved the chunky aesthetic—but hated how clunky exporting to 3D always felt. The Blobby Ring Generator is my answer: an interactive web app that lets creators freely "paint" voxels and instantly get a smooth, exportable ring mesh. I built it for digital artists and makers who want rapid prototyping without wrestling with low-level mesh code.

The most innovative aspect? Seamlessly transforming a 2D grid of voxels into a high-resolution, smooth 3D ring—ready for visualization or 3D printing. ## Project Overview The Blobby Ring Generator enables users to design custom 3D rings through a grid-based voxel approach, converting these voxels into smooth 3D models using the Marching Cubes algorithm. Leveraging Three.js for 3D rendering and HTML5 Canvas for user interaction, the app provides a seamless platform for manipulating a 2D grid, visualizing designs in real-time, and preparing models for 3D printing.
Blobby Ring Generator hero image
Brush in action: painting voxels and generating a ring
## Feature Reflection: Voxel Grid to Marching Cubes Conversion Recount:
A pivotal feature is the interactive voxel grid. Users toggle voxels on a 2D grid, representing different ring layers. These states are processed with the Marching Cubes algorithm to generate a smooth 3D mesh. The transition from grid to mesh aggregates voxel data and extracts a continuous surface—yielding a visually appealing, manufacturable ring.

React:
Watching discrete voxels transform into a fluid 3D model was deeply satisfying. The smoothness and precision of the resulting meshes exceeded my expectations, providing a professional finish and elevating the user experience. This feature not only demonstrated technical competence but also made the creative process genuinely fun.

Analyze:
Success hinged on mapping the 2D grid to 3D space, tuning Marching Cubes parameters (resolution, isoLevel), and managing memory efficiently. Using Three.js for rendering and keeping code modular made debugging and enhancements much easier.

Improve:
Future iterations could add advanced drawing tools (variable brush sizes/shapes), real-time mesh updates, and performance optimizations (Web Workers, alternative algorithms) for even more detailed designs. ## Feature Reflection: Export Functionality for 3D Printing Recount:
Another highlight is export functionality: users can download their rings as OBJ or GLTF files, ready for 3D printing. This required careful mesh data handling to preserve design detail and integrity. Export buttons in the UI make it easy to take digital creations into the physical world.

React:
Seeing users print their own rings was incredibly rewarding. This feature bridges digital creativity and tangible production, empowering users to bring their unique designs to life.

Analyze:
The key was accurate translation of Three.js mesh data into standard file formats, ensuring topology and detail were preserved. Supporting multiple formats (OBJ, GLTF) broadened compatibility and user reach.

Improve:
Expanding export options, adding validation checks, and offering export customization (resolution, compression) would further enhance this feature. Tutorials on preparing/printing files could also help users succeed. ## Key Learnings - Mastered Three.js's Marching Cubes nuances (resolution vs. isoLevel) - Learned to balance instant feedback with CPU/GPU constraints - Improved UI state management for async mesh rebuilds - Gained experience in user-centric design and 3D printing workflows ## Metrics & Impact
Performance: 16³ = 60 FPS, 32³ = 30 FPS (on my laptop)
Usage: Over 200 rings generated in the first week · GitHub ⭐ 45
Launch the Live Generator →
## Conclusion The Blobby Ring Generator empowers users to create, visualize, and export custom ring designs with precision and ease. Reflecting on the project, I'm proud of how it blends user interaction with advanced 3D rendering to deliver both functionality and delight. I'd love to hear your feedback or see the rings you create—try it live and drop me a line on GitHub!

← Back to all projects