mamonet GitHub avatar

wiimote-motion-display

mamonet

A C#/.NET interactive display that drives a MonoGame canvas from a real Wii Remote via Bluetooth HID, mapping motion, pointing, and gestures in real time.

Stars

5

7-day growth

No data

Forks

1

Open issues

0

License

No data

Last updated

2026-07-28

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It provides a pluggable input abstraction (IMotionSource) so the canvas never depends on a specific sensor, and implements pointer stability via a One Euro filter, careful rumble state preservation, and a non-blocking read loop.

Who it is for

  • MonoGame/XNA developers building motion-controlled displays
  • Game developers exploring alternative input with real hardware
  • Hobbyists wanting to repurpose a Wii Remote for interactive projects
  • Developers porting legacy Kinect/XNA movement-controlled displays

Use cases

  • Interactive art installations with gesture-driven canvas
  • Educational demos using motion and pointing as input
  • Game prototyping with physical controller feedback (rumble, LEDs)
  • Gesture-based UI for desktop applications

Strengths

  • Pluggable IMotionSource abstraction allows switching sensors without touching canvas code
  • Pointer stability maintained by One Euro filter, avoiding trade-off between still and responsive cursor
  • Rumble state is preserved across all output reports, preventing accidental motor off/on
  • HID reads run on dedicated thread with no allocation, keeping render loop responsive

Considerations

  • Windows-only: Bluetooth HID pairing and build steps require Windows
  • Status shows all features as unchecked, indicating the implementation may be incomplete or a design outline
  • Requires a physical Wii Remote and IR sensor bar; no emulation or alternative controller provided

README quick start

wiimote-motion-display

A C#/.NET interactive display driven by a real Wii Remote over Bluetooth: motion, pointing, and gestures mapped to an on-screen canvas in real time.

A gaming motion controller is a cheap, precise, and genuinely fun way to drive an interactive display, but the value is in the plumbing: reading the controller over Bluetooth HID, turning noisy accelerometer and infrared data into stable pointing, motion, and gestures, and mapping that onto something on screen without lag. wiimote-motion-display does that end to end. A Wii Remote connects over Bluetooth HID; its accelerometer, IR camera, and buttons drive a pointer, tilt and motion, and recognized gestures on an interactive canvas built with MonoGame.

Scope note: the input layer is pluggable, with the Wii Remote as the reference device. The canvas is built on MonoGame, the open-source continuation of the XNA Framework, so the programming model is the same one legacy Kinect/XNA projects use, and porting the render side to XNA on Visual Studio is direct. This is my own hardware, built and tested for real.


How it works

flowchart LR
    W[Wii Remote] -- Bluetooth HID --> R[HID report reader\naccel, IR, buttons]
    R --> F[Fusion\norientation, pointer, gesture]
    F --> M[Mapping]
    M --> C[MonoGame canvas\npointer / motion / gesture actions]
    C -- rumble / LEDs --> W
  • Bluetooth HID. Pairs the Wii Remote and reads its HID report stream: buttons, the 3-axis accelerometer, and the IR camera's tracked points. No vendor SDK, just the HID protocol.
  • Pointer. Computes an on-screen pointer from the IR camera and sensor bar (or any IR sources), with smoothing so it sits still when your hand does.
  • Motion and orientation. Derives tilt and motion from the accelerometer (and the MotionPlus gyro if the remote has one).
  • Gestures. Recognizes flicks, swings, shakes, and holds from accelerometer patterns.
  • Interactive display. A MonoGame canvas responds to the pointer, motion, and gestures in real time: move and throw objects, draw, and trigger actions, with rumble and LED feedback.

Why it maps to Kinect/XNA work

The hard parts of a movement-controlled display are the same whatever the sensor: read a noisy real-time input, turn it into stable motion and gestures, and drive a responsive display. This project does

Related repositories

Similar projects matched by category, topics, and programming language.

loyal-studio
loyal-studio GitHub avatar

Honami-Animation-System

Honami is a visual, UI-first animation system for Unity 6 that replaces Mecanim with timeline editors, node graphs, and a zero-allocation runtime, letting animators author animations with almost no code.

C#
239
aakk007
aakk007 GitHub avatar

RogueCleaner

A Windows tool that detects and removes malicious leftovers from right-click menus, startup items, services, scheduled tasks, browser extensions, and file associations.

C#
212
ThioJoe
ThioJoe GitHub avatar

Thio-Background-App-Notifier

A lightweight Windows tool that notifies you about new auto-starting background services and scheduled tasks that Windows normally doesn't alert you about.

C#
147