Skip to content

CI TESTING - #24

Draft
psavery wants to merge 291 commits into
masterfrom
3.0
Draft

CI TESTING#24
psavery wants to merge 291 commits into
masterfrom
3.0

Conversation

@psavery

@psavery psavery commented Jun 1, 2026

Copy link
Copy Markdown
Owner

No description provided.

alesgenova and others added 30 commits April 17, 2026 12:01
This fixes a bunch of these warnings that were popping up:

```bash
(   8.446s) [paraview        ]vtkDemandDrivenPipeline:675    ERR| vtkCompositeDataPipeline (0x63f818c46700): Input port 0 of algorithm vtkSmartVolumeMapper (0x63f817f9f7a0) has 0 connections but is not optional.
```

When data is attached, the visibility gets set correctly, so we
don't need to make any other changes, other than preventing the
sinks from attempting to render when no data is available.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This prevents some really annoying automatic resizing and moving
of my entire main window to another monitor (which is then unable
to be maximized).

It was just happening because the tilt angles list was too large and
not in a scroll area. This fixes the issue.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
We should show a slice instead of a volume by default if the
data is a tilt series. A volume doesn't make sense to do.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This was causing a deadlock. Instead, keep a list of nodes/pipelines
that need to be executed and do them in order.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This prevents it from taking up way too much main window space too,
which caused the same issue as selecting the tilt series earlier.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The input data wasn't available yet. We needed to get the transform properties
panel to wait for it to be available.

We also needed to go back to using the Tomviz `Python python;` for
getting the GIL. And we needed to get the output of the test
rotation centers correctly.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The master branch saves/restores the size of the edit dialogs. We
can do that here too so the user will see the dialog as the same
size as before. This is a nice feature to have.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
We now call the wrapper like we used to. But I don't think this will
fully work until state files work again...

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
psavery added 30 commits August 13, 2026 11:00
QVTKOpenGLNativeWidget grabs Qt::PanGesture, whose macOS recognizer
enables single-touch trackpad events. VTK maps those to left button
presses, so merely hovering drew rubber band rectangles in the 2D
views and dragged histogram markers. Drop the touch events on macOS.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
HDF5 is built without thread safety, but pipeline executors call it
from worker threads (shim files, port-data disk cache) while the GUI
thread loads, saves and decodes intermediates. Lock every H5ReadWrite
entry point with one recursive mutex.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Add ChimeraX-style Flat/Simple/Soft/Full buttons to the volume panel,
driving VTK's volumetric scattering, global illumination reach,
scattering anisotropy and opacity-derived normals. The individual
parameters move into a collapsed Advanced section, and new volumes now
start shaded on Simple rather than unlit.

Scattering still frames are bounded by measuring a cheap probe frame
and solving for the sampling that fits a time budget: an unbounded one
can run long enough for the OS to reset the GPU, which is fatal on
macOS and takes other applications with it. Camera moves render unlit,
which is both the fastest option and the closest match to the
scattering look.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
progress() left out the range start, so it was only correct for a range
beginning at zero.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The timeChanged handler that swapped time steps was lost in the legacy
pipeline removal, so playing an animation never changed the volume. The
color map now spans every step rather than rescaling to each one.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Our packages have no MP4 writer and .ogv does not play on macOS. Render
PNG frames offscreen and encode H.264 with the ffmpeg executable, with
resolution, frame rate and quality controls.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Gentle is matte, low contrast and casts no shadows, for noisy data where
Simple turns noise into glitter. The Shadows box switches volumetric
shadows off without leaving the selected preset.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
A playing time series swaps in a new image every frame, so keying on
identity sent it back to a probe frame every time and pinned it at
maximum coarseness.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
It also uploads the texture and compiles the shader, and extrapolating
that one-time cost made the volume look unaffordable.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
A probe frame is dominated by fixed overhead, so scaling it up turned
"the probe was slow" into "this needs 24 minutes a frame" and fired the
valve on volumes that render fine.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Sharpness settles at the fourth root of the budget, so this is a real
gain and still leaves 2x headroom under the tightest watchdog we ship
against.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The extra reach cost render time without changing the picture, so Full
was trading its own resolution for nothing.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
It is a backstop against a measurement wrong in the optimistic
direction, not against the overhead bias, which can only read
pessimistic.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Nothing told the user why the shadows had gone away, so the panel now
does.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The clip sweeps by slice index while axis aligned and by distance along
its normal when not, and all three visualizations can fade. Camera paths
are built from saved viewpoints, each leg with its own length and
easing, which a ParaView keyframe cue cannot express.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Visualization animations were owned by the dialog and lost on reload.
They now live in a registry beside the viewpoints, and the frame count
is saved too, since loading rebuilt the scene at a fixed 200.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
"Viewpoint 3" says nothing about which view it is. The picture is stored
with the viewpoint, since it cannot be regenerated without flying the
camera there and back.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Everything ran across the whole timeline, so nothing could be timed
against the camera. A leg is looked up through the same stops the camera
is paced by, so retiming it moves the visualization too.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Label maps carry a table of the labels present, each with a color and a
visibility flag projected onto the transfer functions, reconciled rather
than rebuilt so user edits survive a re-run. It is offered for any
volume whose values read as labels, since a segmentation loaded from a
file arrives as a plain volume.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The guard keyed on the volume property, so every curve edit threw the
estimate away. An animated curve never escaped its probe frame and
rendered every frame at maximum coarseness.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Capture the curve in the histogram editor at each end and the volume
dissolves between them. Matching point counts blend point by point,
others through a table sampled over one reference window.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Tracking the curve is sharper on average but changes sharpness between
frames, which reads as the picture breathing. Exporting sizes every
frame for the most expensive point of the animation.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
scipy grows the output box and zero-pads the corners it gains, so a
small alignment rotation adds slices that read as blank. Add an Expand
to Fit option to turn that off.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Authored animations were invisible and each module could hold only one.
A list now shows every animation with its own remove button, the camera
modes become one radio choice, and the per-type tabs collapse into a
property dropdown. Volume opacity morphs are keyframed per viewpoint.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
A label map renders through VolumeSink, so the helper offered it a curve
morph that would fight the label table every tick.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
A scene nothing has configured holds one frame, so Play rendered a
single still and the camera looked stuck. Apply the animation once on
creation too, since playback starting at zero announces no time change.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Capturing was one way only, with no way to see what a keyframe held.
Double clicking one puts its curve back, the counterpart of double
clicking a viewpoint.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
An adopted label table lives in the sink, so its colors and names were
lost on reload, and nothing recorded which animation drove the camera.
Loading also dereferenced the main window, which is null headlessly.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Replace the personal conda env path with the supported shared deployment
at tomviz_utils/bin/run-pyxrf-utils, built and verified on the HXN VDI
cluster.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Several read as design notes rather than API docs, repeating rationale
the implementation already carries at the point it applies.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants