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 0000000..4cf867a Binary files /dev/null and b/plugins/motion-slider/icon.png differ diff --git a/plugins/motion-slider/index.html b/plugins/motion-slider/index.html new file mode 100644 index 0000000..b279a57 --- /dev/null +++ b/plugins/motion-slider/index.html @@ -0,0 +1,5388 @@ + + + + + +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"] +} 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/" } ] }