Manipulators

Published November 05, 2007
Advertisement
I was going to talk about planet rendering today, but since I have worked on 3D manipulators and navigation for the past couple of days, I decided to cover this topic while it's still fresh in my mind. The term Manipulator, which I believe was first coined in the OpenInventor library, refers to an interface widget designed to manipulate 3D content; i.e. to move, scale or reshape objects.

Many 3D modeling tools use four split windows as an interface to edit 3D content. Three windows show the model from viewpoints aligned with each of the primary axes, and the fourth window displays a fully rendered model. The three axis-aligned windows support simple interface widgets to move and scale objects perpendicular to the corresponding axis. In Geist3D, I decided to invert this concept and use only one editing window, but support more complex 3D manipulators that allow you to move and scale objects from any viewpoint.



The above image shows two manipulators designed to move and scale objects. Each constructs a symmetrical, mouse-sensitive editing region that covers the six faces of the bounding box containing the object. Due to the symmetry, the same interface is always accessible regardless of the viewpoint. The manipulator displayed at the top of the image is designed to rotate and translate an object. Dragging any one of the stippled planes translates the object along that plane while the bars on the edges rotate around the axis aligned with the bar. The bottom half of the picture shows the scale manipulator. Each of the tabs surrounding the object scales along a different axis.

The manipulators also support additional functions which are activated by pressing keys while dragging an editing region. For example, clicking on a face of the translating manipulator while pressing the Alt-key locks that axis so that the object can only be moved along a line rather than a plane. This feature is very useful when laying out dominos or building a brick wall.

The disadvantage of using this editing style is that it requires you to navigate the viewpoint into the right position in order to edit an object. However, once that skill has been mastered, it becomes much easier to manipulate very large environments by simply flying to the desired place and then edit in-place. Of course, a prerequisite is that it is easy enough to navigate through the environment. Geist3D therefore supports a number of ways to move around, including the traditional w,a,s,d keyboard style as well as flying and orbiting using the mouse pointer, buttons and wheel.

Judgment on the interface is still out, but I have become very effective in using it. But then, I am also the one who built it....
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement
Advertisement