Picking is the calculation of the intersection of a line and a mesh.
Mudbox uses different solutions in the following cases:
-
Screen space picking - This solution is used when one end point of the line is the same as the
camera position in the space. A buffer with the same size as the viewport is used in
this case. The scene is rendered to this buffer each time the camera position or a mesh
changes. The vertex/face index is encoded into the final pixel colour. When the user points to
a location on the screen Mudbox reads the color of the pixel at the position and decodes
the needed information. This makes screen space picking very fast once the buffer is rendered.
During sculpting the picking must operate on the original unchanged mesh, so the
buffer has to be re-rendered only when the stroke is finished. When a plane mirror is used
the mirrored line does not
fulfill the condition mentioned above, but in that case a cloned camera is used for the other side
and the buffer is rendered for that camera too.
-
Static mesh picking - In this case the start and end point of the mesh can be any 3D point in
the space but the mesh must be static as this method require a slow preprocessing pass of the
mesh. In this case a balanced sphere based tree representing the mesh is created to enable
fast checking. This solution is used during map extraction because a lot of
picking is required and the mesh is static.
Selection and Picking Classes
These classes are for used primarily for selecting points on a mesh, or objects in a scene.
The Picker class can be used for defining plug-ins that customize how objects are selected on a vector.
-
Picker - These objects are used as part of the map extraction process, to find points on one mesh that most.
-
ScreenSpacePicker - These objects are used to translate the user action of clicking in the view into a picked.
-
Selector - This base class represents any shape in 3d space. Used for selection.
-
SurfacePoint - Describes a location somewhere on the surface of a Mesh.