POV-Ray : Newsgroups : moray.win : Need a UI to get Moray up and running : Need a UI to get Moray up and running Server Time
6 Nov 2025 04:56:50 EST (-0500)
  Need a UI to get Moray up and running  
From: Bald Eagle
Date: 3 Nov 2025 16:20:00
Message: <web.69091b89d114f8486fcb1eeb25979125@news.povray.org>
If someone is well (enough) versed in putting together an AI, then I'm hoping
that Moray can be resurrected upon completion of this crucial step.

AI analysis:



- truly cross‑platform (Windows/macOS/Linux),
- performant with 3D viewports (OpenGL/Vulkan/Metal via abstraction),

theming, HiDPI),
- easy to ship and maintain (installers, updates, crash reporting),


Below is a short **top‑tier shortlist**, then a deeper rundown with
pros/cons and selection criteria.

---

## The shortlist (recommended options)


- **Why**: Best all‑around for a pro DCC app: docking, complex widgets,
menus/shortcuts, internationalization, accessibility, HiDPI,
multi‑monitor, and first‑class OpenGL/Vulkan integration. Mature,
well‑documented, and widely used in CAD/DCC tools.
- **Rendering**: QOpenGLWidget/QOpenGLWindow or custom Vulkan via QRhi (Qt 6).
Stable input handling for 3D navigation.
- **Scripting**: Qt for Python (PySide6) is excellent for extending tools.
- **Drawbacks**: Licensing cost (commercial) or LGPL compliance; QML learning
curve if you go that route; large framework.

**Best fit if** Moray is C++ and you want a native, professional UX with minimal
surprises.

---


- **Why**: Classic C++ with native controls and permissive licensing. Simpler
mental model than Qt; easy to embed an OpenGL canvas. Produces

- **Trade‑offs**: Smaller ecosystem than Qt; fewer high‑level

plumbing work for very polished UX.




---


- **Why**: Lightning fast to develop, great for custom viewports, debug panes,
live inspectors, docking/undocking (docking branch). Cross‑platform via
backend bindings (GL/Vulkan/Metal).

localization need work; printing and native file pickers are not



engines) and control everything about the 3D workflow. Fantastic for a modeler
used by power users.

---


- **Why**: MVVM, XAML‑like, runs on Windows/macOS/Linux. Docker‑like
docking ecosystems, custom control authoring, and decent OpenGL/Vulkan interop
via GLControl/Skia.
- **Trade‑offs**: Less battle‑tested for heavy CAD/DCC than Qt;

macOS/Linux.

**Best fit if** your team prefers C#/.NET and wants a cohesive desktop framework
without going to Electron.

---


- **Why**: Fast rendering via Skia, good theming, fast iteration, decent desktop
story now. Embedding native 3D via platform channels or texture widgets is
doable.
- **Trade‑offs**: Complex or performance‑critical 3D embedding is
more involved; fewer desktop‑specific affordances than Qt; accessibility


**Best fit if** you want a custom‑drawn, uniform look and have strong
Flutter skills, and the 3D viewport is a native child you integrate.

---


- **Why**: Much lighter than Electron; lets you build the UI in web tech while
your 3D core is native (Rust/C++), displayed in a GL/Vulkan window or via
canvas/WebGPU in a webview.
- **Trade‑offs**: Web UI for a pro desktop tool can be tricky
(menus/shortcuts/docking need libraries); 3D in WebView (WebGL/WebGPU) may lag
native performance/driver support.

**Best fit if** your team is strong in web UI and you want tiny installers vs
Electron, while keeping a native viewport window.

---


- **Why**: Massive ecosystem, great developer velocity. Plenty of
docking/shortcut/state libraries. Easy auto‑update and tooling.
- **Trade‑offs**: Large footprint; integrating a high‑perf native
viewport either means a native node module (maintenance) or running


**Best fit if** your team is web‑heavy and shipping speed + UI flexibility
beat native feel and footprint concerns.

---

## Also‑ran / niche options (consider if they match your constraints)

- **GTK (C)**: Native on Linux; macOS/Windows support exists but not ideal for

- **JUCE (C++)**: Terrific for audio apps; usable for general UI, but less
ergonomic for CAD/DCC docking/workspaces.
- **Kivy (Python)**: Good for Python apps and touch‑UIs; not typical for
pro DCC desktop.

Rust‑first, but fewer desktop affordances than Qt.

---

## What matters for a modeler like Moray (checklist)

1. **3D viewport integration**

excellent).
   - Input correctness: raw mouse events, high‑polling devices,
3‑button mice, tablet/stylus.
   - Multi‑viewport, split views, synchronized cameras.

