{"id":51472605,"url":"https://github.com/killedbyapixel/virtualplotter","last_synced_at":"2026-07-07T20:00:38.879Z","repository":{"id":368986717,"uuid":"1285648266","full_name":"KilledByAPixel/VirtualPlotter","owner":"KilledByAPixel","description":"A 3D pen plotter simulator in the browser.","archived":false,"fork":false,"pushed_at":"2026-07-03T22:05:43.000Z","size":373,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-07-06T19:32:38.467Z","etag":null,"topics":["3d","generative-art","pen-plotter","plotter","plotter-art","svg","threejs"],"latest_commit_sha":null,"homepage":"https://killedbyapixel.github.io/VirtualPlotter/","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KilledByAPixel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["KilledByAPixel"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2026-07-01T02:43:10.000Z","updated_at":"2026-07-06T00:28:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/KilledByAPixel/VirtualPlotter","commit_stats":null,"previous_names":["killedbyapixel/virtualplotter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/KilledByAPixel/VirtualPlotter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KilledByAPixel%2FVirtualPlotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KilledByAPixel%2FVirtualPlotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KilledByAPixel%2FVirtualPlotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KilledByAPixel%2FVirtualPlotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KilledByAPixel","download_url":"https://codeload.github.com/KilledByAPixel/VirtualPlotter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KilledByAPixel%2FVirtualPlotter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35241029,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-07T02:00:07.222Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","generative-art","pen-plotter","plotter","plotter-art","svg","threejs"],"created_at":"2026-07-06T19:30:25.436Z","updated_at":"2026-07-07T20:00:38.861Z","avatar_url":"https://github.com/KilledByAPixel.png","language":"JavaScript","funding_links":["https://github.com/sponsors/KilledByAPixel"],"categories":[],"sub_categories":[],"readme":"# Virtual Plotter\n\nA 3D pen-plotter simulator in the browser. Drop in an SVG and watch a little\nAxiDraw-style machine draw it on virtual paper — arm sliding, pen lifting,\nstepper motors whirring. It doesn't make anything real but it's nice to watch.\n\n# [LIVE DEMO](https://killedbyapixel.github.io/VirtualPlotter/)\n\n![Virtual Plotter](screenshot.png)\n\n## How To Use\n\nDrag any SVG file onto the page and it loads onto the plotter. Then:\n\n- **▶ Plot / ❚❚ Pause** — run or pause the drawing\n- **Reset** — rewind the plot and send the pen home. The ink stays on the\n  sheet — plot over it as many times as you like, and loading another SVG\n  keeps the sheet too, so you can layer different drawings. The paper's\n  **Fresh** button (or picking a new sheet/type/size) is what clears it\n- **Speed** — 1× (real time) up to 1000× for the impatient\n- **Plot** — draw all layers, or just one\n- **Pens** — every layer starts with its own fresh 0.5 fineliner in the SVG's\n  color; each row edits its pen directly (color, pen type, tip size). Click a\n  pen in the caddy to load that actual pen instead — color, tip, and ink\n  level come with it, and layers sharing a caddy pen share its ink. Customize\n  a borrowed caddy pen and the layer quietly gets its own copy (the caddy pen\n  is untouched). Each pen type has its own line character\n  (the marker blobs, the ballpoint dry-starts, the brush swells) and its ink\n  runs down as you plot — levels persist between visits. **Fresh** replaces a\n  dead pen, or untick **Ink simulation** for perfect ink with none of that.\n  Pausing a plot unlocks the pens, so you can swap or recolor mid-drawing —\n  the machine picks up the change when you resume. (The paper stays locked\n  until the plot is done: no sliding a new sheet under half a drawing.)\n- **Paper** — choose a paper type in the panel or click the stack beside the\n  machine: bristol, watercolor (toothy), cheap copy (bleeds a little), or\n  black card (that's what the gel and metallic pens are for). The color\n  picker overrides the sheet color, and the size dropdown swaps in a\n  different standard sheet (A5 up to Tabloid) — the machine resizes to fit.\n- **Clock** — estimated plot time ticks next to the mute button: it runs at\n  the simulation speed, so whatever the Speed setting, it approximates how\n  long the plot would take on a real machine (pausing freezes it; finishing\n  leaves the total showing).\n- **Layer colors** — pick a pen color per layer before you start (Inkscape layers\n  are detected automatically)\n- **🔊** — mute the motor and servo sounds (they only play at 1× speed anyway)\n- **F** — toggle a free-fly camera: the mouse locks for looking around and\n  WASD + E/Q fly you through the scene; press F (or Esc) to return to orbit\n- **H** — hide/show the whole interface (handy for a clean screenshot)\n\nRecently plotted files are remembered so you can replay them. On a first\nvisit the Recent list starts with a built-in sample, so there's something to\nplot before you have an SVG of your own.\n\n## License\n\nCopyright (C) 2026 Frank Force.\n\nReleased under the **GNU General Public License v3.0** — see [LICENSE](LICENSE).\nYou're free to use, study, share, and modify it, but any version you distribute\nhas to stay open source under the same license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkilledbyapixel%2Fvirtualplotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkilledbyapixel%2Fvirtualplotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkilledbyapixel%2Fvirtualplotter/lists"}