Commit Graph
504 Commits
Author SHA1 Message Date
PozzettiAndreaandClaude Opus 4.8 26e8a432d5 Preview Mesh Boundaries: fix cell_data length (auto-vert cells)
pv.PolyData(points) adds one VERT cell per point, so n_cells became
verts+lines+polys and cell_data (lines+polys only) mismatched. Build the
PolyData empty then assign points/faces/lines -> no verts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 16:08:06 +02:00
PozzettiAndreaandClaude Opus 4.8 ddb0a54126 Add Preview Mesh Boundaries node (VTK.js, edge threshold by adjacent-face metric)
edge_value = reduce(face_field[A], face_field[B]); face_normals+angle =
dihedral. Thresholded edges + surface written to an ASCII .vtp and shown
in the shared VTK.js viewer (viewer_vtk.html) in-node. Face field is a
string (face_normals or any face_attributes key; available ones logged).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 16:05:40 +02:00
PozzettiAndreaandClaude Opus 4.8 77f51157a4 Preview Mesh Batch Render: reuse one plotter/GL context on the GPU path
Recreating the EGL render window per mesh dominated per-mesh time. Keep a
single plotter alive and clear()+redraw between meshes (recreate only
after a failure). Refactored render into _make_plotter/_prep_poly/
_draw_into/_screenshot_arr; titles use named add_text so they replace on
reuse. No decimation. Workers (software path) still one-shot.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:57:05 +02:00
PozzettiAndreaandClaude Opus 4.8 a7e77db03e Preview Mesh Batch Render: fix revert_yz_flip (off-screen / vanishing)
The Y/Z swap is a reflection: deep-copy the wrapped mesh (never mutate the
upstream trimesh), flip_normals to restore winding/lighting, and call
reset_camera so the view re-frames the transformed bounds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:48:56 +02:00
PozzettiAndreaandClaude Opus 4.8 29cb39cc05 Load Mesh Batch: ComfyUI progress bar during loading
Lazy-imported comfy.utils.ProgressBar, advanced per mesh in both the
process-pool and serial paths.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:47:27 +02:00
PozzettiAndreaandClaude Opus 4.8 333974880a Load Mesh Batch: fix numpy-truthiness crash + use processes for real speedup
- Fix: len(m.faces or []) raised "ambiguous truth value" on the numpy
  faces array, crashing the whole load. Use a safe _n_faces() helper.
- Threads barely helped (trimesh OBJ parsing is GIL-bound Python); switch
  to a ProcessPoolExecutor for true CPU-parallel parsing, with a serial
  fallback on error.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:43:43 +02:00
PozzettiAndreaandClaude Opus 4.8 1a9e6961ed Preview Mesh Batch Render: parallel software rendering (use_gpu off)
When use_gpu is off and >1 mesh, render across CPU cores via a process
pool (software rasterisation is embarrassingly parallel). Parent starts
Xvfb without a GL context (fork-safe); workers reload from file_path when
available to avoid pickling big meshes. Shared _render_mesh_array used by
serial + worker paths. GPU path unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:38:51 +02:00
PozzettiAndreaandClaude Opus 4.8 be0a715460 Load Mesh Batch: optional multithreaded loading (use all CPUs)
use_multithreading toggle loads files via a ThreadPoolExecutor (workers =
cpu_count); mesh I/O + numpy OBJ parsing release the GIL so big batches
load much faster. Order preserved; live per-mesh logging.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:31:57 +02:00
PozzettiAndreaandClaude Opus 4.8 6593ed8cf7 Preview Mesh Batch Render: yz-flip, 3-plane grid, mesh/edge opacity, connected components
- revert_yz_flip: swap Y/Z axes
- three_plane: 2x2 grid (iso(random) + XY/YZ/XZ)
- mesh_opacity + show_edges with conditional edge_opacity (hidden until edges on, via web_src JS)
- show_connected_components: color by pyvista connectivity() RegionId

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:31:45 +02:00
PozzettiAndreaandClaude Opus 4.8 5ff6fc1342 Preview Mesh Batch Render: GPU(EGL)/software offscreen + tqdm + add_title
Upgrade the batch renderer (was Render Mesh Batch): optional GPU/native
EGL offscreen with software fallback, tqdm + ComfyUI progress bars, and
the filename drawn via plotter.add_title. Renamed to Preview Mesh Batch
Render (node_id GeomPackPreviewMeshBatchRender).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:24:03 +02:00
PozzettiAndreaandClaude Opus 4.8 df72bc63b7 Load Mesh Batch: custom floating dropdown for folder autocomplete
Native <datalist> never opens inside ComfyUI transformed DOM widgets;
replace with a body-attached floating dropdown (fixed-positioned under the
input), click-to-descend into folders, fed by /gpack/getpath.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 15:02:21 +02:00
PozzettiAndreaandClaude Opus 4.8 b5fb441e3e Load Mesh Batch: folder-path autocomplete via own /gpack/getpath route
Inspired by VHS Load Video (Path), but GeometryPack-owned: register
/gpack/getpath in __init__ (main process, after PromptServer exists) to
list directory contents, and a web_src widget that replaces folder_path
with an <input>+<datalist> showing live FOLDER suggestions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 14:58:36 +02:00
PozzettiAndreaandClaude Opus 4.8 7ff9dbcf37 Load Mesh View 3D: use VTK viewer (robust OBJ) instead of Three.js
The Three.js viewer.html OBJLoader chokes on some OBJs; viewer_vtk.html
uses VTK readers (same LOAD_MESH protocol) and shows the download bar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 14:51:50 +02:00
PozzettiAndreaandClaude Opus 4.8 7651ee7f9f Load Mesh: validate_inputs to accept uploaded files
Just-uploaded meshes are added to the file_path combo client-side but are
not in the backend cached INPUT_TYPES options, so queueing hit a 400
"Value not in list". validate_inputs(**kwargs)->True skips that combo
check; execute() still resolves the path and raises if truly missing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 14:14:58 +02:00
PozzettiAndreaandClaude Opus 4.8 62ab5659f3 Load Mesh: XHR upload with progress bar + debug log
Switch upload from fetch to XHR for upload progress, show a bar on the
node during upload. Top-level log to confirm the extension loads.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 14:09:34 +02:00
PozzettiAndreaandClaude Opus 4.8 892626791a Load Mesh drag-n-drop upload + inline View 3D; add Render Mesh Batch node
- Load Mesh: drop/upload meshes (reuses /upload/image, subfolder=3d, like
  the official Load Image) + a "view 3d" toggle that mounts the shared
  vtk.js viewer inline. Frontend source in tracked web_src/, copied to the
  generated web/js at prestartup.
