setViewMatrixAsLookAt:设置viewMatrix,相当于怎么摆放相机
参数说明:void setViewMatrixAsLookAt(const osg::Vec3d& eye,const osg::Vec3d& center,const osg::Vec3d& up);
eye:表示相机的位置,
center:表示相机看的那个中心点,
up:表示哪个方向是正方向
eye和center这两个点相减就是viewdireciton
正常情况下eye点要在center点后面才能看到图像。
camera->setViewMatrixAsLookAt(osg::Vec3f(0.0f, -10.0f, 0.0f), osg::Vec3f(0.0f, 0.0f, 0.0f), osg::Vec3f(0.0f, 0.0, 1.0f));
因为OSG是右手坐标系,x轴向右,Z轴向上,
但是如果把up点改为-1,
camera->setViewMatrixAsLookAt(osg::Vec3f(0.0f, -10.0f, 0.0f), osg::Vec3f(0.0f, 0.0f, 0.0f), osg::Vec3f(0.0f, 0.0, -1.0f));
那么坐标系会是下面的样子
另外如果viewer设置了漫游器,那么这些函数不会起作用:
m_viewer->setCameraManipulator(m_manipulatorManager);
这样调用setViewMatrixAsLookAt不会有效果。
来源:https://www.cnblogs.com/bingbingzhe/p/12185354.html