OSG Camera:setViewMatrixAsLookAt

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不会有效果。

posted on 2020-01-12 23:54  bingbingzhe  阅读(1650)  评论(0编辑  收藏  举报