Fry3DX (Frying 3D Extreme): a 3D modeller that does what you'd expect. Pick a tool, click, drag.
  • C++ 90.5%
  • GLSL 6%
  • CMake 1.7%
  • Python 1%
  • Lua 0.5%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-21 08:00:42 +02:00
.github/workflows macOS (Apple silicon and Intel): Fry3DX.app with its content in Resources and MoltenVK in Frameworks, OpenGL 4.1 when there's no Vulkan; the program's own path, memory, OS and CPU names on a Mac; files dropped on the window (and opened from the Finder) open; presets macos-arm64/macos-x64, a CI job, tools/package.py macos makes one universal app 2026-10-20 17:36:24 +02:00
android Phones: sideways only; back from the background the Vulkan surface is made again (it was lost), the work saved on the way out and carried on with on the next start if the phone closed it 2026-10-21 00:16:22 +02:00
branding A new logo: a cube frying in a cast-iron pan, on a bevelled tile; tools/branding.py makes every size 2026-10-20 16:48:57 +02:00
cmake The crash screen in the app's own look (logo with smoke, the report in a well, Open it again / Copy / Report it on GitHub); sculpt mode's panels and status bar say what sculpting does; fry_scriptpanel; twelve new previews on the site (sculpt, materials, layout, render, scripts, light and the crash screen added) 2026-10-20 18:03:18 +02:00
content Scripts kept in the .fry (the Script panel lists the file's scripts: new, examples, open, duplicate, remove, rename); your own materials (Save its look as a material, kept for every file; fry.material in scripts); plug-ins: scripts in the plug-ins folder that stay loaded and add menu commands with settings (fry.command, fry.plugin), a Plug-ins window, three that come with it (stairs, scatter, more materials); a new About window; tests 2026-10-20 19:01:07 +02:00
docs 0.7: cutting inside a cut no longer crashes (the boolean's tree kept splitting a sliver by its own plane, forever) and cuts come out closed (points near an edge's end set into it, small gaps filled, a nudged retry); hidden edges stay hidden on big or cut-up shapes (visibility through a screen grid, no "all seen" past a size; the selection outline too); every panel has a least size, kept when docked, and the first layout fits small windows; eye and padlock buttons in Layers; the tabs fit narrow windows; a failed tool keeps your redo; view commands at start-up no longer crash; tests 2026-10-21 00:07:10 +02:00
engine The view: near and far go by the distance (no more vanishing far out or cutting close up), a coarser grid out to the horizon; outline and lines over the model agree while a touch turns the view (worked out once, just before drawing); outlines from a cached edge list, points tried for sight only when drawn 2026-10-21 00:45:17 +02:00
src Drawing a shape: each line's length by the mouse; type a length and Enter for exactly that; Shift holds it to 15 degree steps 2026-10-21 08:00:42 +02:00
tests Crease (Shift+E): picked edges stay sharp when the shape's smoothed (carried through each level and the mirror; saved); shown in magenta; tests 2026-10-21 07:58:43 +02:00
tools macOS (Apple silicon and Intel): Fry3DX.app with its content in Resources and MoltenVK in Frameworks, OpenGL 4.1 when there's no Vulkan; the program's own path, memory, OS and CPU names on a Mac; files dropped on the window (and opened from the Finder) open; presets macos-arm64/macos-x64, a CI job, tools/package.py macos makes one universal app 2026-10-20 17:36:24 +02:00
.gitignore Fry3DX 0.5: builds for Windows, Linux and Android, a phone layout, Apache 2.0 2026-10-19 22:05:01 +02:00
a.out macOS (Apple silicon and Intel): Fry3DX.app with its content in Resources and MoltenVK in Frameworks, OpenGL 4.1 when there's no Vulkan; the program's own path, memory, OS and CPU names on a Mac; files dropped on the window (and opened from the Finder) open; presets macos-arm64/macos-x64, a CI job, tools/package.py macos makes one universal app 2026-10-20 17:36:24 +02:00
CMakeLists.txt 0.7: cutting inside a cut no longer crashes (the boolean's tree kept splitting a sliver by its own plane, forever) and cuts come out closed (points near an edge's end set into it, small gaps filled, a nudged retry); hidden edges stay hidden on big or cut-up shapes (visibility through a screen grid, no "all seen" past a size; the selection outline too); every panel has a least size, kept when docked, and the first layout fits small windows; eye and padlock buttons in Layers; the tabs fit narrow windows; a failed tool keeps your redo; view commands at start-up no longer crash; tests 2026-10-21 00:07:10 +02:00
CMakePresets.json macOS (Apple silicon and Intel): Fry3DX.app with its content in Resources and MoltenVK in Frameworks, OpenGL 4.1 when there's no Vulkan; the program's own path, memory, OS and CPU names on a Mac; files dropped on the window (and opened from the Finder) open; presets macos-arm64/macos-x64, a CI job, tools/package.py macos makes one universal app 2026-10-20 17:36:24 +02:00
LICENSE Fry3DX 0.5: builds for Windows, Linux and Android, a phone layout, Apache 2.0 2026-10-19 22:05:01 +02:00
README.md README and site: plug-ins, scripts kept in the .fry, your own materials, soft selection, bridge and push 2026-10-20 19:09:35 +02:00
shell.nix Fry3DX 0.5: builds for Windows, Linux and Android, a phone layout, Apache 2.0 2026-10-19 22:05:01 +02:00

Fry3DX

Frying 3D Extreme — a 3D modeller that does what you'd expect.
Pick a tool, click, drag. On Windows, macOS, Linux and your phone.

Website · Download · Build it · made by Nexoniarz

Fry3DX

Why

Because the well-known modellers suck at being easy: a wall of panels, shortcuts nobody would guess, modes inside modes. Fry3DX is built the way people think — a toolbox like GIMP's, plain words on every button, tooltips everywhere — and keeps the useful parts (rounding, mirroring, combining, holes for screws, checks for 3D printing) one click away.

And it works on a phone. Not a viewer: the whole modeller, with big buttons and fingers.

Download

From Releases:

Windows (10 and 11, x64) Fry3DX-…-windows-x64.zip: unpack, run fry3dx.exe
macOS (13.3 and newer, Apple silicon and Intel) Fry3DX-…-macos.zip: unzip, open Fry3DX.app (the first time: right-click it, Open)
Linux (any distro from 2022 on, x64) Fry3DX-…-linux-x64.AppImage: make it executable, run it. Or the .tar.gz
Android (8.0 and newer, 64-bit, Vulkan) Fry3DX-…-android-arm64.apk: open it on the phone to install

Needs a graphics card (or phone) with Vulkan; on a PC, OpenGL 4.6 works too. On a Mac, Vulkan comes inside the app (MoltenVK, on Metal), and OpenGL 4.1 is the fallback.

What it does

Five tabs along the top: Model, Paint, Layout, Render, Print (Ctrl+1 to 5).

Making shapes

  • Shapes that stay editable: cube, rounded cube, plane, circle, cylinder, tube, cone, pyramid, sphere, capsule, torus, wedge, stairs, arch, and starter models (table, chair, shelf, barrel, bottle, pillar, door frame, crate). Their sizes stay changeable in Properties.
  • Draw shape (D): click an outline on the ground, on a side view's plane, or straight on any face of another object: a new part standing on it, added to it, or cut into it.
  • Move, turn, scale (W, E, R): the arrows turn with the object. Scale keeps the other side where it is; Shift scales both sides at once. Ctrl snaps.
  • Round, smooth, mirror any object, changeable any time, baked in when you like.
  • Materials: gold, chrome, steel, wood, ceramic, rubber and more, or how metal and rough it is; shown in the view (Solid too), exported with it. Your own: "Save its look as a material" in the picker keeps one for every file.

Editing the shape (Tab, or double-click)

  • Points, edges, faces (1, 2, 3). Extrude (X), inset (I), round edges (B), loop cut (C), knife (K), cut in four, smooth, merge (M), make a face, flip, separate (P), smooth points, push out / pull in along the surface (Alt+S), bridge two faces with a tunnel.
  • Soft selection (Shift+O): points near what you move follow it, less the further they are; the wheel while dragging sets how far (Blender's proportional editing, Maya's soft select).
  • Hole (O): round (M2–M8 screw sizes ready), rectangle, triangle or hexagon (M2–M8 nut sizes, with room for prints); all the way through, a pocket, or only its outline as a new face.
  • Selecting: click, box, brush or lasso. Shift+click a whole loop, Shift+Ctrl+click an edge's ring, Ctrl+click adds or takes one.

Whole objects (the Object menu)

  • Add together, take one out of another, keep only where they overlap: always closed, so always printable (Ctrl+Shift+ and Ctrl+Shift−).
  • Copies in a row or round a circle; make it thick (a surface gets a back, a solid goes hollow); join objects; join flat faces.
  • Layers with folders inside folders, drag and drop, hide and lock whole groups, and a button on every row that brings the camera to it. Show only the selected (/ or Shift+H; again: everything).

Sculpting (the Paint tab's other side: Tab)

  • Raise, puff out, smooth, flatten, pinch and grab the surface (1 to 6); Ctrl goes the other way, Shift smooths, X does the same on both sides. A shape with too few points is made finer first, keeping its shape.

Painting

  • Paint on the model or on its flat picture. Paste any picture (Ctrl+V): it goes on like a sticker that bends over edges and corners; Enter locks it as a layer, clicking it in the Picture panel unlocks it again.
  • Layout tab: move, turn and size the flat frames of the surface yourself; the paint follows.

Seeing it

  • Solid view for modelling, Rendered with a real sky, sun and soft shadows (Z). Wireframe (Shift+Z), X-ray (Alt+Z). The Render tab: the sun, sky, ground, brightness, shadows, glow; F12 saves a picture of just the view.

3D printing (the Print tab)

  • Your printer's plate in the view (Prusa, Bambu, Creality, Elegoo, Anycubic, or your own), sizes in millimetres, checks for holes and flipped faces with buttons that fix them, overhangs in red, weight and filament, measuring, lay flat on a face, save 3MF or STL.

Scripts (the Script panel, F5)

  • Lua with a fry library: add shapes and change their settings, combine them, move points by a formula, sculpt, set the materials and the sun, make your own materials (fry.material{}). One Ctrl+Z takes back all a script did; an error takes it back itself. Examples in Script > Examples; the ? button lists every function. It can't reach anything outside the scene (no files, no programs).
  • Kept in the file: the Script panel lists the .fry's scripts (new, examples, open, duplicate, rename, remove); they're saved with the model.

Plug-ins (Script > Plug-ins)

  • Scripts that stay loaded: put a .lua in the plug-ins folder and it can add commands to the Add, Object or Script menu (fry.command{name, menu, settings, run}; the settings are asked for in a small form first) and materials to the picker. Turn each on or off in the Plug-ins window. Three come with it: stairs (straight and spiral), scatter copies, and more materials.
fry.plugin{name = "Shelves", about = "A bookcase from the Add menu"}
fry.command{name = "Bookcase", menu = "add", settings = {{"shelves", 5}, {"width", 0.8}},
  run = function(s)
    for i = 0, s.shelves - 1 do
      fry.add("cube", {width = s.width, depth = 0.3, height = 0.02}).position = {0, 0, i * 0.35}
    end
  end}

The look: light or dark, or following the desktop (View > Appearance), in Niveus: keys that look like keys, fields set into the panel.

Files

  • .fry: Fry3DX's own file, everything in one, packed small. Autosave in the background, offered back after a crash; Save / Don't save / Cancel when closing. Drop a .fry, a script or a picture on the window to open it.
  • Export: GLB, glTF, FBX (Blender, Unity, Unreal, Maya), OBJ, 3MF, STL, PLY.

On a phone or tablet: everything bigger, the side panels when you want them, a bar of big buttons (undo, redo, Shift and Ctrl that stay down, edit the shape, delete, frame). One finger turns the view (or drags the arrows), two fingers move it and pinch to zoom, holding a finger still is a right-click. Files open and save through the phone's own file picker.

F1 in the app lists every key.

Build it yourself

Everything it uses is downloaded while building; you need CMake 3.25+, Ninja, a C++20 compiler (GCC 13+, Clang 17+, Xcode 15+ or clang-cl) and glslc (from shaderc or the Vulkan SDK). On NixOS, shell.nix has it all; on a Mac, brew install cmake ninja shaderc molten-vk.

git clone https://github.com/Nexoniarz/Fry3DX.git && cd Fry3DX
cmake --preset release && cmake --build build/release      # (NixOS: inside nix-shell)
build/release/bin/fry3dx [file.fry]
cmake --build build/debug --target check                     # the tests (after --preset debug)
Preset What
debug, release for working on it
portable a Linux build to hand out: SDL and the C++ library inside the program
windows Windows, cross-built from Linux with clang-cl (how)
macos-arm64, macos-x64 Fry3DX.app for Apple silicon / Intel (both build on either Mac); tools/package.py macos joins them into one app
android the Android library; android/build_apk.py makes the APK (how)

tools/package.py packs builds into the downloads (zip, tar.gz, AppImage, the Mac app). Pushing a tag v* makes GitHub build all of them and put them in a release (.github/workflows/build.yml).

What's where

src/app.cpp the app: panels, tools, the view, touch
src/mesh.*, tools.cpp, cut.cpp polygon meshes and the edits on them (tested without a window)
src/boolean.cpp, modify.cpp combining shapes, thickness, joining flat faces
src/shapes.* the shape library and starter models
src/scene.*, package.cpp objects, folders, materials, the .fry file
src/sculpt.* the sculpting brushes
src/script.* scripts: Lua and the fry library; examples in content/Fry3DX/scripts/
src/export.cpp, print.cpp GLB/glTF/FBX/OBJ/3MF/STL/PLY, checks for printing
src/uv.cpp, sticker.cpp, image.cpp flat layouts, stickers, pictures
engine/ window, Vulkan/OpenGL renderer, UI, files
android/, tools/, .github/ builds and packages
docs/ the website (GitHub Pages); its words are all in docs/content.js
tests/ mesh_test, script_test (every example script runs)

Coming

Animation; textures for materials (wood grain, brushed metal); dynamic detail while sculpting.

Licence

Apache License 2.0. Copyright 2026 Nexoniarz. Sky pictures: Poly Haven, CC0. Fonts: Instrument Sans and JetBrains Mono (SIL Open Font License), DejaVu (its own free licence). Lua: MIT. MoltenVK (in the Mac app): Apache 2.0.