OSG学习笔记25——屏幕坐标——相机坐标——世界坐标之间的转换
2017-04-13 16:28
1191 查看
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;
}
{
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;
}
相关文章推荐
- OSG学习笔记16 - 对点选物体平移(鼠标点选物体)(物体随鼠标移动)(屏幕坐标转世界坐标)
- 【OPEN GL】学习笔记之一:顶点坐标到屏幕坐标之间的转换
- ogre 世界坐标、本地坐标、屏幕坐标之间的转换
- Unity世界坐标与屏幕坐标之间如何转换
- 像素坐标、相机坐标、世界物理坐标之间的坐标转换条件。
- osg 屏幕坐标和世界坐标转换
- OpenGl学习笔记3——屏幕坐标(2维)转化为世界坐标(3维)
- NGUI 与世界坐标与屏幕坐标之间的转换的帮助类
- 屏幕坐标到opengl世界坐标转换
- Windows 8 学习笔记(八)--各种流之间的转换
- ogre世界坐标鱼屏幕坐标相互转换
- Quake3平面Surface的光照贴图(light map)UV坐标与Surface顶点世界3D坐标之间的转换原理
- windows 屏幕坐标 窗口坐标 客户区坐标 逻辑坐标 设备坐标之间的关系及转换
- [3D数学]Quake3平面Surface的光照贴图(light map)UV坐标与Surface顶点世界3D坐标之间的转换原理
- Unity 世界坐标 和 NGUI 屏幕坐标间的转换
- LINQ 学习笔记-字符串数组与整数数组之间的转换,排序
- 学习笔记—四元数与欧拉角之间的转换
- 孙鑫VC学习笔记:第十一讲 (一) 坐标空间与各种转换的概念
- Windows 8 学习笔记(八)--各种流之间的转换
- iOS cocos2d学习笔记-<九>坐标转换、点击事件响应、位置判断