在QT上嵌入OSG窗口,然后支持如下功能:
1 如上图所示,在3D平面绘制坐标面,对整个平面进行放大、缩小、旋转、平移。
osg::Vec3 FXOSGPickHandler::screen2World(float x, float y)
{
osg::Vec3 vec3;
osg::ref_ptr<osg::Camera> camera = mViewer->getCamera();
osg::Vec3 vScreen(x, y, 0);
osg::Matrix mVPW = camera->getViewMatrix() * camera->getProjectionMatrix() * camera->getViewport()->computeWindowMatrix();
osg::Matrix invertVPW;
invertVPW.invert(mVPW);
vec3 = vScreen * invertVPW;
return vec3;
}
2 加载、卸载3D模型,并显示;
3 选中、去选中3D模型;
4 对3D模型进行平移操作;
整个操作是比较平滑的。