2. **Pro desktop ergonomics**
   - Docking/undocking, detachable panels, floating tool windows.
   - Customizable keybindings, context menus, command palette.
   - Persistent layouts/workspaces; multiple monitors; HiDPI scaling.

3. **Performance & stability**
   - Main‑thread vs render‑thread separation.
   - V‑sync control, frame pacing, minimal input latency.
   - Robust crash handling (minidumps), logging, telemetry, safe autosave.

4. **Extensibility**
   - Scripting (Python is popular in DCC): expose commands, operators, and UI
panels.
   - Plugin ABI: versioning, sandboxing, plugin UIs embedded in the main dock
system.

5. **Build & ship**
   - Cross‑platform CI, code signing, notarization (macOS),
MSIX/DMG/AppImage.
   - Updaters (Sparkle/Squirrel/WinSparkle) or built‑in (Electron).

6. **UX quality & compliance**
   - Accessibility (screen readers, focus order, contrast).
   - Localization (LTR/RTL), Unicode text.
   - Input methods (IME), file dialogs, color management.

---

## Suggested architectural patterns

- **Core engine in C++** (geometry ops, scene graph, serializers, POV-Ray
export).
- **UI shell via**:
  - **Qt Widgets** (classic) or **Qt Quick (QML)** for richer,
GPU‑accelerated UI.
  - Or **Dear ImGui** if you want a tool‑centric look with blazing dev
speed.
- **Rendering**: Separate render thread with shared context; embed into UI via

- **Command system**: Central command bus with undo/redo stack; expose to
scripting (Python) and keybindings.
- **Data model**: Scene graph + component system; change notifications
(signals/slots in Qt) to update panels efficiently.
- **Plugin API**: Stable C ABI or C++ with pimpl; UI plugin slots for
panels/tools.

---

## Practical recommendations by scenario


for traditional tool UI + QOpenGLWidget; or QML if you want modern animations
and GPU‑accelerated UI chrome. Add PySide6 for scripting.
- **You want rapid iteration and control over every pixel** → **Dear ImGui
(docking)** + your own render backend. Pair with a small platform library
(GLFW/SDL). Build native file dialogs via tiny bridge libs.

(OpenTK/Skia/Vulkan) and the rest in XAML/MVVM.

**Electron** second (ecosystem). Keep the 3D viewport native where possible.

---

## A small decision matrix

| Criterion | Qt | wxWidgets | Dear ImGui | Avalonia | Flutter | Tauri |
Electron |
|---|---|---:|---:|---:|---:|---:|---:|
| Native desktop polish | **★★★★★** |
★★★★☆ | ★★☆☆☆ |
★★★★☆ | ★★★★☆ |
★★★☆☆ | ★★★★☆ |
| 3D viewport embedding | **★★★★★** |
★★★★☆ | **★★★★★** |
★★★★☆ | ★★★☆☆ |
★★★☆☆ | ★★★☆☆ |
| Docking & complex panels | **★★★★★** |
★★★★☆ | ★★★★☆
(docking branch) | ★★★★☆ |
★★★☆☆ | ★★★☆☆ |
★★★★☆ |
| Accessibility/i18n | **★★★★★** |
★★★★☆ | ★★☆☆☆ |
★★★★☆ | ★★★★☆ |
★★★☆☆ | ★★★★☆ |
| Dev velocity | ★★★★☆ |
★★★☆☆ | **★★★★★** |
★★★★☆ | ★★★★☆ |
★★★★☆ | **★★★★★** |
| Footprint | ★★★☆☆ |
★★★★☆ | **★★★★★** |
★★★★☆ | ★★★★☆ |
**★★★★★** | ★★☆☆☆ |
| License/business | Comm/LGPL | **Permissive/LGPL** | MIT | OSS (MIT) |
BSD‑style | MIT | MIT |

(Stars are relative to this use case.)

---

## Next steps I can help with

1. **Pick the stack based on your constraints**:
   - Primary language (C++/C#/Rust/JS)?
   - OS targets (Windows/macOS/Linux) and minimum versions?
   - Licensing constraints (LGPL acceptable? commercial ok?)
   - Need native look vs custom look?
   - Must‑have features (e.g., detachable docks, tablet support,
multi‑viewport)?
2. **Architecture sketch** for your chosen stack (module boundaries, threading,
plugin ABI).

properties panel, command system with undo/redo, layout persistence, and file
open/save.

---

### Quick recommendation (if I had to choose one)
If Moray remains C++ and targets all three desktop OSes with a polished,
professional UX, **Qt 6** is the most robust and future‑proof choice. If
you want maximum developer speed and are comfortable with a non‑native UI,

power‑user modeler.

---


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.