Sign inSign up

nicholasyue/remex

By nicholasyue

•Updated 8 days ago

C++ homage to the Wings3D/Nendo polygonal modelling software with substantial assistance from AI.

Image
0

78

nicholasyue/remex repository overview

⁠Remex

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.

⁠Quick start

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.

⁠Without the launcher

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.

⁠Requirements

  • Linux on x86-64 with Podman or Docker, and a desktop session (Wayland or X11); or Windows 11 with Podman (see "On Windows" below).
  • A GPU with OpenGL 3.3 or newer (Intel, AMD, NVIDIA), or none: Mesa's software renderer works, slowly.
  • The image never contains NVIDIA's driver; NVIDIA comes from your host through CDI.

⁠On Windows 11 (Podman)

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.

⁠Using it

InputAction
Clickselect (Shift adds, Ctrl removes)
V E F Overtex, edge, face, object mode
T R Smove, rotate, scale
Ctrl+Eextrude
Ctrl+Bbevel
Shift+Ecrease (edge sharpness)
Shift+Tabsmooth preview on or off
Ctrl+Z / Ctrl+Shift+Zundo / redo
Middle-drag or Alt+left-dragorbit
Shift+middle-dragpan
Wheelzoom; 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).

⁠Files

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.

⁠Tags

TagMeaning
0.1.0the first release (exact; never moved)
latestthe 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"}}'

⁠Tested on

HostDisplayGPUResult
AlmaLinux 9X11Intel (Sandy Bridge)works
AlmaLinux 9X11software (llvmpipe)works
Intel laptopWaylandIntelworks (cursory)
NVIDIA hostX11 / WaylandNVIDIA (CDI)not yet tested
Windows 11, Podman (WSL2)Wayland (WSLg)softwareworks
Docker as the runtimeanyanynot yet tested

⁠Current limitations

  • OBJ only; no USD or Alembic.
  • Not for tablets and phones from this image; a browser build is separate.
  • The first Put On onto a very dense target (tens of thousands of faces) waits a few seconds while the limit surface is prepared.
  • On a GPU host, a window that reports llvmpipe as its renderer means the GPU was not reached: check the --gpu choice.

⁠Reporting a problem

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.

⁠Licence: please read

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

Tag summary

Content type

Image

Digest

sha256:a4b2b4a0e…

Size

111.7 MB

Last updated

8 days ago

docker pull nicholasyue/remex