查看: 1476|回复: 1

osg计算像素坐标值

[复制链接]

该用户从未签到

发表于 2014-4-4 17:05:26 | 显示全部楼层 |阅读模式
本帖最后由 becky 于 2014-4-4 20:51 编辑

我想通过自己计算的投影和视口矩阵,来算出场景截图中的像素坐标值。程序比较长,我就简单的描述一下我的做法:

首先根据resolution、FOV、平移和旋转角度设置了camera的投影和视口矩阵。

计算投影矩阵K:
float u0 = resolution_w/2;
float v0 = resolution_h/2;
float f = v0/tan((h_fov/2)*pi/180.0);
float K[4][4] = {{f,0,u0,0},{0,f,v0,0},{0,0,1,0},{0,0,0,1}};

之后计算旋转矩阵R,并与投影矩阵相乘。

然后乘以一个旋转矩阵,沿x轴逆向旋转90度,从而与osg的坐标系重合(即y轴正方向指向屏幕内侧)。

整个矩阵乘以每个点的坐标,即m = K * R * X 。像素坐标为:x = m(1) / m(3),y = m(2) / m(3)

但是计算出来的像素坐标与实际截屏的像素坐标值并不相同。怀疑是不是投影矩阵的计算错误,对camera矩阵的设置会对投影矩阵有影响吗。

实在找不出问题出在哪,各位可以帮我看一下是什么问题吗?

该用户从未签到

发表于 2014-4-20 19:53:27 | 显示全部楼层
其实就是通过计算像素点(x,y,0)和(x,y,1)乘以MVPW的逆矩阵,即可得到一个2D像素对应的空间直线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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