Fix annotation hotspot sizing#8463
Merged
slimbuck merged 1 commit intoplaycanvas:mainfrom Feb 20, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes a mathematical error in annotation hotspot sizing by using view-space depth instead of Euclidean distance for scale calculations. The previous implementation incorrectly computed the 3D distance between camera and annotation positions, which caused hotspots to appear at different sizes depending on their screen position, even when at the same depth. The fix correctly uses the view-space Z coordinate (negated to get positive depth) which matches the projection matrix's coordinate system.
Changes:
- Updated
_updateAnnotationRotationAndScalemethod to accept aviewDepthparameter instead of computing Euclidean distance internally - Modified the caller to pass
-vec.z(view-space depth) which is already computed via view matrix transformation - Added clarifying comment explaining the use of view-space depth over Euclidean distance
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
willeastcott
approved these changes
Feb 20, 2026
mvaligursky
pushed a commit
that referenced
this pull request
Feb 24, 2026
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.
Summary
Details
Annotation hotspot sizing
_updateAnnotationRotationAndScalepreviously computed the Euclidean distance between the camera and annotation positions to derive world-space hotspot size. This is incorrect because the projection matrix operates in view space — a point off to the side at the same depth would have a larger Euclidean distance but the same projected size. The fix passes the view-space depth (-vec.zfrom the view matrix transform) directly, producing stable hotspot sizes regardless of screen position.