查看: 2351|回复: 7

OSG点选单个点

[复制链接]

该用户从未签到

发表于 2014-3-31 15:09:21 | 显示全部楼层 |阅读模式
老师项目中,点云匹配需手动注册,现在需要选择初始对应点,需要解决怎么在点云中点选单个点?谢谢。

该用户从未签到

发表于 2014-3-31 15:53:47 | 显示全部楼层
我无法理解您在描述什么

该用户从未签到

 楼主| 发表于 2014-3-31 16:27:36 | 显示全部楼层
锐哥好!我所想实现的效果就是在点云数据中选择点,和Geomagic中"点坐标"功能一样的效果。

该用户从未签到

 楼主| 发表于 2014-3-31 16:28:29 | 显示全部楼层
array 发表于 2014-3-31 15:53
我无法理解您在描述什么


锐哥好!我所想实现的效果就是在点云数据中选择点,和Geomagic中"点坐标"功能一样的效果。

该用户从未签到

发表于 2014-4-2 21:23:13 | 显示全部楼层
我个人的建议是从渲染结果的图像中readPixel得到点的深度,然后反推出点的坐标,这样比几何求交的做法要快很多,尤其对于大批量的点云查询而言

该用户从未签到

 楼主| 发表于 2014-4-3 17:56:30 | 显示全部楼层
我目前是采用将世界坐标系转化为屏幕坐标系,再与当前鼠标求欧式距离的方法来判断点选单个点的问题。每次点选都是要将全部的点云到鼠标点的欧式距离计算一遍,虽然说速度可以接受(100万点点选一个1秒钟左右),但是显然这不是最好的做法。Array老师说的是不是将当前视窗内有效的点(比如放大后的点不在视窗内就不必计算)统计再做比较,我也是这么想的,这样毕竟才是快速和更好的做法。但是自己的readPixels使用估计存在问题,望赐教。以下是测试代码:
  1. osg::ref_ptr<osg::Image> image = new osg::Image;
  2. image->readPixels(0,0,600,480, GL_RGB,GL_UNSIGNED_BYTE);
  3. osgDB::writeImageFile(*image,"D:\\abc.png");
复制代码


另外还请帮忙解决下这个问题:
http://www.osgchina.org/forum.ph ... id=13510&extra=

该用户从未签到

 楼主| 发表于 2014-4-3 17:58:30 | 显示全部楼层
array 发表于 2014-4-2 21:23
我个人的建议是从渲染结果的图像中readPixel得到点的深度,然后反推出点的坐标,这样比几何求交的做法要快 ...

我目前是采用将世界坐标系转化为屏幕坐标系,再与当前鼠标求欧式距离的方法来判断点选单个点的问题。每次点选都是要将全部的点云到鼠标点的欧式距离计算一遍,虽然说速度可以接受(100万点点选一个1秒钟左右),但是显然这不是最好的做法。Array老师说的是不是将当前视窗内有效的点(比如放大后的点不在视窗内就不必计算)统计再做比较,我也是这么想的,这样毕竟才是快速和更好的做法。但是自己的readPixels使用估计存在问题,望赐教。以下是测试代码:
  1. osg::ref_ptr<osg::Image> image = new osg::Image;
  2. image->readPixels(0,0,600,480, GL_RGB,GL_UNSIGNED_BYTE);
  3. osgDB::writeImageFile(*image,"D:\\abc.png");
复制代码

另外还请帮忙解决下这个问题:
http://www.osgchina.org/forum.ph ... id=13510&extra=

该用户从未签到

发表于 2014-4-20 19:46:59 | 显示全部楼层
readPixels必须在启用了OpenGL Context的前提下使用,已经说过很多次了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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