osgGA.MultiTouchTrackballManipulator是OpenSceneGraph中的一个多点触摸设备交互器,可以对场景进行旋转、缩放和平移等操作。
osgGA.MultiTouchTrackballManipulator继承自osgGA.MultiTouchManipulator,而osgGA.MultiTouchManipulator又继承自osgGA.StandardManipulator,下面是继承关系图:
osgGA.StandardManipulator
│
└── osgGA.MultiTouchManipulator
│
└── osgGA.MultiTouchTrackballManipulator
要使用osgGA.MultiTouchTrackballManipulator,只需要将其添加到Viewer或ViewerBase中即可。比如:
osgViewer::Viewer viewer;
viewer.setCameraManipulator(new osgGA::MultiTouchTrackballManipulator());
除此之外,osgGA.MultiTouchTrackballManipulator还有一些额外的方法,下面会一一介绍。
void setMinimumDistance(double distance)
设置最小距离。如果相机离目标点的距离小于这个值,相机将无法再向内移动。
参数:
distance
:最小距离值。void setMaximumDistance(double distance)
设置最大距离。如果相机离目标点的距离大于这个值,相机将无法再向外移动。
参数:
distance
:最大距离值。void setWheelZoomFactor(double factor)
设置缩放因子,用于通过滚动鼠标滚轮进行缩放操作。
参数:
factor
:缩放因子。void setTrackballSize(double size)
设置跟踪球的大小。跟踪球越大,相机围绕目标点旋转时的运动范围就越广。
参数:
size
:跟踪球大小。void setRotationMode(int mode)
设置旋转模式。旋转模式分为两种:
ROTATE_WITH_TWO_FINGERS
:使用两个手指旋转。ROTATE_WITH_ONE_FINGER
:使用一个手指旋转。参数:
mode
:旋转模式。void setZoomMode(int mode)
设置缩放模式。缩放模式分为两种:
ZOOM_WITH_TWO_FINGERS
:使用两个手指缩放。ZOOM_WITH_ONE_FINGER
:使用一个手指缩放。参数:
mode
:缩放模式。void setPanMode(int mode)
设置平移模式。平移模式分为两种:
PAN_WITH_TWO_FINGERS
:使用两个手指平移。PAN_WITH_ONE_FINGER
:使用一个手指平移。参数:
mode
:平移模式。void setRotateWithLeftButton(bool value)
设置是否使用鼠标左键来旋转。
参数:
value
:是否使用鼠标左键旋转。void setZoomWithLeftButton(bool value)
设置是否使用鼠标左键来缩放。
参数:
value
:是否使用鼠标左键缩放。void setPanWithLeftButton(bool value)
设置是否使用鼠标左键来平移。
参数:
value
:是否使用鼠标左键平移。void setRotateWithMiddleButton(bool value)
设置是否使用鼠标中键来旋转。
参数:
value
:是否使用鼠标中键旋转。void setZoomWithMiddleButton(bool value)
设置是否使用鼠标中键来缩放。
参数:
value
:是否使用鼠标中键缩放。void setPanWithMiddleButton(bool value)
设置是否使用鼠标中键来平移。
参数:
value
:是否使用鼠标中键平移。官方文档:http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a00710.html