C++ homage to the Wings3D/Nendo polygonal modelling software with substantial assistance from AI.
78
A polygon and subdivision modeller for the desktop. It takes the modelling and interaction ideas of Wings3D (select vertices, edges and faces; extrude, bevel, dissolve, connect, cut; creases; soft selection) and adds a live OpenSubdiv smooth preview, multi-object documents, and Put On / Clone On placement onto the true limit surface of a subdivided object.
It runs as a native OpenGL window from this image, on Wayland (preferred) or X11, with an Intel, AMD or NVIDIA GPU, or in software.
The image holds the application and a small launcher that sets up the display, GPU and file access. Needs Python 3.11 or newer and Podman or Docker on the host.
# 1. Get the launcher out of the image (once)
docker run --rm --entrypoint cat nicholasyue/remex:0.1.0 \
/usr/share/doc/remex/remex_run.py > remex_run.py
# 2. Run it. --work is a folder on your machine, shown inside as /work
python3 remex_run.py --image docker.io/nicholasyue/remex:0.1.0 --work ~/models
(With Podman, use podman run in step 1.) The launcher picks Wayland if your
session has it, else X11; picks /dev/dri for Intel and AMD, else software
rendering; and prints what it chose. --display wayland|x11,
--gpu dri|nvidia|none and --runtime podman|docker override it, and --print
shows the command it would run.
The window opens with a cube. Create more objects from the panel or by
right-clicking in an empty area; open an .obj from /work with the path field
and Open.
Wayland, Podman, Intel or AMD GPU:
podman run --rm --security-opt label=disable --userns=keep-id --group-add keep-groups \
--device /dev/dri \
-v "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/xdg/$WAYLAND_DISPLAY" \
-e XDG_RUNTIME_DIR=/tmp/xdg -e WAYLAND_DISPLAY="$WAYLAND_DISPLAY" \
-v "$PWD:/work" docker.io/nicholasyue/remex:0.1.0
With Docker, replace --userns=keep-id --group-add keep-groups by
--user "$(id -u):$(id -g)" --group-add "$(stat -c %g /dev/dri/renderD128)".
No GPU: drop --device /dev/dri and add -e LIBGL_ALWAYS_SOFTWARE=1.
NVIDIA: use --device nvidia.com/gpu=all instead of --device /dev/dri; it needs
the NVIDIA Container Toolkit with CDI configured on the host. X11 needs an X
authority cookie valid for the container's host name as well, which the launcher
sets up; use it for X11.
Podman on Windows runs the container in its WSL2 machine, and Windows 11's WSLg
supplies the Wayland display. The Linux launcher does not apply; run this from
CMD (the folder after -v is shown inside as /work):
podman run --rm --security-opt label=disable ^
-e XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir -e WAYLAND_DISPLAY=wayland-0 ^
-v /mnt/wslg:/mnt/wslg -e LIBGL_ALWAYS_SOFTWARE=1 ^
-v C:\Users\%USERNAME%\models:/work docker.io/nicholasyue/remex:0.1.0
In PowerShell, end each line with a backtick instead of ^, and write
$env:USERNAME for %USERNAME%. It renders in software (no GPU acceleration), so
it is slower than on Linux with a GPU; the models folder must exist first.
| Input | Action |
|---|---|
| Click | select (Shift adds, Ctrl removes) |
V E F O | vertex, edge, face, object mode |
T R S | move, rotate, scale |
Ctrl+E | extrude |
Ctrl+B | bevel |
Shift+E | crease (edge sharpness) |
Shift+Tab | smooth preview on or off |
Ctrl+Z / Ctrl+Shift+Z | undo / redo |
| Middle-drag or Alt+left-drag | orbit |
| Shift+middle-drag | pan |
| Wheel | zoom; Home frames the mesh |
Everything also has a button in the panel or an item in the right-click menu, so the application is usable with a trackpad or a pen. Select one face, then Put On (or Clone On), then pick a target on another object, or switch to Point and click the surface where it should land (turn the smooth preview on first, so the click lands on what you see).
OBJ files, read and written under /work. The files you save keep your
ownership on the host. USD and Alembic are not in this image yet.
| Tag | Meaning |
|---|---|
0.1.0 | the first release (exact; never moved) |
latest | the newest release |
The image is about 330 MB unpacked (about 120 MB to download), linux/amd64 only.
Each image records its build in its labels:
docker image inspect nicholasyue/remex:0.1.0 \
--format '{{index .Config.Labels "org.opencontainers.image.revision"}}'
| Host | Display | GPU | Result |
|---|---|---|---|
| AlmaLinux 9 | X11 | Intel (Sandy Bridge) | works |
| AlmaLinux 9 | X11 | software (llvmpipe) | works |
| Intel laptop | Wayland | Intel | works (cursory) |
| NVIDIA host | X11 / Wayland | NVIDIA (CDI) | not yet tested |
| Windows 11, Podman (WSL2) | Wayland (WSLg) | software | works |
| Docker as the runtime | any | any | not yet tested |
llvmpipe as its renderer means the GPU
was not reached: check the --gpu choice.Run the hidden-window check, which prints the OpenGL renderer the image reached:
python3 remex_run.py --image docker.io/nicholasyue/remex:0.1.0 --work /tmp \
-- --smoke-test --screenshot /work/shot.ppm
Send its one-line output, your host (distribution, Wayland or X11, GPU) and what you did.
This software is proprietary. Copyright © 2026 Nicholas Yue, all rights reserved. Pulling this image does not grant a licence to use, copy, modify, distribute or create derivative works from it. Possession is not permission: use requires a separate written agreement with the copyright holder.
The open-source components in it (Dear ImGui with its stb headers and fonts, OpenSubdiv, GLFW, Mesa and the Ubuntu 26.04 base) remain under their own licences and are unaffected by the above. Both texts ship inside the image:
python3 remex_run.py --image docker.io/nicholasyue/remex:0.1.0 --show license
python3 remex_run.py --image docker.io/nicholasyue/remex:0.1.0 --show notices
Content type
Image
Digest
sha256:a4b2b4a0e…
Size
111.7 MB
Last updated
8 days ago
docker pull nicholasyue/remex