osgViewer.SphericalDisplay是OpenSceneGraph中的一个类,用于创建一个球形显示器,以便在球面上呈现场景。
使用SphericalDisplay类需要以下步骤:
#include <osgViewer/SphericalDisplay>
osg::ref_ptr<osgViewer::SphericalDisplay> spherical = new osgViewer::SphericalDisplay();
// 设置视口大小为800x600像素
spherical->setViewportSize(800, 600);
// 设置视场沿Y轴为60度
spherical->setVerticalFieldOfView(60.0f);
// 设置物体距离观察者的距离为1000单位
spherical->setDistance(1000);
// 设置观察者的目标点为场景中心点
spherical->setCenter(osg::Vec3d(0, 0, 0));
// 设置观察者的初始位置为(0,0,1000)
spherical->setEyePosition(osg::Vec3d(0, 0, 1000));
// 创建Viewer对象
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
// 将spherical设置为viewer的显示器
viewer->setSceneData(scene.get());
viewer->setDisplay(spherical.get());
viewer->realize();
viewer->run();
以下是可用于对SphericalDisplay对象进行设置的参数。
void setViewportSize(int width, int height)
设置视口大小。int getWidth() const
获取当前视口的宽度。int getHeight() const
获取当前视口的高度。void setVerticalFieldOfView(const double& fov)
设置垂直视场的角度。double getVerticalFieldOfView() const
获取当前视场设置的垂直视场角度。void setHorizontalFieldOfView(const double& fov)
设置水平视场的角度。double getHorizontalFieldOfView() const
获取当前视场设置的水平视场角度。void setDistance(const double& distance)
设置观察者与物体之间的距离。double getDistance() const
获取当前观察者与物体之间的距离。void setCenter(const osg::Vec3d& center)
设置观察者的目标点。osg::Vec3d getCenter() const
获取当前观察者的目标点。void setEyePosition(const osg::Vec3d& position)
设置观察者位置。osg::Vec3d getEyePosition() const
获取当前观察者的位置。