计算机图形学 《计算机图形学》 路 通 博士、教授 南京大学计算机科学与技术系课程

Slides:



Advertisements
Similar presentations
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
Advertisements

2.6 隐函数微分法 第二章 第二章 二、高阶导数 一、隐式定义的函数 三、可微函数的有理幂. 一、隐函数的导数 若由方程 可确定 y 是 x 的函数, 由 表示的函数, 称为显函数. 例如, 可确定显函数 可确定 y 是 x 的函数, 但此隐函数不能显化. 函数为隐函数. 则称此 隐函数求导方法.
第八章 投影变换 第八章 投影变换 内容 : 一. 导引 二. 投影介绍 三. 投影变换原理 四. 总结 五. 补充内容.
§3.4 空间直线的方程.
《解析几何》 -Chapter 3 §7 空间两直线的相关位置.
3.4 空间直线的方程.
《解析几何》 乐山师范学院 0 引言 §1 二次曲线与直线的相关位置.
第五章 二次型 §5.1 二次型的矩阵表示 §5.2 标准形 §5.3 唯一性 §5.4 正定二次型 章小结与习题.
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
浙江大学CAD&CG国家重点实验室,教I 三楼
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
俄罗斯方块:注意观察游戏中用到的 数学的知识
2-7、函数的微分 教学要求 教学要点.
计算机科学与技术专业研究型课程 矩阵和线性变换 宋传鸣 辽宁师范大学计算机与信息技术学院.
第六章 二维变换及二维观察 6.1 基本概念 齐次坐标 齐次坐标表示就是用n+1维向量表示一个n维向量。
第二章 矩阵(matrix) 第8次课.
Computer Graphics 计算机图形学基础 张 赐 Mail: CSDN博客地址:
走进编程 程序的顺序结构(二).
绘制圆与多边形 椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height), 绘制实心椭圆形的方法是
第三节 视觉系统的几何特性.
数学模型实验课(三) 插值与三维图形.
第6章 图形几何变换.
工业机器人技术基础及应用 主讲人:顾老师
双曲线的简单几何性质 杏坛中学 高二数学备课组.
第六章 二维变换及二维观察 如何对二维图形进行方向、尺寸和形状方面的变换。 如何进行二维观察。.
使用矩阵表示 最小生成树算法.
2.1.2 空间中直线与直线 之间的位置关系.
平行四边形的性质 灵寿县第二初级中学 栗 彦.
工业机器人技术基础及应用 主讲人:顾老师
变换与裁剪.
潘老师 工业机器人入门实用教程 (EFORT 机器人) 主讲人
第三章 图形变换.
27.3 位 似
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
VisComposer 2019/4/17.
一个直角三角形的成长经历.
PT200中拼版的制作 一、概念部分 如图中所示,PT200中坐标系定义为4种方向,当选择某的坐标系后,则认为在程式的制作中凡是在选定的贴装位置都是正的坐标,注意的是在PT200及设备中(程式部分)没有负的坐标。 *也就表示测量数据时,选择某点为原点在选定的坐标系的方向上测量元件贴装位置,所有的数值都纪录为正的数值,而不是四象限坐标系中的正的和负的数值的坐标。
3.3 垂径定理 第2课时 垂径定理的逆定理.
§1体积求法 一、旋转体的体积 二、平行截面面积为已知的立体的体积 三、小结.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
复习: 若A(x1,y1,z1) , B(x2,y2,z2), 则 AB = OB - OA=(x2-x1 , y2-y1 , z2-z1)
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
直线和圆的位置关系 ·.
第七章 图 形 变 换 (一) 2019/5/7 Thank you for your time today.
VRP教程 2011.
《工程制图基础》 第五讲 投影变换.
2.2矩阵的代数运算.
静定结构位移计算 ——应用 主讲教师:戴萍.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
线 性 代 数 厦门大学线性代数教学组 2019年5月12日4时19分 / 45.
平行四边形的性质 鄢陵县彭店一中 赵二歌.
义务教育课程标准试验教科书九年级 下册 投影和视图 珠海市金海岸中学 杜家堡 电话:
§2 方阵的特征值与特征向量.
在发明中学习 线性代数概念引入 之四: 矩阵运算 李尚志 中国科学技术大学.
总复习.
4.6 图形的位似     观察思考:这两幅图片有什么特征? 都是有好几张相似图形组成,每个对应顶点都经过一点.
正弦函数的性质与图像.
定义5 把矩阵 A 的行换成同序数的列得到的矩阵,
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
第五章 图形变换 在计算机绘图应用中,经常要进行从一个几何图形到另一个几何图形的变换,例如,将图形向某一方向平移一段距离;将图形旋转一定的角度;或将图形放大或缩小等等,这种变换过程称为几何变换。图形的几何变换是计算机绘图中极为重要的一个组成部分,利用图形变换还可以实现二维图形和三维图形之间转换,甚至还可以把静态图形变为动态图形,从而实现景物画面的动态显示。
3.2 平面向量基本定理.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
位似.
编程达人-- 从零开始学UI系列教程 第九节、布尔运算 先行者 YC.
§4.5 最大公因式的矩阵求法( Ⅱ ).
生活中的几何体.
第三章 图形的平移与旋转.
3.3.2 两点间的距离 山东省临沂第一中学.
Presentation transcript:

计算机图形学 《计算机图形学》 路 通 博士、教授 南京大学计算机科学与技术系课程 路 通 博士、教授 lutong@nju.edu.cn http://cs.nju.edu.cn/lutong/ 18913926002 Department of Computer Science and Technology, NanJing Uiversity

第6讲 图形观察与几何变换 1 图形观察 2 几何变换 3 应用举例

1. 图形观察

图形观察 图形变换和观察是计算机图形学的基础内容之一 图形观察是通过指定一个图形中要显示的部分以及在显示器显示位置,并执行从世界坐标系到设备坐标系的图形变换及删除位于显示区域范围以外的图形部分而实现的 类似于用相机拍摄物体的过程: 将物体在某个位置摆放好 相机定位 确定相机方向、朝向 取景 成像 图形观察所要解决的问题:将某个物体的一部分或全部映射到某显示区域中(如显示器)

图形观察中涉及的坐标系 图形观察变换流程 物体建模:在模型坐标系对物体进行几何建模 物体的建模变换:物体平移、旋转、缩放等变换操作,构造世界坐标场景,得到世界坐标系描述 视点变换:在世界坐标系中对相机定位、定向,设置取景方式,从而得到观察坐标系 观察变换、投影变换:将世界坐标系中的几何模型变换到规范化设备坐标系中的二维几何描述 工作站变换:规范化设备坐标系到设备坐标系的变换

图形观察中涉及的坐标系 模型坐标系(Modeling Coordinate System):为方便地构造单个对象而定义的坐标系统。 根据用户需要,可自由定义其原点和方向 通过模型坐标系描述的物体,可以在将模型坐标系“放入”世界坐标系后,很方便地得到物体在世界坐标系中的描述 模型坐标系主要是为了方便用户对物体建模

图形观察中涉及的坐标系 世界坐标系(World Coordinate System):是现实世界的坐标系,坐标系方向不能改变。世界坐标系是某场景内物体,或单个物体各部件的统一参照系 用于计算图形场景中所有图形对象的空间定位和几何定义 明确某一物体的单元构成,或放入场景的位置 是物体和观察者之间位置、距离、视线等衡量的标准

图形观察中涉及的坐标系 观察坐标系(Viewing Coordinate System):相当于照相机坐标系,用来确定相机胶卷平面的位置和方向,从而得到期望观察到的视图 一般以视点为原点,通过指定一个垂直于相机的向上向量来定义 描述从观察者角度对整个世界坐标系内的对象进行重定位和描述 成像面坐标系(Imaging Coordinate System):在胶卷平面上的成像坐标系,是观察坐标系中的某个特定投影

图形观察中涉及的坐标系 规范化设备坐标系(Normalizing Device Coordinate System):独立于具体设备的中间、规范化的设备坐标系 NDC可以很容易地转换为具体设备(如各种显示器、打印机)的设备坐标系 其坐标范围为0..1 NDC能够使得图形软件在不同的设备之间移植;由规范化设备坐标系到各图形硬件实际坐标之间的映射由软件自动实现 设备坐标系(Device Coordinate System):每一个具体的显示设备有独立的设备坐标系 屏幕坐标系中的成像区域称为视图区(或视口,view port)。设备坐标为整数

