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 = ca
OSG屏幕坐标——相机坐标——世界坐标之间的转换
最新推荐文章于 2024-09-14 10:08:11 发布
本文介绍了使用OSG(OpenSceneGraph)进行不同坐标系之间的转换方法,包括屏幕坐标到世界坐标、世界坐标到屏幕坐标等。通过这些转换,可以更好地理解和操作三维场景。

最低0.47元/天 解锁文章
1525

被折叠的 条评论
为什么被折叠?



