Page 1 of 1

Pick rotation center

Posted: Fri Dec 30, 2016 1:30 pm
by Aarie
Hey Daniel,
would it be possible to add a short-cut for selecting the rotation center? It would make the navigation of pointcloud much more efficient since changing the rotation point is done quite frequently and always selecting the small icon is somewhat cumbersome.

Or as an alternative, one could do it similiarly to meshlab, double-clicking in the pointcloud sets the rotation center.
Cheers.
Arie.

Re: Pick rotation center

Posted: Fri Dec 30, 2016 8:51 pm
by jedfrechette
Even better would be to rotate around the point underneath the cursor. That is, do a ray cast every time the user clicks the mouse to initiate a rotation and use the first point found as the rotation center. This method works really well for efficiently navigating around irregularly shaped objects. Of course, there needs to be a fall back in case the rotation is initiated when the cursor is not over an object in the scene, in which case the previous rotation center or some other sensible location can be used.

This change is also high on the list of UI improvements I would like to make when I've got some time to dive in to CC coding.

Re: Pick rotation center

Posted: Tue Jan 03, 2017 8:03 pm
by daniel
Yes, I think the 'double click' idea has already been proposed (we 'just' have to implement it ;). And the shortcut would also be very easy.

For the dynamic ray cast, I fear it would be too much CPU intensive. Or we would have to compute the octree for all entities, all the time... That could be an option of course.

Re: Pick rotation center

Posted: Tue Jan 03, 2017 10:19 pm
by jedfrechette
daniel wrote:For the dynamic ray cast, I fear it would be too much CPU intensive. Or we would have to compute the octree for all entities, all the time... That could be an option of course.
I think this would be interesting to test. In my experience with other applications that aren't backed by a spatial data structure like an octree, but still do this, getting a dynamic rotation center doesn't cause a noticeable slow down. This is even true for the ones with much worse overall viewport performance than CC. I'm not an OpenGL expert, but it seems like there might also be some clever tricks to achieve a similar behavior without doing an actual ray cast since we could live with coordinates that are close, but maybe not exact.

Speaking as someone who typically works with large mostly asymmetrical point clouds, having a static rotation center is almost unusable. Making it easier to move the center would certainly help, but it still adds up to a lot of extra clicks.

Re: Pick rotation center

Posted: Tue Feb 28, 2017 10:49 am
by Aarie
Hey,
as great as Jeds suggestion is, I would really appreciate a simple shortcut for changing the rotation center.
I've been doing a lot of work in CC recently and this would definetely help for now.
Cheers!

Re: Pick rotation center

Posted: Thu Mar 09, 2017 8:34 pm
by daniel
I've played with these concepts today and here what I managed to add:
- by default the 3D views are now in 'auto center picking mode' which will automatically set the point at the center of the screen as the rotation center
- otherwise this mode can be deactivated (there's a new checkable icon on the left side toolbar) and the rotation center can now be picked by double clicking anywhere on a 3D entity

I've updated the 2.9 beta version online. I'll let you play with it.

Re: Pick rotation center

Posted: Thu Mar 09, 2017 9:59 pm
by jedfrechette
Very cool. I'm just curious though why you opted for the center of the screen rather than the mouse cursor as the rotation point?

I haven't had a chance to test in CC yet, but from regularly using software that implements both behaviors I find rotation around the cursor to be much more predictable and user friendly. If rotation is around the center of the screen you often end up needing to do it in two steps: 1. Pan to pick rotation center. 2. Rotate scene. Doing step 1. is also very inaccurate unless there is a crosshair at the center of the viewport, and of course you don't know if you've missed until starting step 2.

Personally, the way I would rank 3D viewport rotation methods is:

Rotate around mouse > Rotate around fixed point > Rotate around viewport center.

Re: Pick rotation center

Posted: Fri Mar 10, 2017 6:23 am
by daniel
Oh it's mainly because in CC the rotation is always computed about the screen center (I mean that we consider the position of the cursor relatively to the screen center as if it was moving on the surface of a big sphere). If you set the center on any point, especially in a corner, and then start rotating the cloud from there, you'll get a very weird behaviour.

And frankly I already spent way too much (free) time on this. I won't be able to do this again before long.

Re: Pick rotation center

Posted: Sat Mar 11, 2017 2:40 pm
by Aarie
Daniel, awesome! Thanks so much for that.
Definitely makes life easier!