From f4fb353c8d80a98ae76f00717c6e567fefe8e6ff Mon Sep 17 00:00:00 2001 From: NEWTech Creative <93799874+NEWTech-Creative@users.noreply.github.com> Date: Tue, 30 Jun 2026 09:38:24 +1000 Subject: [PATCH 1/2] New Motion Slider plugin Motion camera plugin for users wanting a UI tailored for camera sliders using fluidnc and FigUI --- plugins/motion-slider/README.md | 19 + plugins/motion-slider/icon.png | Bin 0 -> 1282 bytes plugins/motion-slider/index.html | 5388 +++++++++++++++++++++++++++++ plugins/motion-slider/plugin.json | 11 + 4 files changed, 5418 insertions(+) create mode 100644 plugins/motion-slider/README.md create mode 100644 plugins/motion-slider/icon.png create mode 100644 plugins/motion-slider/index.html create mode 100644 plugins/motion-slider/plugin.json diff --git a/plugins/motion-slider/README.md b/plugins/motion-slider/README.md new file mode 100644 index 0000000..033e48b --- /dev/null +++ b/plugins/motion-slider/README.md @@ -0,0 +1,19 @@ +# Motion Slider + +A FigUI plugin for camera motion control rigs running FluidNC with plain cartesian kinematics: + +- **X** — slide rail position (mm) +- **Y** — pan head (degrees, driven as a linear axis) +- **Z** — tilt head (degrees, driven as a linear axis) + +## Features + +- **Interactive 3D rig** — a virtual slider rendered with zero external dependencies (works on offline AP-mode controllers). Drag the orange carriage along the rail, the teal knob to pan, or the camera body to tilt. Empty space orbits the view, scroll/pinch zooms. +- **Live virtual → machine sync** — enable *Live jog* and dragging the model streams throttled `$J=` jog commands so the real rig follows the virtual one. The machine's actual position is shown as a green ghost rig and in the HUD readouts. +- **Position capture with millisecond timing** — capture the virtual or actual machine pose as keyframes. Each keyframe has an editable time in **ms**; the plugin converts distance ÷ time into the exact `G1 ... F` feed so every move takes precisely as long as you set. Identical poses become `G4` dwells. If a time is shorter than the machine's max rates allow, the keyframe shows a ⚠ warning and the feed is capped. +- **Run / Hold / Resume** the sequence directly, or **save it as G-code** (`/sd/motion_slider.nc`) and open it in the main viewer/job control. +- Rail travel auto-detects from `$130`; pan/tilt limits are configurable. Keyframes and settings persist on the controller via the plugin settings API. + +## Install + +Copy this folder to `/plugins/` (internal) or `/sd/plugins/` and refresh the Plugins tab, or use Plugins → Add. diff --git a/plugins/motion-slider/icon.png b/plugins/motion-slider/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf867a0783ddb17bbba9a8b50167a10f2db59a8 GIT binary patch literal 1282 zcmV+d1^xPoP)LjQ!UrCi-QfCdL>|ghc=G)5nL9n1Im;BqH&F7)4EdVjwCt z3L>p3B$_a&8px*SU4wI{mFcFEU-I4^ zft}tl@Vlb??M5P^UQ+-ek5=E$h#&7LoOZ%`1f8x4@j@;W5y1ojyydUF%%kLgM6IUq zABXgtir8B@nlKU;&ga`1`GdC>ff;de`xjnBEzSvM;wIj0%nIa&9C^;xSg7={24-;^ zH6S<6z#imojm3GYY_=z?9w0|<6n0r-ixdr&nF5Y$jg`3%i}RTPj;qHC8IC!;Z|Oln zz7y!?$gDjEdk$8K(Oggrs$s?j8vbeV3q|3*S9MI(%R=s|Ya5@~+Z4~2)+-9_2CXXbAj(r)R zr%^feS1q490Sq>~&DgBGe@Y+uRNEUBU>I+jjkQPeZ<|db0Da$}HRTZV(If&=A)f-K zPk_Ud;R5nJsfobF%`}s^YQOPOi(8qeR6rygF-9nGh*)&B{`R#E)8j%zLm|2kMV7zN0v+<&90pYs`a0ifUFI_K?_Z}siP7>rd3J3LAT7|HGML0!rMa>cJ&Oq|EEnHG+s@jlQ%*l;~(bBX1?b;W62TY|_leMv=RBZqkX%M~PlC$=HN`(A}vjl1*Y3Rq!`@A`JG0ee(Y) zT*&IKyM^zDF#Mq)wT{)oXn1T)wXGWa9sOQ08LJ?pq44%xY7zu3tePfQKdp?YU>k@T*0r!8Y?1GH^M?17SzlNR_tT$ zgWOpd4YE<-8ki1o<<_9G4#X + + + + +Motion Slider + + + +
+
+ +
+
+
X · Slide
0.00
mach 0.00
+
Y · Pan
0.00
mach 0.00
+
Z · Tilt
0.00
mach 0.00
+
+
+
+ +
+
drag carriage / pan knob / camera · empty space orbits · scroll zooms
+
+
X slide · A / D
+
Pan / Tilt · arrows
+
+
+ +
+
+
+

Machine sync

+
+
+ +
+
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+ +
+

Keyframes

+
+
+
No keyframes yet. Position the rig, then capture.
+
+ + +
+
+ + +
+
+
+
+ +
+

Stream capture

+
+
+ + +
+
+ +
+
+
+
+ +
+

Run sequence

+
+
+ + + +
+
+ + +
+
+
+ +
+

Focus objects

+
+
+ + +
+
+ + + +
+ Machine settings log +
Waiting for machine settings...
+
+
+
+ + + + diff --git a/plugins/motion-slider/plugin.json b/plugins/motion-slider/plugin.json new file mode 100644 index 0000000..8cf586f --- /dev/null +++ b/plugins/motion-slider/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "Motion Slider", + "description": "3D camera slider control — X slide rail, Y pan, Z tilt. Drag the virtual rig, capture keyframes, time each move in milliseconds.", + "version": "1.0.0", + "entry": "index.html", + "icon": "icon.png", + "layout": "workspace", + "layoutTablet": "full", + "layoutMobile": "full", + "files": ["index.html", "icon.png"] +} From 95e8a2ab928afe71cde3556a65dd2f3f7e44716f Mon Sep 17 00:00:00 2001 From: NEWTech Creative <93799874+NEWTech-Creative@users.noreply.github.com> Date: Tue, 30 Jun 2026 09:41:03 +1000 Subject: [PATCH 2/2] Add Motion Slider plugin details to registry --- plugins/registry.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/registry.json b/plugins/registry.json index f0d0bae..1c0eba5 100644 --- a/plugins/registry.json +++ b/plugins/registry.json @@ -56,6 +56,14 @@ "version": "1.0.0", "author": "lirinar", "base": "https://raw.githubusercontent.com/figamore/FigUI/main/plugins/rasterburn/" + }, + { + "id": "motion-slider", + "name": "Motion Slider", + "description": "Interactive 3D motion slider controller with slide, pan, tilt, focus and zoom axes. Capture positions, set timing and play back smooth cinematic moves.", + "version": "1.0.0", + "author": "Myles (NEWTech Creative)", + "base": "https://raw.githubusercontent.com/figamore/FigUI/main/plugins/motion-slider/" } ] }