查看: 2068|回复: 2

osg嵌入Qt中 世界坐标转屏幕坐标出现问题

[复制链接]

该用户从未签到

发表于 2014-4-3 17:39:57 | 显示全部楼层 |阅读模式
以下是OSG世界坐标系转屏幕坐标系,在OSG自带的窗口中没问题,但是将该窗口嵌入到Qt中,就会出现问题。
比如窗口大小是397*259,但是算的点的屏幕坐标却超出范围,比如点云数据中的第一个点屏幕坐标为(361.56,918.08,-5.49)。
y坐标就超出了(此时点云均显示在窗口范围内),不能理解,希望帮忙解决。
  1. osg::ref_ptr<osg::Vec3Array> PickHandler::WorldToScreen(osg::ref_ptr<osgViewer::Viewer> viewer, osg::ref_ptr<osg::Vec3Array> worldVector)
  2. {



  3.         osg::ref_ptr<osg::Vec3Array> screenVector = new osg::Vec3Array;

  4.         osg::ref_ptr<osg::Camera> camera = viewer->getCamera();
  5.         osg::Matrix VPW = camera->getViewMatrix() *
  6.                                           camera->getProjectionMatrix() *
  7.                                           camera->getViewport()->computeWindowMatrix();
  8.        
  9.         osg::Vec3 worldPoint;
  10.         osg::Vec3 screenPoint;
  11.        
  12.         for (int i=0; i<(int)(worldVector->size()); i++)
  13.         {
  14.                 worldPoint = worldVector->at(i);
  15.                 screenPoint = worldPoint * VPW;
  16.                 screenVector->push_back(screenPoint);
  17.         }

  18.         return screenVector.get();
  19. }
复制代码


调试截图

调试截图

该用户从未签到

 楼主| 发表于 2014-4-3 17:46:33 | 显示全部楼层
这个是Qt界面的截图,是将右上角的点云进行世界坐标系到屏幕坐标系的转换。

界面截图

界面截图

该用户从未签到

发表于 2014-10-14 15:01:15 | 显示全部楼层
你求的VPW肯定有问题,要不然求出来的screen的z坐标不会是大于1的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表