OSG的setViewMatrixAsLookAt解析

来源:互联网 发布:淘宝的被骗了怎么办 编辑:程序博客网 时间:2024/06/05 22:45
首先,OSG里面的setViewMatrixAsLookAt函数是根据OpenGL里面的glulookat函数修改而来的,这里你最好可以先去看看http://blog.csdn.net/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();

原创粉丝点击