最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

视口变化矩阵

来源:动视网 责编:小OO 时间:2025-09-24 17:11:08
文档

视口变化矩阵

视口变换在投影变换之后,投影变换是将viewingfrustum(视景体)变换为一个cuboid(立方体),如下图视口变换则是将这个cuboid中的物体变换到视口中,见下图其中cuboid的坐标范围是-1≤x≤1-1≤y≤10≤z≤1而viewport的坐标范围是X≤x≤X+WidthY≤y≤Y+HeightMinZ≤z≤MaxZ注:由上图知,视口的起点为(X,Y),宽高分别为Width和Height,x轴向右为正,y轴向下为正,y轴的方向与三维坐标正好相反。视口是一个2D平面,但是在view
推荐度:
导读视口变换在投影变换之后,投影变换是将viewingfrustum(视景体)变换为一个cuboid(立方体),如下图视口变换则是将这个cuboid中的物体变换到视口中,见下图其中cuboid的坐标范围是-1≤x≤1-1≤y≤10≤z≤1而viewport的坐标范围是X≤x≤X+WidthY≤y≤Y+HeightMinZ≤z≤MaxZ注:由上图知,视口的起点为(X,Y),宽高分别为Width和Height,x轴向右为正,y轴向下为正,y轴的方向与三维坐标正好相反。视口是一个2D平面,但是在view
视口变换在投影变换之后,投影变换是将viewing frustum(视景体)变换为一个cuboid(立方体),如下图

视口变换则是将这个cuboid中的物体变换到视口中,见下图

其中cuboid的坐标范围是

-1 ≤x≤1

-1 ≤y≤1

0 ≤z≤1

而viewport的坐标范围是

X ≤x≤X + Width

Y ≤y≤Y + Height

MinZ ≤z≤MaxZ

注:由上图知,视口的起点为(X,Y),宽高分别为Width和Height,x轴向右为正,y轴向下为正,y轴的方向与三维坐标正好相反。视口是一个2D平面,但是在viewport变换中,Z坐标也是跟着变换的,只是在这个图中没有体现。

 先求变换矩阵的第一列

Cuboid中的左上角点(-1, 1, 0, 1)映射到viewport中的起点(X, Y, MinZ, 1),

Cuboid中的右上角点(1, 1, 0, 1)映射到viewport中的点(X+Width, Y, MinZ, 1),

假设变换矩阵的第一列为[x’, y’, z’, 1]T

根据矩阵乘法有

[-1, 1, 0, 1]* [x’, y’, z’, 1]T = X

[1, 1, 0, 1]* [x’, y’, z’, 1]T = X+Width

对应的两个方程为

-1*x’ + 1*y’ + 0*z’ + 1*w’ = X

1*x’ + 1*y’ + 0*z’ + 1*w’ = X+Width

解之得

x’ = Width/2

y’ = 0

z’ = 0

w’ = x + Width/2

 再求第二列

列方程(这里省略了x’,z’,但结果不变,下同)

y’ + 1*w’=Y

-1*y’ + 1*w’=Y+Height

解之得

y’ = -Height/2

w’ = Y + Height/2

 最后求第三列

列方程

0*z’ + 1*w’ = MinZ

1*z’ + 1*w’ = MaxZ

解之得

z’ = MaxZ – MinZ

w’ = MinZ

组合以上各列,得到视口变换矩阵

  

文档

视口变化矩阵

视口变换在投影变换之后,投影变换是将viewingfrustum(视景体)变换为一个cuboid(立方体),如下图视口变换则是将这个cuboid中的物体变换到视口中,见下图其中cuboid的坐标范围是-1≤x≤1-1≤y≤10≤z≤1而viewport的坐标范围是X≤x≤X+WidthY≤y≤Y+HeightMinZ≤z≤MaxZ注:由上图知,视口的起点为(X,Y),宽高分别为Width和Height,x轴向右为正,y轴向下为正,y轴的方向与三维坐标正好相反。视口是一个2D平面,但是在view
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top