osgManipulator.AntiSquish
是用于防止3D对象在旋转和缩放时拉伸和扭曲的工具。它主要用于处理鼠标拖动和交互式操作。在某些情况下,平移、缩放和旋转可能会导致对象变形。osgManipulator.AntiSquish
使用全局坐标系下的网格边框来解决这个问题。它尝试防止无意中的对象拉伸和扭曲。
创建一个osgManipulator.AntiSquish
对象:
osg::ref_ptr<osgManipulator::AntiSquish> as = new osgManipulator::AntiSquish;
然后将osgManipulator.AntiSquish
对象与要处理的模型一起传递给osgManipulator::TranslateAxisDragger
或osgManipulator::RotateSphereDragger
等对象。
osg::ref_ptr<osgManipulator::TranslateAxisDragger> translationDragger = new osgManipulator::TranslateAxisDragger;
translationDragger->setupDefaultGeometry();
translationDragger->setHandleEvents(true);
translationDragger->setActivationModKeyMask(osgGA::GUIEventAdapter::MODKEY_CTRL);
translationDragger->addTransformUpdating(as.get());
translationDragger->setAxis(osg::X_AXIS);
在此示例中,osgManipulator::TranslateAxisDragger
将osgManipulator.AntiSquish
作为一个转换更新器添加进来,以在操作中更新对象的位置。
osgManipulator.AntiSquish
支持下列属性: