A Sweet Home 3D plug-in that moves the camera of the 3D view with a 3Dconnexion device (SpaceMouse, SpaceNavigator...) managed by spacenavd.
  • Java 74.9%
  • Python 20.5%
  • Just 4.6%
Find a file
2026-10-06 20:38:36 +02:00
.agents/skills chore: add agent skills for plug-in and spacenavd development 2026-10-02 10:10:15 +02:00
.claude docs: add AI usage disclosure, contributing section and agent instructions 2026-10-06 20:35:01 +02:00
src docs: license under GPL v2 or later 2026-10-06 20:38:36 +02:00
.gitignore feat: add spacenavd camera navigation plug-in 2026-10-02 10:10:15 +02:00
AGENTS.md docs: add AI usage disclosure, contributing section and agent instructions 2026-10-06 20:35:01 +02:00
AI_USAGE.md docs: add AI usage disclosure, contributing section and agent instructions 2026-10-06 20:35:01 +02:00
CLAUDE.md docs: add AI usage disclosure, contributing section and agent instructions 2026-10-06 20:35:01 +02:00
justfile docs: license under GPL v2 or later 2026-10-06 20:38:36 +02:00
LICENSE docs: license under GPL v2 or later 2026-10-06 20:38:36 +02:00
README.md docs: license under GPL v2 or later 2026-10-06 20:38:36 +02:00

Space mouse navigation for Sweet Home 3D

A Sweet Home 3D plug-in that moves the camera of the 3D view with a 3Dconnexion device (SpaceMouse, SpaceNavigator...) managed by spacenavd. It talks to the daemon directly over its UNIX domain socket, without libspnav or any native library.

AI disclosure

Built with agentic software engineering (Claude Code) from two agent skills I wrote first, then reviewed and used by me. See AI_USAGE.md for the process, scope and review.

Requirements

  • Sweet Home 3D 6.0 or later, run with Java 16 or later (for UNIX domain sockets)
  • a running spacenavd, reachable at $SPNAV_SOCKET, the socket of /etc/spnavrc, $XDG_RUNTIME_DIR/spnav.sock or /var/run/spnav.sock

Build and install

Building needs just, a command runner, as a development dependency. It isn't needed to run the plug-in.

just            # builds build/SpacenavPlugin-1.0.sh3p
just install    # copies it to ~/.eteks/sweethome3d/plugins

SH3D_JAR and PLUGINS_DIR override the location of SweetHome3D.jar and of the plug-ins folder. Restart Sweet Home 3D after installing.

Use

The puck acts on the home of the active window only.

Puck Virtual visit Aerial view
Push forwards / pull backwards Walk forwards / backwards Move the home away / closer
Push left / right Step sideways
Lift / press Raise / lower the camera
Twist Turn left / right Rotate the home
Tilt forwards / backwards Look down / up Tilt the home
Button 1 Switch to aerial view Switch to virtual visit
Button 2 Level the camera

In aerial view, Sweet Home 3D keeps the camera pointed at the centre of the home, so there is no panning in that mode.

Tools > Space mouse settings... sets the translation and rotation speeds, inverts individual axes, and chooses whether the puck holds the home or the camera in aerial view. It also shows the connection state and the last values received from the daemon. Settings apply at once and are shared by all windows.

Sensitivity, dead zone and axis mapping configured in spacenavd (spnavrc, spnavcfg) apply before the plug-in sees the values. A button bound to an action or a key in spnavrc isn't sent to the plug-in.

Contributing

Bug reports and pull requests are welcome. A proper test suite and KISS-style cleanup are especially welcome ;)

  • Write commit messages as Conventional Commits: feat: ..., fix: ..., docs: ..., chore: ...
  • Check that just builds the plug-in, and try your change in Sweet Home 3D
  • If you use AI tools, follow the rules in AI_USAGE.md

License

Copyright (C) 2026 Tim Jagenberg

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. It is distributed WITHOUT ANY WARRANTY. See LICENSE for the full text.

This is the license of Sweet Home 3D itself, which the plug-in extends.