The Raw Control Editor's Match Joints to Mesh (ML) operator runs Epic's
nlstools ML matcher in an isolated Python 3.11 process. The addon ships two
transports for that process, selectable in Edit ▸ Preferences ▸ Add-ons ▸
Character DNA ▸ NLS Worker Transport:
| Transport | Platforms | When to use |
|---|---|---|
| System Python | Windows, Linux | You already have (or are willing to install) a CPython 3.11 on your host. Fast, zero container overhead. |
| Docker | Windows, Linux, macOS | You want a hands-off setup, can't install Python 3.11, or you're on macOS (which has no native NLS binaries). |
This page covers the Docker route.
Prerequisites
- A 64-bit x86 host. (The worker image only ships for
linux/amd64.) - Free disk space for the worker image (~300 MB after build).
- On Windows: Docker Desktop 4.x or newer with the WSL 2 backend enabled.
- On macOS: Docker Desktop 4.x or newer.
- On Linux: Docker Engine 24+ (or Docker Desktop for Linux).
Install
- Windows / macOS: download Docker Desktop from docker.com/products/docker-desktop and run the installer. Launch Docker Desktop once and wait for the whale icon in the system tray to report Docker Desktop is running.
- Linux: follow the distro instructions at
docs.docker.com/engine/install.
Make sure your user is in the
dockergroup (sudo usermod -aG docker $USER, then log out + back in) so the addon can talk to the daemon withoutsudo.
Verify
Open a terminal and run:
docker version
You should see both a Client and a Server section. If the Server section is
missing or reports an error, the daemon isn't running -- start Docker Desktop /
the docker service and try again.
First Match Bones click
The first time you run Match Joints to Mesh (ML) with the Docker transport selected, the addon will:
- Probe the Docker daemon (cached for 30 s thereafter).
- Build the worker image
character-dna-nls-worker:py311-v1from the bundledDockerfile. This downloadspython:3.11-slimplus a handful of shared libraries and installsnumpy==1.26.4-- typically 30 -- 60 s on a warm broadband connection. - Spawn the container, bind-mount the extracted Linux NLS package read-only
at
/work/nls, bind-mount your ML model directory read-only at/work/models, and start the worker on a free local port.
Subsequent Match Bones clicks skip steps (2) and re-use the cached container
for the rest of the Blender session. The container is labeled
character_dna_worker=true so a stale instance (e.g. after a Blender crash)
is automatically removed the next time you load the addon.
Switching back to System Python
Open Edit ▸ Preferences ▸ Add-ons ▸ Character DNA ▸ NLS Worker Transport and choose System Python. The dropdown is hidden on macOS because there are no native NLS binaries for darwin.
Troubleshooting
docker CLI not found on PATH. Install Docker Desktop / Engine and make
sure the installer added the CLI to your shell's PATH. On Linux this is
usually /usr/bin/docker.
Docker is installed but the daemon is not reachable. Start Docker Desktop
or run sudo systemctl start docker.
Image build fails with a network error. Docker pulled the base image
from Docker Hub; check your firewall / proxy settings. You can also pre-pull
the base image with docker pull python:3.11-slim.
Linux NLS package missing. Click Extract Dependencies in the addon preferences. On Windows hosts extraction now lays down both the Windows and Linux trees so you can switch between transports without re-extracting.