PartCAD
The first package manager for CAD files
3D node editor for Wax
Translation pending
DesignJavaScript · HTMLGitHub @zeffiiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A node-based 3D visuals editor in the browser, in the Sverchok style, made to move with music (and later with Wax).
Live: https://zeffii.github.io/flux/
Wires carry either lists of numbers (orange) or geometry (blue: vertices, edges and faces). Short lists repeat to match long ones, so one value or one per vertex both work. Every input is also a parameter: leave it unlinked and drag its slider.
Nodes: sources (number, time, range, noise), generators (grid, circle, arc, line), solids (box, cylinder, pyramid, torus, uv sphere, icosphere, platonic), surfaces (surface, metaballs, skin), modifiers (transform, array, join, lift, edit), math (math, vector) and view. Each view node chooses its colour and whether faces show flat, smooth or as a glow.
Plain JS; the comment header declares the sockets and the body writes into the outputs, which already exist when it runs.
// petal ring
// in n_petals 8 int 1..64
// in vp_petal 10 int 2..64
// in profile_radius 2.3 0..10
// in amp 1 -4..4
// in origin geo
// out verts geo
const N = n_petals * vp_petal, [ox, oy, oz] = origin.first ?? [0, 0, 0]
verts.loop(range(N).map(i => {
const a = i / N * TAU, r = profile_radius + amp * cos(n_petals * a)
return [ox + cos(a) * r, oy + sin(a) * r, oz]
}))
in name default [int] [lo..hi]: a number slider; a range is hard (values are clamped even when linked). in name list: the whole list. in name geo, or >in name geo to wait until it's linked.out name geo: write with .point(p), .edge(a, b), .line(pts), .loop(pts), .face(...pts) (points or indices), .add(geo), or assign mesh(verts, edges, faces). out name list: an array to push to..points, .edges, .faces, .count, .first, and iterate as points.PI, TAU, range, zip, lerp, clamp, fract, rand(i, seed), noise(x, seed), mesh, time, print, and state (kept between runs until the code changes).Put an edit node on a geo wire and select it: its vertices become pickable in the 3D view. Moved vertices are kept as offsets, so they follow when the shape upstream changes; P pins vertices at an absolute place, cut loose from upstream. amount blends between the upstream and edited shapes.
| 3D view, edit node selected | |
|---|---|
| click / Shift+click | pick vertices |
| B, then drag | box select (Ctrl on release removes) |
| A / Alt+A | all or none / none |
| G R S | move, rotate, scale; then X Y Z to constrain, digits for an exact value, click or Enter to keep, Esc to cancel |
| P | pin / unpin |
| Alt+G | forget the edits on the selection |
| Editor | |
|---|---|
| Tab / right-click | add a node |
| drag a slider | change it (Shift: fine), double-click to type |
| X / Delete | delete selected |
| Ctrl+D | duplicate |
| Ctrl+Z / Ctrl+Shift+Z | undo / redo |
| F | fit the graph |
| Space | play / pause |
| Ctrl+S | save a .flux file |
In the 3D view: drag to orbit, Shift or right-drag to pan, wheel to zoom, double-click to recentre.
npm test # smoke tests for the graph and every node
npm start # http://localhost:8080
No build step: index.html loads src/main.js as an ES module. Each push to master runs the tests and publishes to GitHub Pages.
The earlier Flux (numpy nodes for Blender) is in the git history before this rewrite.