Hacker News new | past | comments | ask | show | jobs | submit login

Yes, the problem with this method is that the final orientation depends on the path you cursor takes, i.e. dragging up 100px and left 100px is different than dragging left 100px and up 100px...

Of course, that's just the way 3D rotations work: SO(3) [1] is non-Abelian. However, doing this with an input device that has one too few degrees of freedom makes it very awkward to use.

When you have a well-defined "ground" plane in your scene, then turntable-style rotation is the most intuitive, where horizontal dragging rotates around the ground plane's normal, while vertical dragging changes the azimuth angle. This makes the final orientation independent of the cursor's path, on the other hand, orientations where the ground plane would be skewed are unreachable.

Some people swear on Ken Shoemake's ARCBALL [2] technique, but I personally found it less intuitive than the turntable method (although I might have implemented it incorrectly ¯\_(ツ)_/¯).

[1] https://en.wikipedia.org/wiki/3D_rotation_group

[2] https://tommyhinks.files.wordpress.com/2012/02/shoemake92_ar...




I agree, turntable is easily the most intuitive method. How often do you want to view an object not horizontally? Almost never.

With non-turntable rotation you always end up having to make little circles with your mouse to rotate the view horizontal again.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: