TAPESTRY: The Art of Representation and Abstraction
The Pointing Problem
What's it all about?
Look across the room or (better yet) out the window. Hold that pose. Imagine a line drawn along your line of sight. It stretches from your eye to some point at infinity. Along the way it intersects a variety of objects, and a whole lot of empty space. If someone stumbled upon you, staring out the window, they could guess the line of sight, but they would have a very difficult time guessing where you are looking (in 3D space) without asking you.This is the same problem faced by a 3D modeling program trying to get user input. Modern software makes extensive use of the mouse for user input. However common computer mice only input data in 2D, since they simply move a cursor around on a 2D computer screen (even when the image on the screen "looks" 3D, the cursor is moving in 2D. It's as if you took a photograph of the scene out the window and placed a dot on it. Is the dot on the window? in the room? outside somewhere? Is it "on" some existing object in the scene? or "at" some point in space, half-way between existing objects?
The ambiguity arises from the fact that the 2D point on the screen (or photo) corresponds to (matches) an infinite number of points in 3D space, all of which project onto the same 2D point.
Solutions
In strict mathematical terms, a 2D mouse CANNOT, by itself, provide 3D coordinates. Additional information must come from somewhere. Here are the best alternatives (most software allows you to use all of these in various combinations).
Keyboard InputIt may suprise you to learn that "the pointing problem" didn't exist before mice and other forms of screen input became common. In the "early days" programs were controlled almost exclusively through typed input, and you could easily type commands with (x,y,z) coordinates, completely avoiding the pointing problem.
Construction Planes
The most common solution at this time is to use some sort of auxiliary data (essentially an assumption) to
"disambiguate" (remove the ambiguity from) the click. Assuming that all points are actually points on a
2D surface in the model space is a simple and comfortable assumption. As long as the plane and the view vector are
not parallel, the view vector will eventually intersect the Construction (or "reference") plane, so each point on
the screen corresponds to a point in the construction plane.
Object Snaps
If there is existing data, and if you want to "point at" one of these points it is also possible to point
unambiguously. These kinds of pointing actions are usually characterized by the term "object snap"
(end-point, near-point-on-line, and near-point-on-plane being common examples).
Multiple View Points
While not quite a 'solution' there is one very powerful strategy that is often combined with the approaches above, and that is the use multiple viewpoints. In the same way that muli-view drawings can be used to reduce the ambiguity of geometrical representation, using multiple views can minimize modeling boo-boos. By seeing immediately where something has been drawn, or what points are being selected, many simple errors can be avoided. While performing complex operations it is often desirable to do so while simultaneously viewing the model from multiple view points.
Last updated: April, 2014