1、能够建立 相机坐标系
2、理解不同投影方式的特点
3、能建立所需的投影矩阵并用openGL实现
4、描述clipping的操作和函数
1、摆放好待拍摄的物品,或者人物。
这个时候物品或者人物就是在世界坐标系里,就是在一个公认的坐标系中,目的是保证待拍摄的物体和照相机在同一个坐标系
2、调整好拍摄角度。 WC->VC
这一步相当于视图变换,这时候的坐标就是camera coordinate system(VC) 这个过程是调整Camera到合适的位置以便拍摄,这里要计算View Matrix
3、调焦。 投影变换
4、拍摄。
这三个向量都是在WC里的,不一定要是单位向量
P(VC) = M(VC←WC)* P(WC)
Note: XVC, YVC, ZVC 是WC中的单位列向量
在opengl中实现
glMatrixMode (GL_MODELVIEW);
gluLookAt (x0, y0, z0, xref, yref, zref, Vx, Vy, Vz);
VRP = (x0, y0, z0)
VPN = (x0, y0, z0) – (xref, yref, zref)
VUP = (Vx, Vy, Vz)
(x0,y0,z0)为放置相机的位置,
(xref,yref,zref)为场景的中心,
(Vx,Vy,Vz)记为一个矢量告诉相机的上在哪里
view plane/ projection plane /image plane
他是zvc=const 平行于xoy的一个平面 顾名思义,viwer坐标中的3D点(X,Y,Z)被投影到位于视平面上的2D点 投影分类平行投影 parallel projections | 透视投影 perspective projections |
---|---|
正射投影Orthographic | 斜投影oblique |
---|---|
投影向量⊥投影平面 | 投影向量不⊥投影平面 |
α = 90度 | α ≠ 90度 |
两种表示:1、前测后视图和平面图 2、等轴测图(isometric):投影平面的法向与每个坐标轴的夹角相等 | 1、斜等测投影cavalier projection :投影方向与投影平面成45度角,所以与投影平面垂直的直线段的投影与它本身的长度相等(xyz不变);斜二测投影cabinet :投影方向和投影平面的夹角为arctan(2),所以与投影平面垂直的直线段的长度是它投影长度的2倍。(投影后z减半) |
总结一下上面说到的投影方式,可以用下图表示
所有光线都通过投影参考点(PRP),即投影中心。
1、设置矩阵模式
glMatrixMode(GL_PROJECTION);2、 关于正投影
glOrtho(xwmin,xwmax,ywmin,ywmax,dnear,dfar)3、关于透视投影
gluPerspective(theta,aspect,dnear,dfar)