2 ms·
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 dr
by layoutIfNeeded 6y ago
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 https://en.wikipedia.org/wiki/3D_rotation_group
[2] https://tommyhinks.files.wordpress.com/2012/02/shoemake92_arcball.pdf https://tommyhinks.files.wordpress.com/2012/02/shoemake92_ar...
- IshKebab 6y agoI 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.