Chore/fix scene in 2d - #7
Merged
Merged
Conversation
Enhances 3D interaction by implementing zoom-independent selection radii and improving depth-sorting for mouse picking. - Implements adaptive collision sizing based on camera film size - Prioritizes control points during depth-sorted raycasting - Fixes camera panning by converting local movement to world space - Adds safety checks to prevent infinite hitboxes in micro-segments - Introduces zoom_changed event to synchronize visuals and collisions
Adjusts camera clipping planes to resolve depth precision issues and improves selection accuracy by prioritizing 2D proximity for points. - Reduces clipping limits to mitigate Float32 precision errors - Implements screen-space distance sorting for overlapping pick targets - Adds safety checks for zero-length collision tubes - Ensures drag finalization when mouse focus is lost - Synchronizes zoom events with animation state transitions
Restructures mouse input handling by extracting picking and 3D projection logic into dedicated picker and constraint modules. - Introduces RayPicker for camera-to-world object selection - Introduces ConstraintManager for 3D axis and plane constraints - Decouples mathematical projection logic from the mouse controller - Updates view components to integrate with the new modular architecture
Ludofr3
marked this pull request as draft
May 18, 2026 12:19
Ludofr3
marked this pull request as ready for review
May 19, 2026 08:43
mstauffe
approved these changes
May 19, 2026
mstauffe
left a comment
Collaborator
There was a problem hiding this comment.
Nice PR, just a few questions.
Co-authored-by: mstauffe <maxime.stauffert@cea.fr> Signed-off-by: Ludo.fr3 <91745642+Ludofr3@users.noreply.github.com>
…l-Geometry/bot into chore/fix-scene-in-2d
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RayPickerclass inbot/control/picker.pyto isolate collision management and mouse selection.ConstraintManagerclass inbot/math/constraints.pyto handle projection mathematics and axis restrictions.CurveAppwithinbot/view/scene.py._on_zoom_changedevent to dynamically adjust the size of collision zones based on the camera's zoom level.axis_constraint_mask) to3(XY plane) instead of 7.except (TypeError, ValueError):) inbot/viewer/viewer.pyto prevent crashes.List,Dict,Optional,Any) to the refactored files.sorry, PR is more important than I thought 😅