|
本帖最后由 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矩阵的设置会对投影矩阵有影响吗。
实在找不出问题出在哪,各位可以帮我看一下是什么问题吗? |
|