渲染管线理解3

文章目录

  • 裁剪
    • 一般平面裁剪
    • Sutherland-Hodgeman裁剪算法
  • 作业

裁剪

在规格化设备坐标中,只有在x∈[-1,1],y∈[-1,1],z∈[-1,1]内的三角形才会被渲染。即在视图坐标中在视锥内的三角形会被渲染。

一般平面裁剪

渲染管线理解3_第1张图片

假设是直线裁剪,PR会被裁剪,平面为ax+by+cz+d=0。法向量指向内侧(PQ方向)。即ax+by+cz+d>0的点在内侧。
存在一个t使得平面上一点
R=P+t(Q-P),记v=Q-P
0 = a ( P x + t v x ) + b ( P y + t v y ) + c ( P z + t v z ) + d t = − a P x − b P y − c P z − d a v x + b v y + c v z t = a P x + b P y + c P z + d ( a P x + b P y + c P z + d ) − ( a Q x + b Q y + c Q z + d ) 0=a(P_x+tv_x)+b(P_y+tv_y)+c(P_z+tv_z)+d\\ t=\dfrac{-aP_x-bP_y-cP_z-d}{av_x+bv_y+cv_z}\\ t=\dfrac{aP_x+bP_y+cP_z+d}{(aP_x+bP_y+cP_z+d)-(aQ_x+bQ_y+cQ_z+d)} 0=a(Px+tvx)+b(Py+tvy)+c(Pz+tvz)+dt=avx+bvy+cvzaPxbPycPzdt=(aPx+bPy+cPz+d)(aQx+bQy+cQz+d)aPx+bPy+cPz+d
求得t后,即可计算R点的位置

Sutherland-Hodgeman裁剪算法

作业

已知三角形在模型空间位置三个点的位置为(1,0,0),(0,1,0),(0,0,1)
先绕x轴旋转30度,然后平移(1,0,1)到世界空间
已知摄像机坐标为(1,0.5,-0.5),看向点(0,0,1),摄像机朝上的向量为(0,1,0),上下视角(fov)为45度,宽高比为2:1,近平面n=0.1,远平面f=1000。
求在标准化设备坐标中(把视锥规范化到x∈[-1,1], y∈[-1,1],z∈[-,1,1]的坐标)三个点的位置。

你可能感兴趣的:(渲染管线)