feat: [Remote rendering 3.3d] sync camera to server on orientation widget - #143
Open
LKasianAnsys wants to merge 6 commits into
Conversation
LKasianAnsys
changed the base branch from
feat/3.3c-server-authoritative-cross-section-plane
to
main
September 24, 2026 15:53
LKasianAnsys
changed the base branch from
main
to
feat/3.3c-server-authoritative-cross-section-plane
September 24, 2026 16:18
LKasianAnsys
marked this pull request as ready for review
September 24, 2026 16:19
LKasianAnsys
force-pushed
the
feat/3.3c-server-authoritative-cross-section-plane
branch
from
September 24, 2026 18:05
bba6e39 to
1b79275
Compare
LKasianAnsys
force-pushed
the
feat/3.3d-sync-orientation-widget-to-server
branch
from
September 24, 2026 18:06
ce20712 to
a7e8afe
Compare
LKasianAnsys
force-pushed
the
feat/3.3c-server-authoritative-cross-section-plane
branch
from
September 24, 2026 18:12
1b79275 to
7ee86d1
Compare
LKasianAnsys
force-pushed
the
feat/3.3d-sync-orientation-widget-to-server
branch
from
September 24, 2026 18:14
a7e8afe to
38505b5
Compare
LKasianAnsys
force-pushed
the
feat/3.3c-server-authoritative-cross-section-plane
branch
from
September 28, 2026 17:09
b87c85f to
b9222fd
Compare
LKasianAnsys
force-pushed
the
feat/3.3d-sync-orientation-widget-to-server
branch
from
September 28, 2026 17:09
57b3a41 to
9065b20
Compare
This reverts commit 8bee63f.
LKasianAnsys
force-pushed
the
feat/3.3d-sync-orientation-widget-to-server
branch
from
September 29, 2026 18:49
9065b20 to
009f75f
Compare
This branch has not been deployed
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.
Issue
Resolves #21
Context
This is the last PR of 4 to move ownership of widget state from the client to the server.
Camera sync-back reports the settled browser camera to the server through the
sync_cameratrigger, and the server drops any report whose origin is notgesture.CameraGestureTrackersets that origin: a camera change counts as a user input only when it follows a mouse drag, a wheel event, or az/rkeydown. Everything else isprogrammatic, which is what stops a server-pushed camera from echoing back.Problem: clicking an orientation cube face moved the camera, but the report arrived as
programmaticand was dropped. The widget animates the camera inside wasm, outside the input the tracker watched.Change:
WasmRendererobserves the widget'sEndInteractionEventand callsCameraGestureTracker.noteWidgetGesture(), which opens the same 300ms input window as a wheel event or az/rkeydown.sync_camera.Requires a VTK upgrade to 9.7.0
This PR should be merged after VTK is bumped to 9.7.0, in #146.
On VTK 9.6.1 (current), proxying the widget to observe it breaks
add_dataset: the client allocates ids that collide with the next dataset's, so the new dataset does not render until a reload. This was encountered previously in VISOR, and resulted in a fix, available in 9.7.0.Copilot summary
This pull request adds support for attributing camera moves triggered by the orientation widget as user gestures, ensuring these actions are recognized and sent to the server rather than being dropped as programmatic moves. This is achieved by explicitly marking orientation widget interactions and updating the relevant gesture tracking and renderer logic. The changes also include comprehensive tests to verify the new behavior and clarify documentation.
Orientation widget gesture attribution:
noteWidgetGesturemethod toCameraGestureTrackerthat marks orientation widget interactions as user gestures, reusing the same timing and retroactive logic as other input types.noteWidgetGestureinVtkSceneso that the renderer can trigger gesture marking from widget events.WasmRenderer, registered an observer on the orientation widget'sEndInteractionEventto callnoteWidgetGesture, ensuring face clicks are correctly attributed to the user.Testing updates: