裁剪
在规格化设备坐标中,只有在x∈[-1,1],y∈[-1,1],z∈[-1,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+cvz−aPx−bPy−cPz−dt=(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]的坐标)三个点的位置。