OSG Camera:setViewMatrixAsLookAt

孤街醉人 提交于 2020-01-13 00:00:50

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!