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.
I have been using this for a while and though others may find it useful too. The heavy work was done already by
PivotControls
, so I just wrapped the logic in a separated component for re-usability.Why
Is a common use-case to need a ThreeJS object to hold roughly the same dimensions in screen space no matter how far from the camera it is. This is tipically required when building custom gizmos, where the gizmos holds the same size in the screen as you zoom in/out.
What
Add
ScreenSizer
component to render objects that roughly hold the same size independently of camera distance.Move
calculateScaleFactor
from./src/web/pivotControls/index.tsx
to./src/core/calculateScaleFactor
as it doesn't have web dependencies and is a dependency ofScreenSizer
.Checklist
Demo
Link
screen-sizer.mp4