mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
Turn an SVG drawing into polar G-code for a GRBL polar pen plotter, with a preview of exactly what the pen will draw.
DesignJavaScript · nesCGitHub @TimothyHadfieldOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A pen plotter that works in polar coordinates: Arduino + CNC Shield V3 running GRBL, 3 stepper axes, a salvaged DVD-drive stepper and custom 3D prints. ECE 1000 final project at UVU.
Taken from the repository README
Loading the full README.
Read the full README ↗A pen plotter that works in polar coordinates: the pen slides along one straight axis while the paper spins underneath it. Built as my final project for ECE 1000 (Intro to Electrical & Computer Engineering) at Utah Valley University, Spring 2026.
Status: fully built, with all 3 axes moving and calibrated. Drawings didn't come out right with the Instructables software chain, so I'm building my own plotter app (see Plotter app).
A normal plotter moves the pen in X and Y. This one reaches every point on a round sheet with two motions instead:
| Axis | What moves | Driven by |
|---|---|---|
| Radius (r) | Pen carriage slides along two steel rods | Stepper motor + timing belt |
| Angle (θ) | Round aluminum platter spins | Stepper motor + belt from a small gear to a large gear (for torque and finer steps) |
| Pen (Z) | Pen lifts on and off the paper | Linear stepper salvaged from a DVD drive |
A point at (x, y) becomes r = √(x² + y²) and θ = atan2(y, x), so a picture has to be converted from Cartesian to polar G-code before the machine can draw it.
Electronics: Arduino + CNC Shield V3 with stepper drivers, running the open-source GRBL firmware.
Software pipeline:
Open the app: drop in an SVG or any picture (PNG, JPG, or paste one with Ctrl+V), see exactly what the pen will draw, download the polar G-code. Pictures are traced into pen lines automatically: outlines by default, or centerlines (one line down the middle of each stroke) in Settings.
Why it exists: GRBL-Plotter's "Convert to polar coordinates" decides when to add or subtract 360° from the sign of the angle, not from the change between two points. Whenever a stroke crosses certain lines through the center, the platter spins a full turn with the pen down and draws a stray ring. A port of that code (tests/grblplotter-port.mjs) puts 2 full spins into a simple centered square.
What the app does differently (js/polar.js):
Tests: node --test tests/*.test.mjs runs 26 tests. Each shape and both sample drawings are simulated the way GRBL moves, and the tests check the pen never strays more than 0.1 mm from the intended lines. The same check fails on GRBL-Plotter's method.
Machine check files (tests/machine/):
1-circle.nc, 2-spoke.nc: if the circle closes and the spoke is straight, the machine is fine.3-square-grbl-plotter-method.nc vs 4-square-fixed.nc: the same square converted both ways.Before running them: pen at the platter center, just touching the paper, then G92 X0 Y0 Z0. Pen up is Z2 and down is Z0 (change both in the app's settings).
Plot straight from the browser (Chrome or Edge on a computer, plotter on USB): Connect plotter → move the pen over the platter center → Set center → Plot. Pause, Stop, jog and pen buttons are built in, and Settings has a console for GRBL $ settings. No UGS needed. Add ?demo to the address to try it with a pretend plotter.
| Materials: 3D prints and hardware-store parts | Steppers, rods, belts, wiring and the platters |
| Pen carriage: 3D-printed holder on the DVD-drive linear stepper | Radius axis: PVC supports, steel rods, bearings, belt and motor |
| Angle axis: small gear drives a large one for mechanical advantage | Assembled: first test drawing (scrambled) |
What I did beyond the original design:
By Timothy Hadfield, Electrical Engineering @ UVU