OpenSceneGraph中的osgViewer.PanoramicSphericalDisplay
是一个用于立体全景图的显示器类。它可以根据相机参数将立体全景图显示为用户可交互的、具有3D视觉效果的画面。
osgViewer.PanoramicSphericalDisplay
是作为场景图的子类来使用的,需要在场景图中添加一个该对象作为场景图路径的最后一个节点。在创建osgViewer
对象之前,需要先设置全景图的路径和大小:
osg::ref_ptr<osgViewer::PanoramicSphericalDisplay> display = new osgViewer::PanoramicSphericalDisplay;
display->setTextureFromImageFile("pano.jpg"); //设置全景图
display->setScreenSize(1024, 768); //设置屏幕大小
创建osgViewer
对象和osgViewer::Viewer
对象的过程与常规流程相同,唯一需要注意的是,需要将osgViewer::View::setSceneData
的参数设置为osgViewer.PanoramicSphericalDisplay
对象。
osgViewer::CompositeViewer viewer;
osg::ref_ptr<osgViewer::View> view = new osgViewer::View;
view->setUpViewInWindow(100, 100, 1024, 768);
view->setSceneData(display);
viewer.addView(view);
void setTextureFromImageFile(const std::string & fileName);
设置全景图路径,该路径需要指向一个立体全景图。该函数会从指定路径中读取图片,并将其封装为一个OpenGL纹理。
void setScreenSize(unsigned int width, unsigned int height);
设置屏幕大小,该函数通常由用户在构造函数中调用。设置后,OpenSceneGraph将使用该参数自动调整全景图的视口和相机参数,以便于在3D场景中进行交互。
void setVerticalFov(float vFov);
设置相机的垂直视角。默认值为60度。
void setProjectionCenterOffset(float x, float y);
设置相机的中心偏移量。这将改变相机焦点的位置,从而实现视觉上对当前场景的控制。setProjectionCenterOffset
函数接受两个float值作为参数,用于设置相机的位置偏移量。默认值为(0,0)。
class osgViewer::ViewerBase;
class osgViewer::CompositeViewer;
class osgViewer::View;
class osgViewer::PanoramicSphericalDisplay;
osgViewer.PanoramicSphericalDisplay
继承自osgViewer.View
类。
osgViewer.ViewerBase
osgViewer.CompositeViewer
osgViewer.View