Skip to content

Commit 4b4dcc7

Browse files
committed
feat(fusion): SpaceMouse bridge + experimental Fusion 360 add-in
Fusion 360 never uses the TDxInput COM API (its SpaceMouse support is 3D Mouse SDK/3DxWare-only), so a COM server cannot serve it. Add an experimental path: SpaceMouseBridge forwards the connected device's motion/button deltas over localhost UDP (protocol-compatible with requies/Fusion360-Linux_Spacemouse, MIT), and a Fusion Python add-in drives the active viewport camera. README documents it plainly as experimental with known limits.
1 parent 697e470 commit 4b4dcc7

7 files changed

Lines changed: 575 additions & 14 deletions

File tree

‎OpenNDOF.slnx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@
1313
<Folder Name="/tools/">
1414
<Project Path="tools/ComCompatProbe/ComCompatProbe.csproj" />
1515
<Project Path="tools/ComTestHarness/ComTestHarness.csproj" />
16+
<Project Path="tools/SpaceMouseBridge/SpaceMouseBridge.csproj" />
1617
</Folder>
1718
</Solution>

‎README.md‎

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,14 +236,45 @@ what the official driver would have sent.
236236
implements the connection-point machinery itself
237237
(`src/OpenNDOF.Core/Com/ConnectionPoints.cs`) and delivers `SensorInput`,
238238
`KeyDown`/`KeyUp`, and `DeviceChange` to subscribed clients.
239-
- **Fusion 360 does not use the TDxInput COM API.** It reads SpaceMouse input
240-
via the 3Dconnexion **3D Mouse SDK**, which requires the 3DxWare driver to be
241-
installed. A COM-server replacement cannot provide input to Fusion 360 —
242-
install 3DxWare for that application.
239+
- **Fusion 360 does not use the TDxInput COM API**, and no COM server can make
240+
its built-in SpaceMouse feature work — it requires the proprietary 3DxWare
241+
driver. **Fusion support is EXPERIMENTAL and partial**: see
242+
[Fusion 360 (experimental add-in)](#fusion-360-experimental-add-in) below.
243243
- Diagnose a non-working application with
244244
`dotnet run --project tools/ComCompatProbe` — it verifies connection-point
245245
support and event delivery for all three COM objects.
246246

247+
### Fusion 360 (experimental add-in)
248+
249+
> **Plain statement:** Fusion's built-in SpaceMouse support only works with the
250+
> official 3DxWare driver. This project cannot enable that built-in feature —
251+
> instead it ships an **experimental** add-in that drives Fusion's viewport
252+
> camera directly from the device. It works, but it is **not driver-grade**:
253+
> the feel is cursor/camera-driven, tuning constants are at the top of the
254+
> add-in script, and Fusion API updates may break it.
255+
256+
How to use it:
257+
258+
1. Run the bridge (keep it running):
259+
```powershell
260+
dotnet run --project tools\SpaceMouseBridge # or SpaceMouseBridge.exe
261+
```
262+
It connects to the device and forwards motion/buttons to `127.0.0.1:39030`.
263+
2. In Fusion 360: **Tools → Add-Ins … → Add** → select the
264+
`fusion/SpacenavBridge` folder → **Run** (enable "run on startup" if you
265+
want it auto-loaded).
266+
3. Move the SpaceMouse. Buttons: button 0 = fit view, button 1 = home.
267+
268+
Plain known limits:
269+
- Navigation is applied to the viewport camera, not a driver-level input path —
270+
expect slightly different smoothness than the official driver.
271+
- If motion feels too fast/slow/reversed, edit the `*_SCALE` / `*_SIGN`
272+
constants in `fusion/SpacenavBridge/SpacenavBridge.py` and restart the add-in.
273+
- Not covered: settings UI, per-app profiles inside Fusion, Fusion Electronics
274+
camera quirks. The add-in applies to the active viewport.
275+
- The bridge and add-in are intentionally protocol-compatible with
276+
[requies/Fusion360-Linux_Spacemouse](https://github.com/requies/Fusion360-Linux_Spacemouse) (MIT).
277+
247278
---
248279

249280
## Configuration Profiles
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"autodeskProduct": "Fusion",
3+
"type": "addin",
4+
"id": "330fb1e8-30fa-4c08-95b3-4e092d42bba9",
5+
"author": "OpenNDOF",
6+
"description": {
7+
"": "EXPERIMENTAL — receives SpaceMouse motion from the OpenNDOF SpaceMouseBridge (localhost UDP) and drives the active Fusion viewport camera."
8+
},
9+
"version": "1.0.0",
10+
"runOnStartup": true,
11+
"supportedOS": "windows",
12+
"editEnabled": true
13+
}

0 commit comments

Comments
 (0)