[HN Gopher] 3D Rotation Design
       ___________________________________________________________________
        
       3D Rotation Design
        
       Author : fisian
       Score  : 87 points
       Date   : 2024-11-06 09:07 UTC (13 hours ago)
        
 (HTM) web link (www.mattkeeter.com)
 (TXT) w3m dump (www.mattkeeter.com)
        
       | esperent wrote:
       | Interesting but lacking some information. First up, of course,
       | most people are familiar with rotating the _camera_ rather than a
       | single object. This is how most 3d viewers work, even if the
       | orbit point is locked to the center of an object (e.g. in a 3d
       | product display). So it 's important to specific which we're
       | talking about in an introductory article on 3d rotation methods.
       | 
       | But, ok. We're talking about schemes to rotate a single object
       | rather than the camera.
       | 
       | The turntable controls they talk about are a special case of
       | gimbal controls where we lock rotation to one or two axes. But in
       | my personal experience, when it's two or three axes people still
       | call it gimbal controls whereas turntable controls is rotation in
       | a single axis (as if on a turntable, hence the name). But then
       | again, 3d terminology is so mixed up across different fields that
       | maybe some people have only heard the two axes version called a
       | turntable. Not a big deal, but why no mention at all of gimbal
       | controls?
       | 
       | Then, trackballs. In my experience, when it's limited to a single
       | hemisphere of rotation, these are called arcball controls.
       | Trackballs are supposed to emulate a trackball mouse which don't
       | have this limitation.
       | 
       | And finally, no mention at all of the dreaded gimbal lock (where
       | two of axes end up overlaid on each other and the controls loses
       | a degree of freedom), which is a major reason for choosing one
       | type over another.
       | 
       | Overall, not an amazing article. I checked it again to see if I
       | missed anything and realized it's a blog post for some app - so,
       | basically an ad - which probably explains the lack of effort.
        
         | xeonmc wrote:
         | Gimbal lock purely a consequence of implementation detail,
         | completely independent from the three modes of interaction.
         | Otherwise, I agree with the rest of your comment.
        
         | jobigoud wrote:
         | Yeah the very first comparison in the article between Blender
         | and Mesh lab is mixing camera rotation vs object rotation.
         | 
         | It's also missing the absolute most natural user interface for
         | rotating objects, which is when you are in VR or with hand
         | tracking. If you have only one hand controller you attach the
         | object to it so you can simply inspect it under any angle, and
         | if you have two-hand tracking you can have translation, scale
         | and rotation based on a virtual segment between the hands. The
         | little Leap motion device worked like this it was very natural.
        
         | adrian_b wrote:
         | > Trackballs are supposed to emulate a trackball mouse which
         | don't have this limitation.
         | 
         | Some systems implement a trackball UI that behaves like a real
         | trackball, i.e. it also has inertia, so you can give an impulse
         | towards a direction and the 3D model will continue to rotate
         | after you no longer click the mouse button, until you stop the
         | rotation.
         | 
         | I do not remember using any trackball UI where the rotation was
         | limited. When the trackball UI did not have inertia, than you
         | would need to do 3 pushes for a rotation over 360 degrees or 2
         | pushes for a rotation over 180 degrees, but you could still
         | reach any angles.
        
       | moffkalast wrote:
       | I never understood why most CAD software prefers the tumbler
       | style rotation, it's so completely horrid to use.
       | 
       | I guess lots of people (somehow) got used to it without knowing
       | there's an alternative?
        
         | the__alchemist wrote:
         | It's more flexible. For example, compare the "Turnable" and
         | "Tumbler" rotations in the article; you will be able to set
         | arbitrary orientations in the latter, but not the former.
        
           | moffkalast wrote:
           | More like you are accidentally forced into arbitrary
           | rotations with the tumbler, because of how moves correspond
           | to inconsistent axes depending on the way you're turned.
           | 
           | Honestly I don't see that supposed failing as much of a
           | downside really, because A) most of those extra rotations
           | don't change the camera view in any meaningful way, they just
           | roll it, B) you can typically rotate the object on top of the
           | camera if you really need these rotations, and C) it makes
           | control much more accurate.
        
             | the__alchemist wrote:
             | I think the "turnable" approach would be fine if it
             | included an extra roll control. Probably preferable due to
             | the ease you point out; this overcomes the limit you point
             | out.
             | 
             | My personal preference, and how I've set up my
             | visualization engine (For chemistry vis projects and
             | similar): Move the camera; not the object. FPV controls,
             | plus a roll axis, with crouch/jump for up/down. Works best
             | with a videogame controller, but FPS standard + Q/E is fine
             | too! Full control, and intuitive if you've played those
             | sorts of games. This is full 6 axis.
        
         | Karliss wrote:
         | I can't defend tumbler. But with regards to turntable vs non-
         | turntable (which if you are unlucky might default to tumbler),
         | I have some ideas. In general I feel more comfortable with
         | turntable mode (and have used it in Blender, game engines, and
         | robotics software). When I started learning CAD I initially
         | switched from the default trackball to turntable as well but
         | after a while I switched back to trackball.
         | 
         | Turntable makes most sense when there is well defined and
         | easily identifiable up direction like when you are working with
         | 3d environments or humanoid models. With mechanical parts that
         | you make in CAD software up direction isn't always as clear,
         | you can easily forget where the up was if you don't pay
         | attention to axis gizmo. Plenty of parts can have critical
         | features on all sides, and the preferred "up" direction in most
         | useful views for the part doesn't necessarily match with the up
         | direction of whole assembly.
         | 
         | Turntable view has one downside which the article didn't
         | mention - lack of "state independence". The behavior of mouse
         | movement depends on the angle from which you looked at the
         | start. This can result in situations where you meant to rotate
         | around one axis but it rotates around different one or the
         | rotation happens in opposite directions. Tumble and trackball
         | don't have this problem as rotation isn't affected by global
         | axis direction.
         | 
         | One more potential factor is use of 3d mice. I haven't used one
         | myself, but I would assume that it somewhat avoids the most
         | confusing aspects of non turntable modes. Thus in the best case
         | reducing the need to improve default behavior for regular mice,
         | in the worst case hacky 3d mice integration depending on the
         | chosen rotation style which might brake if something other than
         | tumbler is chosen (I really hope that no 3d software does this,
         | but I lack the experience to confirm this).
         | 
         | This makes me wonder has any software tried dynamic turntable.
         | That is turntable where the role of z axis is replaced by
         | whichever axis was closer to up at the start of mouse drag.
         | Always one of the 3 axis, not the local rotation up direction.
        
         | MaxikCZ wrote:
         | I love tumbler and never want to go to anything else. After a
         | while your intuition starts to cooperate with what path your
         | hand takes to get desired rotation. I can rotate into any
         | orientation without thinking about it in a single sweep,
         | including how my camera is rolled. Its honestly very powerfull,
         | albeit hard to get used to for the first time.
        
         | IshKebab wrote:
         | It's definitely harder to learn, but it's way more powerful.
         | CAD is aimed at power users.
        
       | stogot wrote:
       | I used to spend hours reading source code for 3D designs such as
       | this. And sometimes having to reverse it. I like these systems a
       | lot
        
       | xeonmc wrote:
       | For freely rotated objects, trackball rotation is only ever
       | appropriate for touch screens, mice should use tumbler instead so
       | that you don't have to pay attention to the absolute position of
       | the cursor.
        
         | MaxikCZ wrote:
         | Even on mobile it struck me immediatelly that I cant rotate the
         | trackball example as much as Id like without trying again.
        
       | phkahler wrote:
       | I once implemented tumbler, but always used the starting position
       | and current position to determine the rotation. This make it
       | behave the same way when the mouse follows a straight path, but
       | also makes it path independent.
        
       | dllu wrote:
       | > There's another, more subtle critique of this system: it lacks
       | path independence. This means that if you start and end a drag
       | with your mouse at a particular location, the rotation will
       | depend on the path that your mouse took.
       | 
       | Actually, when I accidentally tumble models with that kind of UI,
       | I just drag it in a circle until it's right side up.
        
         | tanvach wrote:
         | I accidentally found how to do this while using a solid
         | modeling software and use it quite a bit. I don't see a formal
         | name for this maneuver, or anyone teaching it. 'Gimbal
         | tumbling' is the closest description.
        
         | IshKebab wrote:
         | Yeah I will fully admit that "draw circles to yaw" is not
         | intuitive or discoverable, but it is quite convenient when you
         | _have_ learnt it. I 'd definitely prefer tumbler over trackball
         | because of this.
         | 
         | But turntable is clearly far superior to the others. Unless you
         | _really_ need to yaw the model then stick with that.
        
       | xg15 wrote:
       | I wonder if better rotation modes would be possible with
       | multitouch inputs, I.e. using two "touch points" instead of one.
       | Then you could span a plane between the two points and the origin
       | and use this to better derive the user's intention which axes
       | should be rotated.
        
         | pfranz wrote:
         | This is unrelated to viewport rotation, but I've always wanted
         | to play with multiple inputs for posing characters. There was
         | always a lot of interest in "full body IK" which seems like a
         | similar idea to me. Both IK and FK imply there's an anchor
         | point and your single (mouse) input is posing the model. With
         | two inputs it would be more like posing a puppet where one hand
         | anchors and the other moves. You would still have to figure out
         | how to deal with interpolation between poses, but I would
         | imagine posing would be more intuitive.
        
       | W0lf wrote:
       | Isn't arcball rotation the gold standard for rotating 3d objects?
        
       | gwking wrote:
       | The trackball implementation appears to have a numerical bug in
       | it. Occasionally (on mac safari at least) the rendering will be
       | blank white. If you happen to let go of the mouse during that
       | frame, then it gets permanently stuck and requires a page
       | refresh. Seems like it might be a divide by zero due to a small
       | cursor delta or something along those lines.
        
       ___________________________________________________________________
       (page generated 2024-11-06 23:01 UTC)