Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix projection bug when dragging in default (viewport) plane #16203

Merged
merged 2 commits into from
Feb 24, 2025

Conversation

Propolisa
Copy link
Contributor

Forum discussion here: Mesh drifts towards camera in default PointerDragBehavior axis mode

The issue is that in the default mode (when no custom drag axis or plane normal is provided), the drag plane was being aligned by making it "look at" the camera's position. This meant that instead of being parallel to the camera’s clip (screen) plane, the drag plane always faced the camera. Because perspective cameras cause rays to converge, dragging objects off-center led to an inconsistent intersection between the pointer ray and the drag plane—resulting in the mesh drifting toward the camera.

This PR just explicitly aligns the drag plane with the camera’s forward direction (i.e., parallel to the view plane) rather than having it face the camera's position.

@bjsplat
Copy link
Collaborator

bjsplat commented Feb 22, 2025

Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s).
To prevent this PR from going to the changelog marked it with the "skip changelog" label.

@bjsplat
Copy link
Collaborator

bjsplat commented Feb 22, 2025

@bjsplat
Copy link
Collaborator

bjsplat commented Feb 22, 2025

@bjsplat
Copy link
Collaborator

bjsplat commented Feb 22, 2025

@RaananW RaananW requested a review from AmoebaChant February 23, 2025 18:19
Copy link
Member

@RaananW RaananW left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Waiting for reviews, you can make sure formatting passes by running npm run format:fix (it is probably the if line, that needs to be

if (this._scene.activeCamera) {

@bjsplat
Copy link
Collaborator

bjsplat commented Feb 24, 2025

@bjsplat
Copy link
Collaborator

bjsplat commented Feb 24, 2025

@AmoebaChant AmoebaChant merged commit 0d200fb into BabylonJS:master Feb 24, 2025
15 checks passed
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.

5 participants