首页 > 其他 > 详细

OSG Camera:setViewMatrixAsLookAt

时间:2020-01-13 00:23:31      阅读:309      评论:0      收藏:0      [点我收藏+]

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

OSG Camera:setViewMatrixAsLookAt

原文:https://www.cnblogs.com/bingbingzhe/p/12185354.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!