Skip to content

Conversation

@gselzer
Copy link
Collaborator

@gselzer gselzer commented Oct 10, 2025

Another PR along the lines of #32 and #33...this time adding in text.

I've ignored a detailed bounding box + intersection implementation (because it's hard 😅), but I think this code is useful and worth discussion without it.

Like those other PR, requires merging #28 first (although this would be the easiest of them to merge without that PR)

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 :)
It's common to create a View and then add it to a canvas. In that case,
the old canvas may be garbage collected, causing a panic. We need a way
to set up a new renderer on a different canvas.

...There is likely a better way to do it though :)
Previously, the near clipping plane was set to the distance from the
closest point to the scene from the camera. This isn't good enough,
because that distance can become smaller when the camera orbits, causing
annoying clipping.

A near plane of 1 is much better, although we may want to decrease it
further later.
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 :)
Ignoring bounding boxes for now...that hard
@codecov
Copy link

codecov bot commented Oct 10, 2025

Codecov Report

❌ Patch coverage is 86.33426% with 148 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.08%. Comparing base (4e431fb) to head (fbdaf3a).

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 83.33% 16 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.00% 4 Missing ⚠️
src/scenex/imgui/_controls.py 0.00% 4 Missing ⚠️
src/scenex/model/_nodes/camera.py 92.15% 4 Missing ⚠️
src/scenex/utils/controllers.py 95.12% 4 Missing ⚠️
... and 10 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #34      +/-   ##
==========================================
+ Coverage   80.72%   82.08%   +1.35%     
==========================================
  Files          42       54      +12     
  Lines        1520     2461     +941     
==========================================
+ Hits         1227     2020     +793     
- Misses        293      441     +148     

☔ 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.

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