软件光栅器的设计思想

来源:互联网 发布:淘宝怎么改评价 编辑:程序博客网 时间:2024/05/16 12:02

软件光栅器的设计思想
排版有点乱,图片稍后补上

一、场景管理…压根没管
二、资源载入
三、好了…前戏完了..重点来了

四、顶点处理:四大坐标系转换

1、世界坐标矩阵:

推导:物体经过缩放,旋转,平移:
|sx | | (1-(ry*ry+rz*rz)*2) (rx*ry-rw*rz)*2 (rx*rz+rw*ry)*2 | | 1 | | m00=(1-(vyvy+vzvz)*2)*s.x; m01=(vxvy+svz)*2*s.x; m02=(vxvz-svy)*2*s.x; |
| sy | * | (rx*ry+rw*rz)2 (1-(rx*rx+rz*rz)*2) (ry*rz-rw*rx)*2 | | 1 | = | m10=(vxvy-svz)*2*s.y; m11=(1-(vxvx+vzvz)*2)*s.y; m12=(vyvz+svx)*2*s.y; |
| sz | | (rx*rz-rw*ry)*2 (ry*rz+rw*vx)*2 (1-(rx*rx+ry*ry)*2) | | 1 | | m20=(vxvz+svy)*2*s.z; m21=(vyvz-svx)*2*s.z; m22=(1-(vxvx+vyvy)*2)*s.z; |
| 1 | | 1 | | tx ty tz 1 | | m30=t.x; m31=t.y; m32=t.z; m33=1|

所以世界坐标矩阵:
Mworld = Mscale * Mrotate * Mtranslate

2、视图矩阵(View矩阵)
Camera的UVN(U:右方 V:上方 N:后方):切线空间:xyz

视图矩阵其实就是:将Camera平移回原点(Inverse Translation) 再 旋转对齐 坐标轴 的变换

Inverse Translation(摄像机当前坐标(px,py,pz))

        |1                     |        |         1            |

T = | 1 |
| -px -py -pz 1|

假设Camera当前的UVN为(u,v,n)
那么他的逆向矩阵:
|u| |a00 a01 a02| |1 0 0|
|v| * |a10 a11 a12| = |1 1 0|(对齐Z轴)
|n| |a20 a21 a22| |1 0 1|
|ux vx nx|
R = |uy vy ny|
|uz vz nz|

将其化为四维矩阵:
| ux vx nx |
| uy vy ny |
R = | uz vz nz |
| 1 |

所以视图矩阵Mview

                 |  ux     vx     nx      |                     |  uy     vy     ny      |

Mview = T*R = | uz vz nz |
| -px -py -pz 1 |

3、投影透视矩阵(剪裁矩阵)

首先引入Homogeneous Coordinates(齐次坐标)
(x,y,z) - >(x,y,z,w(0

0 0
原创粉丝点击