8-ball pool 3D visualizer

8-ball pool 3D visualizer

15 devlogs
150h 51m
•  Ship certified
Created by bovizdb

This software creates a 3D scene of an 8-ball pool table using a camera installed above it. It also shows path prediction based on the the position of the balls and cue.

Timeline

Earned sticker

Extended path calculations so that it can be used for rail-first shots.

Update attachment

Spent most of the time with testing, improved accuracy and latency.

Update attachment

Made calibration process more simple and interactive, added some features, such as camera calibration for fisheye lenses.

Update attachment

Many little improvements, debugging and code simplifications.

Update attachment

Enhanced color filtering by using statistical analysis.

Update attachment

Created calibration process to easily adjust ball colors and crop playing area.

Update attachment

Finally managed to render it in real-time. Instead of SymPy, now it uses SciPy, which means it does not solve the equations symbolically, but reather approximates the solutions numerically. The JavaScript code was optimized as well so that it does not render the entire scene every time.

Update attachment

Realized that it is even slower when trying to update the Three.js scene in real-time, more efficient solutions are needed.

Been working hard to make it real-time. Introduced many optimizations (reduce frame size, calculate difference between frames, ...), but it is still not fast enough.

Update attachment

Ship 1

1 payout of shell 765.0 shells

bovizdb

about 1 month ago

bovizdb Covers 6 devlogs and 51h 59m

Improved calculations, displayed path in 3D, set up GitHub demo page.

Update attachment

Detected cue, made basic path calculations using SymPy.

Update attachment

Successfully identified each ball using color filters, added them to the 3D scene.

Update attachment

Managed to detect position and type of balls using OpenCV.

Update attachment

Set up camera, arranged image manipulations using python OpenCV, such as fisheye correction, cropping and masking.

Update attachment

Created 3D objets in blender, set up three.js, generated random scene and adjusted lights and camera controls.