# What is the most intuitive way to rotate an object in 3D space

I am developing an 3D editor. I think showing 3 rings around the object to manipulate should be most intuitive because you have a feeling of "handling" it. Hovering one of the rings highligts it to indicate that you rotate the object around it by mouse down.

The arrows move the object in space and should not rotate with the object! I think this is needed because rotating these arrows with the object implies that the user (definitely) looses his orientation in 3D space! Many programs do it but it feels very akward!

Video

In general I think only rotating around one axis at a time is much more intuitive instead of using x,y mouse coordinates to rotate around two axes at a time. In my opinion it is much more intuitive using grippers as you know it from 2D graphic applications.

But there are different solutions to rotate the object in 3D space.

1. you can rotate around fixed object axes (like in the three.js editor)
2. you can rotate around the object axes (which implies that you rotate around the already other rotated axes!)
3. a) user selects a plane b) user rotates around it's normal
4. other solutions?

I think this is a big problem in 3D editing in general. There isn't a standard solution in CAD programs/3D editors.

I want the most intuitive way so that even my mother can use it. I am not searching for the most effective/fastest way to manipulate objects in 3D space.

Update: The three.js Editor does a good job but I am still in research of a more intuitive solution. It is hard to undo rotations. Maybe showing degrees at the rings is a solution.

Many people found Spore's editors to be quite intuitive to use. It had two basic orientation modes:

First was similar to your method, an object had 3 pull rings to rotate it around each degree of freedom. This was used for items that were free in space (boxes, etc for building buildings and vehicles)

Second, some objects had only one pull-ring for bank angle and had an "aim target" ball little bit ahead of the object. You dragged target with mouse in screen space and the object automatically oriented itself toward it. This was used for parts that were "attached" to the surface of another object that had fewer natural freedoms.

Yes, this is a problem in general, because you need to reproduce 3-dimensional space on 2-dimensional screen. There is no perfect soultion, yet in this case you should follow - in my opinion - the most popular pattern:

While viewing:

• use dragging up/down for rotating up/down around the central point of screen
• use dragging left/right for rotating left/right around the central point of screen
• use mouse wheel for zooming in/out (you can also provide a slider for more precise zooming).
• use click (or double click) to select an object and bring it to the center point for rotation
• use a modifier key for panning up/down/left/right while dragging.

Do not use just following cursor for that (except situation when you just need rotating - because you will still need cursor for selecting objects and other on-click interactions).

While rotating object use a modifier key (or a switch) to rotate it, but follow the same rule, just setting the pivot point in the center of the object. You can use some other modifier to move object around (but only within currently visible 2D plane).

For both, provide a visual cue showing which direction does what (a sphere with arrows around it).

• I think using grippers (rings/arrows) to edit is much more intuitive. You don't need any shortcut keys. My problem is also not about the viewing (there exist many useful solutions) but about the editing of objects. Commented Feb 7, 2014 at 12:14
• I also think rotating only around one axis at a time is much more intuitive. Rotating around two axes at one time confuses the user very fast. Commented Feb 7, 2014 at 12:16
• This is an alternative - but selecting an axis itself will be not intuitive for the user (conclusion about this inability to rotate object in this 3D space comes after some trials and errors, and is not even understood then - so the need of selecting an axis won't be clear to him from the beginning. And it's ok to use grippers, but seeng the pseudo-3-dimensional space reproduced on 2-dimensional screeen will always make user confused why he cannot operate it in 3D. But anyway, this is my point of view. As I said, this is a complicated topic because of just this 3D and 2D spaces clash. Commented Feb 7, 2014 at 12:23
• i think using a standard axis in the middle ob the object which is predefined (as in picture/video) for rotation is intuitive. Yes you can't rotate arbitrary, but for usability this is a must have. As i mentioned In need an easy to understand solution. Commented Feb 7, 2014 at 12:34