I’ve found something. Basically, once a rotation plane almost aligns with camera (when the plane is flat), only the front part of the plane is accessible. So when you click and drag the lower (on screen) part of the rotation circle, it select the top part, making the selection kind of inverted.
It seems been that way for a long time, I got back to this change by @sebavan
If I change the maxDragAngle to Math.PI * 18 / 20; it improves the selection.
Quick question re the angle: Is it agnostic to the relative camera position? Suppose I rotate the x-axis 90 degrees in world space. Will the angle values always be 90 degrees, or will it sometimes be -90 depending on the camera position? Would be great if the former!
@mrlooi Angle is relative so it can be negative depending of the direction of the drag.
I don’t know if it’s possible to keep dragging when pointer is outside the canvas. I guess @PolygonalSun will have more insights
Thanks @Cedric ! @PolygonalSun keen to hear if dragging outside the canvas is doable in the gizmo class, or we’ll have to define our own window logic and pass to gizmo class e.g. via scene.pointer etc (which sounds like a painful task)
I’m not too familiar with that gizmo but my initial suspicion is that you would have to define your own logic and work from there but let me take a look and familiarize myself with it so that I can give you a better answer.
@Cedric In this line of code for the angle, is it possible to make it this.angle += cameraFlipped ? -angle : angle;
where cameraFlipped could be set to true in this block
Otherwise devs won’t be able to tell the actual angle
I think Dave had added this in an older commit but was later removed; I thought this was a good idea.