Skip to content

Conversation

gselzer
Copy link
Collaborator

@gselzer gselzer commented Oct 7, 2025

This is another addendum to #28 - this time adding support for lines. The GIF below shows a simple example I cooked up where clicking and dragging the sinusoid adjusts the phase to remain under the user's cursor.

fGFHNlUzYi

Lines are trickier than the Meshes added in #32 or the existing images/volumes because their appearance (namely their width) is defined in pixel space, not in world space (there's actually a similarity here to the Points node, which are at this point improperly handled, and would also be nice for a Text node, which I may want to implement soon). This means that we have to compute the intersection in canvas space.

This PR enables that by giving the Ray object access to the View capturing the user's event. I'm open to alternative designs here for sure.

I think that a follow-up PR would be good for adjusting the Points class to similarly perform its intersection checks in canvas space. We could even consider checking all intersections in canvas space, although I'd rather not redo that work 😅.

gselzer added 30 commits July 10, 2025 16:57
Defines how 2D view NDC are mapped to vectors in 3D space
In the pursuit of a single source of truth, let's resort to the
projection matrix (when/if possible?) for this.
For some reason, if I don't do this, the Matrix3D constructor RESURRECTS
some previous matrix I used in a previous test
Thanks to @tlambert03 for the suggestion. Could probably be cleaned up
further, but at least this is a step in the right direction!
Eventually, we'll want to compute grids ourselves on the model side, I
think, but for now this works
...man, this feels so good
Notably, this limits the type of pygfx-specific interaction available.
But we need a scenex version of this anyways - planning to implement the
beginnings of this with events
Still need to add that functionality to child nodes...somehow :)
The main thing to avoid here is a View layout larger than a canvas, as
that can cause problems in Pygfx
Some airport fixes coming around from me using my laptop screen for once
:)
Let's just keep wx out of the CI linting...
I just want the tests passing man
Currently being hit by not having this with wxPython
This is a clean solution for implementing "on-leave" behavior. In NDV's
case, it's needed to clear the hover info when the cursor leaves the
image.
scenex image/volume nodes have pixel centers at integer coordinates. Our
math needs to reflect that
Tried my best to explain via comments why I think it's the right choice
Also needed for ndv :)
Vectorized, Documented
Copy link

codecov bot commented Oct 7, 2025

Codecov Report

❌ Patch coverage is 86.85152% with 147 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.48%. Comparing base (4e431fb) to head (3c7838d).

Files with missing lines Patch % Lines
src/scenex/app/_qt.py 66.66% 43 Missing ⚠️
src/scenex/app/_wx.py 73.60% 33 Missing ⚠️
src/scenex/model/_canvas.py 82.17% 18 Missing ⚠️
src/scenex/app/_jupyter.py 88.67% 12 Missing ⚠️
src/scenex/app/_auto.py 89.33% 8 Missing ⚠️
src/scenex/adaptors/_pygfx/_view.py 72.22% 5 Missing ⚠️
src/scenex/app/events/_events.py 92.15% 4 Missing ⚠️
src/scenex/utils/controllers.py 95.12% 4 Missing ⚠️
src/scenex/adaptors/_pygfx/_canvas.py 93.02% 3 Missing ⚠️
src/scenex/model/_nodes/camera.py 94.11% 3 Missing ⚠️
... and 11 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #33      +/-   ##
==========================================
+ Coverage   80.72%   84.48%   +3.76%     
==========================================
  Files          42       54      +12     
  Lines        1520     2495     +975     
==========================================
+ Hits         1227     2108     +881     
- Misses        293      387      +94     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@gselzer gselzer mentioned this pull request Oct 10, 2025
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.

1 participant