【OSG】如何获取当前视口下的物体坐标?

qq_15548011 2015-08-05 05:33:52
我用OSG的geometry绘制一个几何体的线框图,如下所示


然后我用鼠标拖动旋转了这个几何体,使它变成这样子


请问,我该如何获得旋转后的几何体上,每一个顶点的坐标呢?(就是旋转后的坐标)

PS:想获得坐标是因为我需要完成一个消隐算法,这个算法是对任何时刻任何视点下的几何体进行虚实线显示(被遮挡的线通过虚线显示)


请各位大神帮忙解答,我已经被这个问题困扰了好几天了.
...全文
1925 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31295605 2017-02-23
  • 打赏
  • 举报
回复
osg自带有消隐功能,添加#include<osgGA/StateSetManipulator>并运行程序后,按b键即可(注意是小写的b)
qq_15548011 2015-08-06
  • 打赏
  • 举报
回复
引用 1 楼 happy__888 的回复:
恶补计算机图形学的数学基础知识去吧,不可能一个帖子说明白所有相关的 三维空间当中的旋转是通过一个矩阵来控制的,用矩阵和原始的模型顶点做乘法运算就能得到旋转后的物体的三维空间坐标 屏幕上的旋转效果也有可能是通过旋转相机的位置来做到的,那么模型的顶点空间坐标根本就没有变化 关于隐藏的问题,如果有了图形学的基础数学知识并不复杂, 知道每条线所关联的两个面的法向量方向和视线方向的夹角关系就知道这个面是否可见。棱边关联的两个面都不可见就是背对视线,则不显示;一面可见一面不可见,则表示是边缘轮廓要绘制;两面都可见则正向对着相机,也要绘制。
这个,我算法已经写好了,之前在C#上用AE的接口也完成过这个算法了。只是用C#做觉得实在受限太多,很多东西都做得不知所谓,才改用了c++和OSG。 我主要想问得其实是要从哪些OSG类库中去获得我想要的效果? 即比如获得当前相机位置,有多少种方法可以获得? 我昨晚思考过了,从相对地来看,我只需要获得变换后的相机坐标位置,就可以拿来进行计算了。不过因为我之前写算法时,是假定相机位置永远处于投影坐标原点,且方向为Z轴正方向,这样做的好处就是,我可以自己进行深度判断。
reader1 2015-08-06
  • 打赏
  • 举报
回复
对,夹角大于90度为背面,
寻开心 2015-08-06
  • 打赏
  • 举报
回复
恶补计算机图形学的数学基础知识去吧,不可能一个帖子说明白所有相关的 三维空间当中的旋转是通过一个矩阵来控制的,用矩阵和原始的模型顶点做乘法运算就能得到旋转后的物体的三维空间坐标 屏幕上的旋转效果也有可能是通过旋转相机的位置来做到的,那么模型的顶点空间坐标根本就没有变化 关于隐藏的问题,如果有了图形学的基础数学知识并不复杂, 知道每条线所关联的两个面的法向量方向和视线方向的夹角关系就知道这个面是否可见。棱边关联的两个面都不可见就是背对视线,则不显示;一面可见一面不可见,则表示是边缘轮廓要绘制;两面都可见则正向对着相机,也要绘制。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