OSG的setViewMatrixAsLookAt解析

首先,OSG里面的setViewMatrixAsLookAt函数是根据OpenGL里面的glulookat函数修改而来的,这里你最好可以先去看看http://blog.youkuaiyun.com/ivan_ljf/article/details/8764737这篇文章,三个参数的意思通俗来讲就是相机在世界坐标的位置,相机对准物体的方向(相机可以对准整个三维空间任一一点),相机绕自己中心点旋转的方向(就是说相机可以绕中心轴旋转180度拍照,所以拍的照片可能有倒着的)。
但是你在OSG里面使用这个参数的时候,又使用了viewer->run();怎么修改相机参数都是无效的,即使加上

viewer->setCameraManipulator(NULL); 也是一样,因为在viewer->run(); 这个函数里会对场景中是否存在漫游器进行判断,如果没有漫游器,它会自己添加一个TrackballManipulator漫游器。所以会使参数无效。
再但是,OSG还提供了一种方法camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);就是
设置相机的坐标系,设置为ABSOLUTE_RF意味着相机的所有变换矩阵和观察/投影矩阵设置都是相对于世界坐标的,不会受到上级矩阵(不受父节点变换)的影响,所以可以使用view-run();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值