窗口与视区 图形软件包允许指定图形中要显示的部分及在显示器显示的位置 世界坐标系中要显示的区域称窗口 窗口映射到显示器(设备)上的区域称为视区 窗口定义显示什么;视区定义在何处显示 标准的窗口和视区一般都是矩形 Y设备 视区 X设备 设备坐标系 ymax ymin xmax xmin 窗口 Y世界 X世界 世界坐标系 视区定义

二维观察的流程 在世界坐标系中构造图形或场景:使用建模坐标变换 在世界坐标平面中设置二维的观察坐标系,将世界坐标系下的描述变换到观察坐标系 在观察坐标系下定义视区窗口: 视区窗口通常定义成单位正方形,以保证观察和变换独立于输出设备 改变视区窗口的位置可以在输出设备的显示区的不同位置观察物体 也可以通过改变视区窗口的尺寸来改变显示对象的尺寸和位置 改变视区向上方向矢量可改变视线方向 将观察坐标系下的场景描述映射到规范坐标系的视区

二维观察的流程 在规范化坐标系下进行视区图形裁剪:裁剪掉视区外的图形部分,并将视区内图形转换到设备坐标系

OpenGL用于二维显示 //视口位置和尺寸(相对于程序窗口) glViewport (x, y, width, height); 100,1450 2000,1500 0,0 1800,150 //视口位置和尺寸(相对于程序窗口) glViewport (x, y, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //二维投影面,决定了二维显示坐标的范围 gluOrtho2D(xmin,xmax,ymin,ymax); 显示器屏幕 指定观察设备的关联方式 视口范围 指定观察方式 Opengl程序窗口 xmax,ymax 在世界坐标系下指定观察范围 二维投影面范围 xmin,ymin

2. 几何变换

二维几何变换 图形变换是图形显示过程中不可缺少的一个环节 通过图形变换可由简单图形生成复杂图形 变换是描述图形的有力工具,可改变和管理各种图形的显示。例如: 通过调整组成部分的方向和大小来实现设计和设施布局 动画则通过沿动画路径移动“照相机”或场景中的对象而产生 在方向、尺寸和形状方面的变化是用改变对象坐标描述的几何变换来完成 二维观察中涉及的各种变换需要用二维几何变换来实现

平移变换 平移是指:将物体沿直线路径从一个坐标位置到另一个坐标位置重定位 给原始坐标位置(x,y)加上平移距离tx和ty来实现到新位置(x1,y1)的移动: x1 =x+tx y1 =y+ty (tx,ty)称为平移向量或转换向量 平移的矩阵方程: P1 =P+T T=(tx,ty)T, P =(x,y)T, P1 =(x1,y1)T P P1 T

平移的特性 平移是不产生变形而移动物体的刚体变换,物体上的每个点移动相同的坐标 直线的平移是将平移方程加到线的每个端点上 多边形的平移是将平移向量加到每个顶点的坐标 曲线可用同样方法来平移 为了改变圆或椭圆的位置,可以平移中心坐标并在新中心位置重画图形 通过替代定义曲线的坐标位置,而后用平移过的坐标点来重构曲线路径来实现其它曲线的平移 T

旋转变换 二维旋转是将物体沿xy平面内的圆弧路径重定位 指定物体旋转的旋转点(或基准点)的位置(xr,yr)和旋转角θ(逆时针旋转时旋转角为正) 或:描述为绕通过基准点、垂直于xy平面的旋转轴旋转 当基准点为坐标原点时,变换方程: x1=xcosθ-ysinθ y1=xsinθ+ycosθ 方程的列向量矩阵为:P1=R·P 旋转矩阵为: 变换也可表示为行坐标向量矩阵: P1T=(R · P)T=PT·RT 旋转矩阵R的转置RT可通过交换行和列而得到; 旋转矩阵R的置换则可简单地改变sin项符号而得到

