OSG学习笔记25——屏幕坐标——相机坐标——世界坐标之间的转换

来源:互联网 发布:自己如何做淘宝店铺 编辑:程序博客网 时间:2024/05/24 07:34
osg::Vec3d TrackballRotate::screen2World(osg::Vec3 screenPoint)//将屏幕坐标转换到世界坐标
{
    osg::Vec3d vec3;
    osg::ref_ptr<osg::Camera> camera = viewer->getCamera();
    //osg::Vec3d vScreen(x,y, 0);
    osg::Matrix mVPW = camera->getViewMatrix() * camera->getProjectionMatrix() * camera->getViewport()->computeWindowMatrix();
    osg::Matrix invertVPW;
    invertVPW.invert(mVPW);
    vec3 = screenPoint * invertVPW;
    return vec3;
}
osg::Vec3d TrackballRotate::world2Screen(osg::Vec3 worldPoint)//世界到屏幕
{
    osg::Vec3d vec3;
    osg::ref_ptr<osg::Camera> camera = viewer->getCamera();
    osg::Matrix mVPW = camera->getViewMatrix() * camera->getProjectionMatrix() * camera->getViewport()->computeWindowMatrix();
    vec3 = worldPoint * mVPW;
    return vec3;
}

osg::Vec3d TrackballRotate::world2Camera(osg::Vec3 worldPoint)//世界转相机
{
    osg::Vec3d vec3;
    osg::ref_ptr<osg::Camera> camera = viewer->getCamera();
    osg::Matrix mV = camera->getViewMatrix();
    vec3 = worldPoint * mV;
    return vec3;
}
osg::Vec3d TrackballRotate::camera2World(osg::Vec3 cameraPoint)//相机转世界
{
    osg::Vec3d vec3;
    osg::ref_ptr<osg::Camera> camera = viewer->getCamera();
    //osg::Vec3d vScreen(x,y, 0);
    osg::Matrix mV = camera->getViewMatrix();
    osg::Matrix invertmV;
    invertmV.invert(mV);
    vec3 = cameraPoint * invertmV ;
    return vec3;
}
osg::Vec3d TrackballRotate::screen2Camera(osg::Vec3 screenPoint)//屏幕转相机
{
    osg::Vec3d vec3;
    osg::ref_ptr<osg::Camera> camera = viewer->getCamera();
    osg::Matrix mPW = camera->getProjectionMatrix() * camera->getViewport()->computeWindowMatrix();
    osg::Matrix invertmPW;
    invertmPW.invert(mPW);
    vec3 = screenPoint * invertmPW;
    return vec3;
}
osg::Vec3d TrackballRotate::camera2Screen(osg::Vec3 cameraPoint)//相机转屏幕
{
    osg::Vec3d vec3;
    osg::ref_ptr<osg::Camera> camera = viewer->getCamera();
    //osg::Vec3d vScreen(x,y, 0);
    osg::Matrix mPW = camera->getProjectionMatrix() * camera->getViewport()->computeWindowMatrix();
    vec3 = cameraPoint * mPW;
    return vec3;
}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 联想笔记本摄像头横屏调竖屏怎么办 pdf文件打开失败怎么办 pdf复制文字乱码怎么办 电子发票乱码了怎么办 超星尔雅挂了怎么办 电脑应用双击打不开怎么办 电脑控制面板打不开怎么办 转换器无法打开文件怎么办 电脑文件无法打开怎么办 手机上jpg打不开怎么办 脸上全是黄褐斑怎么办 容易发胖的体质怎么办 感冒后一直咳嗽怎么办 感冒咳嗽怎么办小窍门 到了减肥平台期怎么办 减肥遇见平台期怎么办 脚冻伤了痒怎么办 冬天脚后跟冻了怎么办 夏天脚冻了怎么办 导航软件删了怎么办 婆婆爱打孩子怎么办 乙肝婆婆带孩子怎么办 婆婆不会教孩子怎么办 婆婆不会带孩子怎么办 公婆枪带孩子怎么办 婆婆要带孩子怎么办 婆婆太惯孩子怎么办 三个月宝宝溢奶怎么办 孩子半夜咳嗽吐怎么办 中老年人转氨酶和血指高怎么办 孩子逆反心强怎么办 孩子学习逆反了怎么办 翼支付登陆不了怎么办 微波炉鸡蛋炸了怎么办 百部书挂了怎么办 高考物理零基础怎么办 装修后地面胶怎么办 装修地面上的胶怎么办 厂房顶楼太热怎么办 月经期吃柚子怎么办 经期吃了火龙果怎么办