OpenGL C ++通过单击鼠标即可获得点云坐标

问题描述

我正在使用OpenGL + QT显示大量的点云。 附件中有一部分代码用来显示点云:

for (int i = 0; i < m_points.size(); ++i)
{
    glVertex3d(m_points[i].GetX(),m_points[i].GetY(),m_points[i].GetZ());
}
glEnd();
glFlush();

一切正常,我也可以对其进行旋转,平移和缩放。

我的问题是现在如何通过使用鼠标单击来选择点的3D坐标,同时还要考虑缩放,旋转和平移。

我的想法是实现射线投射技术,但是我不确定这是最优化的方法方法如下:

  • 捕获鼠标单击坐标(X-Y归一化为[-1,1],所以我也猜成Z)
  • 找到两个点A(X,Y,1)和B(X,Y,-1)
  • 计算A和B之间的线
  • 在点云中找到最接近AB线的点

还有其他人遇到过这种问题吗?您有什么建议或替代方法吗?

提前谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)