旋转变换的特性 点绕任意基准位置旋转的变换方程: x1=xr+(x- xr)cosθ-(y- yr)sinθ y1=yr+(x- xr)sinθ+(y- yr)cosθ 这个通用旋转方程不同于绕原点旋转方程之处在于:包括一个加项(平移项)以及坐标值上的多重系数 旋转也是一种不变形地移动物体的刚体变换,物体上的所有点旋转相同的角度: 直线段旋转是将每个线端点 多边形的旋转则是将每个顶点旋转指定的旋转角 曲线的旋转则是旋转控制取样点 (xr,yr)

缩放变换 缩放变换改变物体的尺寸。该操作施加于多边形 通过将每个顶点坐标值(x,y)乘以缩放系数sx和sy,产生变换的坐标(x1,y1):x1=x·sx,y1=y·sy 缩放系数sx在x方向对物体缩放,sy在y方向缩放 相对于原点的缩放矩阵形式:P1=S·P 缩放矩阵: X Y P1 P2 相对原点的一致缩放 缩放系数sx和sy可赋予任何正数 小于1缩小物体的尺寸 大于1则放大物体 当sx和sy值相同时,产生一致缩放 sx和sy值不等时产生差值缩放 用缩放方程变换的物体既被缩放,又被重定位 当缩放系数值大于1时则将坐标位置远离原点

变换的矩阵表示 每个基本变换都可表示为普通矩阵形式: P1=M1·P+M2 坐标位置P1和P表示为列向量 利用这个方程产生先缩放再旋转后平移的变换顺序,必须每次一步地计算变换的坐标

变换的齐次坐标矩阵表示 在齐次坐标中所表示的位置允许将所有几何变换方程表示为矩阵乘法: 坐标可表示为三元素列向量,变换写成3×3矩阵 平移变换可表示为: P1=T(tx,ty)·P,T(tx,ty)为平移矩阵 平移矩阵的逆矩阵:用平移参数tx,ty的负值-tx,-ty来代替原值 平移矩阵 旋转矩阵 绕坐标原点的旋转变换可写为: P1=R(θ)·P,R(θ)是旋转矩阵; 当θ用-θ替换时就得到其逆矩阵

变换的齐次坐标矩阵表示 相对于坐标原点的缩放变换表示为: P1=S(sx,sy)·P,S(sx,sy)是缩放矩阵 用倒数1/sx和1/sy代替sx和sy就产生其逆矩阵 缩放矩阵

复合变换 矩阵的合并或复合:利用矩阵表示,通过计算单个变换矩阵的乘积,将任意顺序变换的矩阵建立为复合变换矩阵 对于坐标位置的列矩阵表示,以从右向左的次序进行矩阵乘而形成复合变换,来计算一系列变换的结果 即:每个随后的变换矩阵左乘前面的变换矩阵 复合平移:P1={T(txn,tyn) ·……·T(tx2,ty2) · T(tx1,ty1)}·P 复合旋转:P1={R(θn) ·…… · R(θ2) · R(θ1)}· P 复合缩放:P1={S(sxn,syn)·……· S(sx2,sy2) · S(sx1,sy1)}·P 复合变换:先缩放后平移再旋转: P1={R(θn) · T(txn,tyn) · S(sxn,syn)}·P 注意:矩阵乘法不满足交换率:M1•M2≠M2•M1,所以变换的结果和变换执行的顺序有关 只有在两个变换类型相同,或两者分别是一致缩放与旋转变换时,两者可以交换

复合变换的例子(1) 几何形状绕任意点(xr,yr)旋转θ,求变换矩阵 平移物体,使(xr,yr)与原点重合 平移后的物体绕原点旋转

复合变换的例子(2) 几何形状相对点(xf,yf)的比例变换(sx, sy),求变换矩阵 平移物体,使(xf,yf)与原点重合 平移后的物体缩放变换 平移物体使其基准点回到原来的(xf,yf)位置

复合变换的例子(3) 矩阵运算不满足交换律 不同的变换次序会产生不同的变换结果

其它变换:对称(反射)变换 反射 (对称)变换是产生物体的镜像的一种变换 相对反射(对称)轴的一维反射镜像是通过将物体绕反射(对称)轴旋转180度而生成的