- Render Mesh Batch: offscreen pyvista render per mesh, titled by name.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 14:01:02 +02:00
PozzettiAndrea 9ac0d8da23 ultimate inspector node 2026-06-16 13:26:54 +02:00
Andrea PozzettiandClaude Opus 4.8 5a426d195a Add Threshold Mesh by Field node (pyvista)
Deletes mesh faces/points by a scalar field value via pyvista's threshold filter,
reusing the existing trimesh<->pyvista bridge. Keep modes above/below/between/equal,
on vertex (point) or face (cell) data (auto-prefers face data), with all_scalars for
point fields. E.g. field='viewed', keep='above', value=0.5 -> keep only the faces
Pixal3D's view actually saw. Output mesh retains surviving fields + a summary.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 13:20:31 +02:00
PozzettiAndrea f878e7e5a0 process extrinsics/intrinsics input 2026-06-02 02:52:40 +02:00
PozzettiAndrea ffa0c24cf9 bump 2026-05-19 17:51:46 +02:00
PozzettiAndrea 85ebb3aff9 mmgpy new syntax 2026-05-18 22:57:09 +02:00
PozzettiAndrea 73b6f49b3a pin mmgpy on linux 2026-05-18 22:31:54 +02:00
PozzettiAndrea 2b41602297 upper bound on mmgpy 2026-05-18 22:04:04 +02:00
PozzettiAndrea ec356e6d4e docs: warn about experimental comfy-env install in README + pyproject 2026-05-16 21:38:45 +02:00
PozzettiAndrea aac15ea13a lazy import for bpy 2026-05-16 21:14:42 +02:00
PozzettiAndrea c7e9995b38 trigger ci (comfy-test v0.3.103) 2026-05-15 11:00:31 +02:00
PozzettiAndrea 9bed32edfd comfy-env 0.3.89 2026-05-15 08:54:22 +02:00
PozzettiAndrea 345492b4fc comfy-env 0.3.88 2026-05-15 07:16:44 +02:00
PozzettiAndrea 0426edb5d1 bump 2026-05-14 14:26:13 +02:00
PozzettiAndrea 7303ca1a08 bump 2026-05-13 12:57:52 +02:00
PozzettiAndrea 5b239c4a6e comfy-env 0.3.87 2026-05-13 09:47:00 +02:00
PozzettiAndrea 55d11bfc31 bump node ver 2026-05-11 11:42:46 +02:00
PozzettiAndrea f064f6653f new 2026-05-11 11:42:24 +02:00
PozzettiAndrea f1a3bb1e76 icon 2026-05-11 10:57:22 +02:00
PozzettiAndrea 7dd3ffc996 bump 2026-05-11 01:58:19 +02:00
PozzettiAndrea a8228b566f bump 2026-05-10 23:35:34 +02:00
PozzettiAndrea 66d7965b40 bump 2026-05-10 23:03:56 +02:00
PozzettiAndrea 0d2756b0d9 ver bump 2026-05-10 22:30:03 +02:00
PozzettiAndrea 2f495a9fc7 bump 2026-05-10 22:26:19 +02:00
PozzettiAndrea 3d03f29757 bump 2026-05-10 22:22:47 +02:00
PozzettiAndrea bd2d23978e bump 2026-05-10 22:04:07 +02:00
PozzettiAndrea d5240c61c8 ping 2026-05-10 15:11:44 +02:00
comfy-gpu-ci 88e81c15d1 remove non existent workflow name 2026-05-09 20:24:28 +02:00
comfy-gpu-ci 9d8a70bb44 moved workflows 2026-05-09 19:49:52 +02:00
Andrea Pozzetti fb2170cb12 Update pyproject.toml 2026-05-09 16:55:47 +02:00
PozzettiAndrea eead112dee bump comfy env 2026-05-09 15:21:01 +02:00
PozzettiAndrea 6909f92c84 bump comfy env 2026-05-09 13:18:46 +02:00
PozzettiAndrea c8e2dec61f bump comfy env 2026-05-09 11:42:45 +02:00
comfy-gpu-ci e8cea591e9 stop pinning numpy 2026-05-08 16:00:02 +02:00
comfy-gpu-ci c2d011bdec Flatten nodes/ into single env with pozzettiandrea channel 2026-05-08 15:49:31 +02:00