pfvmPicker(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages
NAMEpfvmPicker - Module for Scene Manipulation in pfvViewer Applications
FUNCTION SPECIFICATION
#include <Performer/pfvm/pfvmPicker.h>
pfvmPicker::pfvmPicker();
PARENT CLASS FUNCTIONS
The OpenGL Performer class pfvmPicker is derived from the parent class
pfvModule, so each of these member functions of class pfvModule are also
directly usable with objects of class pfvmPicker. This is also true for
ancestor classes of class pfvModule.
int pfvModule::getScope();
int pfvModule::getScopeIndex();
pfvObject* pfvModule::getScopeTarget();
int pfvModule::autoScope( int*scopeIndex );
void pfvModule::bindCallback(int which);
void pfvModule::unbindCallback(int which);
int pfvModule::getCBMask();
virtual void pfvModule::preConfig();
virtual void pfvModule::postConfig();
virtual void pfvModule::enterView(pfvView*v);
virtual void pfvModule::exitView(pfvView*v);
virtual void pfvModule::enterWorld();
virtual void pfvModule::exitWorld();
virtual void pfvModule::sync();
virtual void pfvModule::frame();
virtual void pfvModule::preCull(pfvDispChan*chan);
virtual void pfvModule::postCull(pfvDispChan*chan);
virtual void pfvModule::preDraw(pfvDispChan*chan);
virtual void pfvModule::postDraw(pfvDispChan*chan);
virtual void pfvModule::overlay(pfvDispChan*chan);
int pfvModule::bindKeys(char*keys);
int pfvModule::unbindKeys(char*keys)
char* pfvModule::getEventMask()
void pfvModule::setEventMask(char* str);
virtual int pfvModule::handleEvent(int evType, char key);
uint64_t pfvModule::getViewMask();
Since the class pfvModule is itself derived from the parent class
pfvobject, objects of class pfvmPicker can also be used with these
functions designed for objects of class pfvobject.
virtual int pfvObject::parseXml(pfvXmlNode*xml);
virtual int pfvObject::setXmlField(pfvXmlNode*xml);
char* pfvObject::getName();
void pfvObject::setName(char*_name);
Page 1
pfvmPicker(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages
Since the class pfvobject is itself derived from the parent class
pfObject, objects of class pfvmPicker can also be used with these
functions designed for objects of class pfObject.
void* pfObject::operator new(size_t);
void* pfObject::operator new(size_t, pfFluxMemory *fmem);
void pfObject::setUserData(void *data);
void pfObject::setUserData(int slot, void *data);
void* pfObject::getUserData(pfObject *obj);
void* pfObject::getUserData(pfObject *obj, int slot);
int pfObject::getNumUserData();
Since the class pfObject is itself derived from the parent class
pfMemory, objects of class pfvmPicker can also be used with these
functions designed for objects of class pfMemory.
void* pfMemory::getData(const void *ptr);
pfType * pfMemory::getType();
int pfMemory::isOfType(pfType *type);
int pfMemory::isExactType(pfType *type);
const char * pfMemory::getTypeName();
int pfMemory::copy(pfMemory *src);
int pfMemory::compare(const pfMemory *mem);
void pfMemory::print(uint which, uint verbose, char *prefix,
FILE *file);
int pfMemory::getArena(void *ptr);
void* pfMemory::getArena();
int pfMemory::ref();
int pfMemory::unref();
int pfMemory::unrefDelete();
int pfMemory::unrefGetRef();
int pfMemory::getRef();
int pfMemory::checkDelete();
int pfMemory::isFluxed();
void * pfMemory::getArena();
int pfMemory::getSize();
DESCRIPTIONpfvmPicker is a pfvViewer module that allows user to manipulate scene
object through mouse and keyboard input.
pfvmPicker implements its functionality through the use of: a
pfvInputMngrPicker object, a specialized selector (derived from class
pfvSelector) and two specialized interactors (derived from class
pfvInteractor). For more info on these classes see the respective man
pages.
Selection and Manipulation:
Left clicking on scene geometry causes picked geode to be selected.
Page 2
pfvmPicker(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages
Selected geometry will appear highlighted, and a wireframe box will
appear around selected geometry, visualizing its bounds.
Left clicking on selected geometry allows selection to be rotated in a
trackball fashion. Holding down <shift> and left clicking on selected
geometry allows selection to be rolled (ie rotated around view axis).
Right clicking on selected geometry allows selection to be translated
along the xy plane. Holding down <shift> and right clicking on selected
geometry allows selection to be translated along the plane parallel to
the screen (near plane).
Some numeric keypad keys may be used to change current selection:
Numeric key-pad '8' selects the parent node of the currently selected
node. Numeric key-pad '2' selects the first child of the currently
selected node (if selected node has children). Numeric key-pads '2' and
'3' select the previous and next sibling of the currently selected node
if selected node has siblings. Note that these keys will cycle through
all siblings by wrapping back to first child from the last child, and
vice versa.
Note: NumLock may need to be switched ON for numeric keypad keys to be
detected.
Left clicking somewhere in 3d scene where no geometry is picked causes
current selection to deselect.
Also, key 'd' deselects currently selected geometry.
Undo and Redo:
pfvmPicker supports unlimited undos and redos. Pressing the 'u' key will
undo the last action, pressing the 'r' key will redo the last undone
action. Selections and deselections are undoable actions, as well as all
manipulation actions (translations, rotations).
Finally, pfvmPicker will terminate the application when the 'ESC' key is
pressed.
========
XML tags
========
The current implementation of the pfvmPicker module cannot be configured
through XML file nor through API calls.
Page 3
pfvmPicker(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages
=======
Scoping
=======
The pfvmPicker should be scoped to a pfvView when multiple views are
configured. If scoped globally, pfvmPicker will automatically scope
itself to the first view in pfvViewer's view list. Scoping pfvmPicker to
pfvWorlds is not (yet) supported.
For examples of pfvViewer XML configuration files, look at the sample
.pfv files in /usr/share/Performer/config.
NOTES
The source code for the pfvmPicker Module is provided and can be found in
/usr/share/Performer/src/pguide/libpfv/viewer/modules/pfvmPicker
SEE ALSO
pfvPicker, pfvSelector, pfvInteractor, pfvInputMngrPicker, pfvModule,
pfvViewer, pfvXml
Page 4