任意对称(反射)变换 关于xy平面内任意线y=mx+b的反射可用平移-旋转-反射变换的组合来完成: ①平移反射轴使其经过原点;②将反射轴旋转到坐标轴之一上,且进行关于坐标轴反射;③利用逆旋转和平移变换将线置回原处 关于坐标轴或坐标原点的反射可处理为缩放系数为负值的缩放变换 反射矩阵的元素也可设置为±1以外的其它值:大于1的值将镜像移至远离反射轴;小于1的值将镜像接近反射轴

反射变换 对x轴的反射 对y轴的反射 对原点的反射 关于对角线y=x的反射 顺时针旋转45°; 对x轴反射; 再逆时针旋转45°

其它变换:错切变换 错切会使物体形状发生变化的变换,经过错切的物体好象是由已经相互滑动的内部夹层组成。常用错切变换有两种:改变x坐标值和改变y坐标值 相对x轴的x方向错切将坐标位置转换成:x1=x+shx·y,y1=y 坐标位置(x,y)水平地移动一个与它到x轴距离(y值)成shx比例的量;shx为负,坐标位置向左移动

仿射变换 Translation transform Rotation transform Scaling transform Shearing transform Transform concatenation Rigid body transform Normal transform Affine transform: 平行线变换到平行线,但不保持长度和角度

三维坐标的平移变换 y y x x 性质: T-1 (t) = T(-t)

三维坐标的旋转变换 性质1:迹与旋转轴无关,都为 性质2:所有旋转矩阵为正交阵,多个旋转矩阵相乘仍为正交阵。

三维缩放变换 Example: Scaling in a certain direction 假设沿正交、右手系(OpenGl)的矢量fx , fy , fz进行比例变换,则首先构造矩阵 最后的变换为

三维坐标系下绕任意轴旋转 绕任意单位轴r旋转角度α是一个很有用的操作 思想: (1).由r构造一正交坐标系 (2).变换坐标系,使得r与x轴重合 (3).绕x轴旋转 (4).变换回去 y y y r s r M MT s s r x x x t Rx(α) z t z z t

3. 应用举例

顶点混合(Vertex Blending) 假设一个数字角色的手臂用前臂和后臂来模拟,我们要对手臂设置动画 若采用刚体变换设置动画,则关节处(肘)不像真实手臂。因为我们采用了两个分离的物体来模拟手臂,在关节处有重叠部分 解决方法:Vertex Blending (其它称呼:Skinning, Enveloping, Skeleton-subspace Deformation) 采用一个物体模拟,关节处应是柔性的

刚 体 simple skin 顶点混合 前臂2/3, 后臂1/3 folding (2/3,1/3) bones + + + + (1/3,2/3) 刚 体 simple skin 顶点混合

顶点混合(Vertex Blending) 最简单方法:前臂和后臂仍单独设置动画,但关节处用一柔性的“skin”来连接 柔性部分的一部分顶点由前臂的矩阵来变换,另一部分由后臂的矩阵来变换。即:一个三角形的顶点可以由不同的矩阵来变换,而不是一个矩阵。这种基本技术有时也称为“Stitching”

顶点混合(Vertex Blending) 骨架驱动:整只手臂是 “柔性”的。所有的顶点由多个矩阵影响。整个多边形网格常称为骨架上的“skin”(外皮) vertex blending 例子

顶点混合的数学表示 p为原始顶点,u(t)为变换后的顶点,n为影响p的关节数目 Mi:把第i个关节骨架的初始坐标系变换到世界坐标系 Bi(t):第i个关节随时间变化的世界变换,通常是一系列矩阵的连乘 wi:第i个关节骨架作用于p的权因子 vertex blending 例子 顶点混合可在CPU上实现。如果是瓶颈,则该操作应在图形硬件上实现, 有些图形硬件支持顶点混合。也可以用可编程图形硬件(Vertex Shader)实现。 DirectX 允许两种流水线来实现Skinning: (1) Fixed function path (2) Vertex shader

Vertex Blending的一些其它问题 如果需要对皮肤模型进行精确的碰撞检测 顶点混合可能出现的问题:不应该的折叠、扭曲,自交

Motion capture 应用于:娱乐、军事、运动、医疗等

Motion capture