SlopScupper
00 crowd

project-marvin

Drag and drop files from your computer to a Bambu printer through a projected interface
Open repo on GitHub Open the demogithub.com/almostinventor/project-marvin
Python · ★ 19 · 1 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 9 hours ago by almostinventor · last checked 52 minutes ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-09-11: A projector-and-webcam rig that lets you flick a 3D model off your monitor and drop it onto a Bambu printer; "Essentially all of the code in this repo was generated by Claude.". 19 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as almostinventor. There's no account to make: SlopScupper only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
Drag and drop files from your computer to a Bambu printer through a projected interface
website
https://youtube.com/shorts/5jwRJuWsN6A
topics
3d-printingbambulabgesture-recognitionmediapipe
created
2026-08-19 · pushed 3 weeks ago · 2 commits · 1 contributor
languages
Python 100%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 9 hours ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
python
topic (detected)
3d-printingbambulabgesture-recognitionmediapipe
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: A projector-and-webcam rig that lets you flick a 3D model off your monitor and drop it onto a Bambu printer; "Essentially all of the code in this repo was generated by Claude.". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

Project Marvin

This is the project repo for this video.

Written with Claude Code. Essentially all of the code in this repo was generated by Claude.

Flick a model up out of your monitor, carry it across the wall by hand, and drop it on your 3D printer to print it.

A projector covers the desk surface between a monitor and a Bambu Lab X2D. A webcam watches your hands. Flick upward at the screen and the model on the plate leaves the monitor and arrives on the wall as a physical object — it falls, bounces, and can be pinched out of the air and carried. Drop it on the printer and a countdown starts; let it finish and the plate is sliced headlessly and sent to the printer over LAN.

The object you throw is the real geometry from the Bambu Studio plate, not a placeholder — what flies across the wall is what would come out of the printer.

Requirements

Hardware

  • A webcam that can hold 30fps. Frame rate is a hard requirement, not a nicety: the gesture detectors measure rates over short time windows, so below ~25fps they run out of samples and stop firing entirely. A dim room makes a webcam lengthen its exposure and quietly halve your frame rate — see --exposure below.
  • A projector covering the surface between monitor and printer.
  • A Bambu Lab X2D in LAN Only Mode with a USB stick inserted. Other Bambu models will need model_id and the print URL scheme changed.

Software

  • Python 3.14 (3.11+ should work; 3.14 is what this is developed against)
  • Bambu Studio, for headless slicing
  • pip install -r requirements.txt

The MediaPipe hand model is not in the repo (7.5MB blob). Download it:

curl -L -o models/hand_landmarker.task https://storage.googleapis.com/mediapipe-models/hand_landmarker/hand_landmarker/float16/1/hand_landmarker.task

Setup

Four steps, in order. Each writes a config file the next one reuses, so none can be skipped — but steps 1–3 need no printer, and step 4 needs no projector.

1. Tune flick detection

python tools/flick_test.py

A camera window that flashes when it sees an upward index flick. Tune until it fires when you mean it and never when you don't; press p to save config/flick.json. Everything downstream depends on this feeling right.

2. Calibrate camera to projector

python tools/calibrate.py --display 1

Three phases. First drag the four corners until the projected outline looks like a straight rectangle on the wall — this defines wall space and absorbs the projector's keystone. Then put a fingertip on each projected target and hold still until the ring fills, nine times. Then verify: a ring follows your hand live, and per-point residuals are printed so a fumbled capture can be spotted and redone.

Writes config/calibration.json. Only needs redoing if the projector or camera physically moves.

The camera is aimed at you and never sees the projection, so the usual project-a-pattern-and-find-it calibration is impossible. The correspondences have to come from your hand instead.

3. Place the anchors

python tools/wall.py --display 1 --set-anchors

Point-and-hold to set the computer anchor (where the monitor's top edge meets the projected area), then the printer anchor and its catch radius, then trace the route the data wire takes between them. Optionally place a signpost pointing at a second printer. Writes config/anchors.json.

Redo this if you move the monitor or printer on the desk.

4. Connect the printer

python tools/send_to_printer.py --init

Writes config/printer.example.json's fields into config/printer.json. Fill in host and serial. Do not put the access code in the file — it is gitignored, but the environment variable is better:

export BAMBU_ACCESS_CODE=xxxxxxxx

BAMBU_HOST and BAMBU_SERIAL work the same way and win over the file.

On the printer: enable LAN Only Mode. While cloud-bound, the firmware rejects every locally-issued print command at the verification layer, identically for all payload forms — so it looks like a bug in this code and is not.

Then work up the ladder, each rung doing more than the last:

python tools/send_to_printer.py --check      # config + connectivity, sends nothing
python tools/send_to_printer.py --dry-run    # slices, uploads nothing
python tools/send_to_printer.py --no-print   # slices and uploads, does not start
python tools/send_to_printer.py              # starts a physical print

Running it

python tools/wall.py --display 1

Useful flags:

flag what it does
--desk draw the wall in a window on this monitor — no projector needed
--debug camera view with live gesture readouts and loop timings
--pretend rehearse the whole gesture; never starts a real print
--background drop the monitor window so Bambu Studio keeps focus
--exposure -6 pin camera exposure so room light can't set your frame rate
--physics float air-hockey glide instead of gravity
--mute silence the audio cues
--no-telemetry stop polling the printer for progress

--desk plus --pretend is the whole interaction with no projector and no printer, which is the fastest way to see whether any of this is for you.

Gestures

flick up at the monitor model leaves the screen, arrives on the wall
pinch grab the object; pinch again to release, or throw it
drop on the printer countdown, then slice and print
pinch it back out cancel an armed countdown
pull both hands apart open the inspect view
swipe while inspecting turn the part half a turn
clap close the inspect view

Safety

Nothing starts an unattended print without the hold-to-confirm countdown, which is cancellable by pinching the object back out of the drop zone. Carrying an object past the printer does nothing — only a released object that lands overlapping the printer arms anything. Use --pretend while you are learning the gestures.

Layout

gesture/   reusable gesture stack — no projector or printer concepts
app/       interaction logic: the carry state machine, drawing, rendering, sound
ui/        display and camera-preview concerns
printer/   slice and send: Bambu Studio CLI, FTPS upload, MQTT control
tools/     the four setup/run entry points above
tests/     synthetic; no camera, projector or printer needed

app/carry.py is pure logic — it takes a hand position in wall coordinates plus a pinch state and decides everything, physics included. That is what makes the paths that must not start a print testable without hardware.

python -m pytest

Notes

Developed against one X2D on one desk. The LAN protocol details were established empirically against the real machine and several of them are not in any documentation — if you are porting this to another Bambu model, the print URL scheme and model_id are where to start looking.


by almostinventor

Read the rest on GitHub

Scan report · 2026-09-11
  • Prohibited terms or links
  • Repository eligibility
  • slopscore.md paperwork
  • Content policy
  • Risk review — +20 owner account < 30 days old

0 comments

log in to comment.

report this listinglog in to report