Interactive Bubble Wand
Simulate bubble wand with a bunch of bubbles and marching feature based on JavaScript
Time: 2024
Tool: P5. js
Key Feature
Research and Preparation
After exploring several visualization libraries, I selected p5.marchingSquares for its ability to create fluid, organic shapes. Understanding this algorithm required significant research:
- Studied Jamie Wong's blog on "Metaballs and Marching Squares" to understand the mathematical concepts
- Modified outdated library code to work in modern environments
- Learned techniques for calculating Euclidean distance to create bubble interaction effects
Key technical challenges included updating reference paths in HTML files, configuring thresholds correctly, and managing dynamic arrays for bubble creation and removal.
Design Process
01 /Initial Concept & Sketching
02 /Prototyping
03 /User Testing
Initial Concept & Sketching
- Started with three potential directions before selecting the bubble simulation
- Created initial sketches for user interaction and visual elements
Prototyping
- First prototype: Basic implementation with moving bubbles
- Second prototype: Added bubble wand,interactive functions, and refined collision detection
- Final version: Optimized performance,added sound effects, and improved visual design
User Testing
- Conducted tests with three users of different backgrounds
- Gathered feedback on interaction, visual appeal, and usability
- Implemented improvements based on user suggestions, such as adjusting canvas size and bubble limits.
Future Plans
Based on development experience and user feedback, future enhancements could include:
- More vibrant color scheme with customization options
- Additional visual effects during bubble interactions
- Game-like elements (objectives, scoring,levels)
- Performance optimization for handling more bubbles simultaneously
- Alternative applications like terrain visualization or fluid simulation
This project demonstrates my skills in creative coding, interactive design, and iterative development based on user feedback.