pfvmTrackball(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages
NAMEpfvmTrackball - Trackball module for pfvViewer
FUNCTION SPECIFICATION
#include <Performer/pfvm/pfvmTrackball.h>
pfvmTrackball::pfvmTrackball();
void pfvmTrackball::resetPivot();
PARENT CLASS FUNCTIONS
The OpenGL Performer class pfvmTrackball is derived from the parent class
pfvModule, so each of these member functions of class pfvModule are also
directly usable with objects of class pfvmTrackball. 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 pfvmTrackball 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);
Page 1
pfvmTrackball(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages
char* pfvObject::getName();
void pfvObject::setName(char*_name);
Since the class pfvobject is itself derived from the parent class
pfObject, objects of class pfvmTrackball 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 pfvmTrackball 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();
DESCRIPTIONpfvmTrackball is a pfvViewer navigation module that allows user to
examine a scene in a trackball fashion.
resetPivot() will first compute the overall bounds of the scene which
pfvmTrackball is navigating. Then it will update eye orientation so that
view vector points towards the center of scene's bounding box, and
lastly, it will adjust pivot distance such that pivot is placed exactly
at the center of scene's bounds.
Page 2
pfvmTrackball(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages
Usage:
Navigation with the pfvmTrackball module works as follows:
Use Middle mouse button to rotate around trackball's pivot. Use Middle
and Left Buttons together to roll, ie rotate around eye direction vector.
Use Middle and Right buttons together to move closer or farther away from
pivot. Use Middle button while pressing <shift> to translate viewpoint
and pivot wrt scene geometry.
Press the SPACE key to reset view position (pfvmTrackball calls
pfvView::autoPos), and also reset pivot (see above).
Press the SPACE key while holding down <shift> to reset pivot without
resetting view position.
Press ESC key to terminate application.
========
XML tags
========
<module>
<class>pfvmTrackball</class>
<data>
...
parameters
...
</data>
</module>
where parameters is one or more of the following:
<viewIndex>int</viewIndex> where int is the index of the pfvView which
will be navigated by this trackball. Note that currently, view index is
over-written by pfvmTrackball in its postConfig callback, and the
recommended way to associate pfvmTrackball modules to specific views is
to scope them accordingly.
<mouseBufferLen>int</mouseBufferLen> where int is the length of the
buffer the mouse will use for dragging, spinning, rolling, etc. Valid
range is from 1 to 15. The default is 3.
Page 3
pfvmTrackball(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages
=======
Scoping
=======
A pfvmTrackball module can be scoped globally or to a single view.
If scoped to a specific view, pfvmTrackball will respond to input over
that view only and will navigate eyepoint for that view.
If scoped globally, pfvmTrackball will respond to input over view0 (the
first view in pfvViewer's view-list), and will navigate its eyepoint.
Scoping pfvmTrackball modules to specific pfvWorlds is not supported.
By default, pfvmTrackball modules will automatically scope themselves to
the currently selected view (see pfvViewer::setCurView), or to view0 if
no pfvViews have yet been created.
NOTES
The source code for the pfvmTrackball Module is provided and can be found
in /usr/share/Performer/src/pguide/libpfv/viewer/modules/pfvmTrackball
For examples of pfvViewer XML configuration files, look at the sample
.pfv files in /usr/share/Performer/config.
SEE ALSO
pfvModule, pfvViewer, pfvXml
Page 4