浙江大学CAD&CG国家重点实验室,教I 三楼

Slides:



Advertisements
Similar presentations
1/14 练习题 Ex1. 计算球体 V 允许其相对误差限为 1%, 问测量球 半径 R 的相对误差限最大为多少 ? 试分析高度误差对面积计算的影响。 Ex2. 将地球模型取为半径为 R (km) 的球体,赤道上 方高度为 d (km) 的地球同步卫星发射的信号对地球 的覆盖面积计算公式为 Ex3 在计算机上对调和级数逐项求和.
Advertisements

概率论与数理统计 2.3 连续型随机变量及其分布.
第七章 电介质材料.
2007年房地产建筑安装企业 税收自查方略 河北省地方税务局稽查局 杨文国.
语文园地六.
高考复习专题 高考命题与地理计算: 地理计算
数学是门奇妙的的科学, 每一个数学的成就,都伴随着 一个个动人的故事,以及几代 人的不懈努力。 张忠平.
数理逻辑.
1.5 充要条件.
§2-8 触发器 教学目标: 触发器的基本概念 同步、边沿D、边沿Jk触发器的逻辑功能.
邏 輯 課程網頁: /
第5讲 电子控制防抱死制动系统 (ABS).
“均衡”护航小班化“研改”添翼个性扬 衢州市柯城区农村小班化教育工作回眸与展望 衢州市柯城区教育体育局(文化局)
CHAPTER 4 微 分.
Chapter 3. Visual Appearance 视觉外观
穩定是指偏離平衡時能夠回復平衡的特性,控制則是改變飛行狀態的機制。
第二章:命题逻辑等值演算 主要内容: 本章与其他各章的联系 等值式与基本的等值式 等值演算与置换规则
第二节 脊柱的运动 脊柱运动形式 旋转 ( 角度运动 ) 三维运动 平移 ( 线性运动 ) 脊柱的稳定性 脊柱创伤 研究脊柱运动的意义
2 需求供給與均衡.
資源配置的五個面向 生產什麼 如何生產 何時生產 何處生產 生產收入如何分配 基礎經濟學 Chapter 2 需求﹑供給與均衡.
資源配置的五個面向 生產什麼 如何生產 何時生產 何處生產 生產收入如何分配 基礎經濟學 Chapter 2 需求﹑供給與均衡.
Differentiation 微分 之二 以公式法求函數的微分.
Chapter 2. The Graphics Rendering Pipeline 图形绘制流水线
communication principles
Chapter 10 Three-Dimensional Viewing (三维观察)
Introduction to OpenGL (1)
3.1.3几种常见函数的导数 高二数学 选修1-1.
第五模块 微积分学的应用 第四节 二阶常系数线性微分方程.
CSS樣式 靜宜大學 資管系 楊子青.
ICG 2018 Fall Homework1 Guidance
1 試求下列各值: cos 137°cos (-583°) + sin 137°sin (-583°)。
第六章 空 间 力 系.
Chap 01 3D動畫原理 3D電腦動畫 吳育龍老師.
Chapter 9 (三维几何变换) To Discuss The Methods for Performing Geometric Transformations.
第二章 需求、供给和均衡价格 第一节 需求理论
  將討論柱的特性及一些設計柱之方法,本章一開始先概述挫曲的觀念,接著探討讓理想柱 (ideal column) 產生挫曲所需之軸向負載的大小。對柱的彎曲做更詳細地分析。柱之非彈性挫曲也以一特例呈現出。探討一些方法,用來設計那些以一般工程材料製成而承受集中力或偏心負載的柱。
第七章立体表面的交线 内容提纲 §7-1 截交线 §7-2 相贯线 §7-3 立体表面交线的分析.
1 在平面上畫出角度分別是-45°,210°,675°的角。 (1) (2) (3)
因式定理.
資源配置的五個面向 生產什麼 如何生產 何時生產 何處生產 生產收入如何分配 基礎經濟學 Chapter 2 需求﹑供給與均衡.
Chapter 2 Z-Transform and Discrete Time Systems Analysis
材料力学 第十章 组合变形.
第一章 直角坐標系 1-2 直角坐標.
第五讲 从常用连续分布到二维变量分布 本次课讲授:第二章的 ; 下次课讲第三章的 ;
第五节 力的分解.
2 需求供給與均衡.
3D Game Programming Projection
第 1 章 直線和線性函數.
第四章 X射线衍射线束的强度(II) §4. 6 结构因子的计算 §4.7 粉末衍射 §4.8 多重性因子 §4.9 洛仑兹因子
第4章 动量定理 §4.1 动量守恒定律与动量定理 孤立体系与动量守恒定律
第四章 不定积分 第一节 不定积分的概念与性质 一、原函数与不定积分 二、不定积分的基本性质 三、不定积分的性质 四、不定积分的几何意义.
运动学 第一章 chapter 1 kinematices.
3-3 錐度車削方法 一、尾座偏置車削法 二、錐度附件車削法 三、複式刀座車削法.
五.連續變數及常態分佈 (Continuous Random Variables and Normal Distribution)
模块六 房地产定价策略 主要内容 定价目标及影响定价的因素 定价方法 企业定价策略.
第五模块 微分方程 第三节 二阶常系数线性微分方程 一、二阶线性微分方程解的结构 二、二阶常系数线性齐次微分方程.
第六节 无穷小的比较.
第三模块 函数的微分学 第一节 导数的概念 一、瞬时速度 曲线的切线斜率 二、导数的定义 三、导数的几何意义 四、导数的物理意义 五、导函数
第五章 城市及工程平面控制网的测设与数据处理
函數與極限 函數 函數的圖形 函數的極限 連續函數 在無窮大處的極限 無窮極限 經濟學上的函數 商用微績分 Chapter 1 函數與極限.
OpenGL渲染管道与投影变换.
網路商店裝修之二 CSS樣式編輯.
S3-Physics Revision ( ) Second Term.
1.4 全称量词与存在量词.
第六章 样本及抽样分布 §2 抽样分布 4) 正态总体的样本均值与样本方差的分布: 定理1.
第二部分 导数与微分 在课程简介中已经谈到, 高等数学就是微积分(微分 + 积分). 对于一元函数来说, 微分本质上就是导数. 这一部分内容是“导数与微分”. 由此可见, 这一部分内容在本课程中的重要地位. 我们是在极限的基础之上讨论函数的导数和微分的. “导数与微分”是每个学习高等数学的人必须掌握的内容.
STRESS ANALYSIS OF PRESSURE VESSELS
三角比的恆等式 .
三角 三角 三角 函数 已知三角函数值求角.
Presentation transcript:

浙江大学CAD&CG国家重点实验室,教I 三楼 Chapter 3. Transforms 变换 金小刚 Email: jin@cad.zju.edu.cn 浙江大学CAD&CG国家重点实验室,教I 三楼

变换可以用来改变物体的位置、形状;对物体、光源和摄像机设置动画等 用齐次坐标,4X4矩阵来表示 大部分图形API (Application Programming Interface)包含矩阵操作

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

平移变换 y y x x

旋转变换

性质1:迹与旋转轴无关,都为 性质2:所有旋转矩阵为正交阵,多个旋转矩阵相乘仍为正交阵。

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

错切变换 六个基本错切矩阵:Hxy(s), Hxz(s), Hyx(s), Hyz(s), Hzx(s), Hzy(s)。 第一个下标表示改变的坐标 第二个下标表示实施错切的坐标

由于|H|=1, 故错切变换是一个保体积的变换 z z s 1 Hxz(s) 1 x x 1 1 由于|H|=1, 故错切变换是一个保体积的变换

Concatenation of Transforms 因矩阵相乘是不可交换的,所以矩阵的串连是与次序有关的 矩阵串连的好处:节约计算量,提高效率 复合矩阵为:C=TRS (对于column-major) 注:对于row-major,复合矩阵为C=SRT

刚体变换 只有物体的位置(平移变换)和朝向(旋转变换)发生改变,而形状不变,得到的变换称为刚体变换 特点:保持长度和角度

Normal Transform(法向变换) 几何变换矩阵不能直接用于变换法向! 假设变换几何的矩阵为M,则用于变换法向的矩阵为N=(M-1)T y y y incorrect correct polygon normal x x x 沿x方向比例缩放0.5

如果已知矩阵是正交的(只有旋转),则不需要计算机矩阵的逆:N=(M-1)T=M 平移不影响法向 若是刚体变换(保长的),采用法向变换的优点是可以避免法向的重新单位化 什么时候应用? > 如果三角形的顶点包含法向信息,则必须应用法向变换。 > 若法向是通过计算三角形边的叉积得到,则不需要。

逆矩阵的计算 如果矩阵由一个或多个简单变换复合而成,而且已知参数,则逆矩阵可通过“逆参数”和矩阵相乘次序来得到。 例子:M=T(t)R(Ø),则M-1= R(-Ø)T(-t) 如果矩阵已知是正交的,则M-1 =MT 如果未知任何信息:伴随矩阵法、Cramer法、LU分解法、Gauss消去法 Cramer法和伴随矩阵法具有较少的“if”分叉,应优先选用。 在现代的体系结构中, “if”测试最好避免

特殊矩阵变换和操作 实时图形中非常重要的矩阵变换和操作 1。Euler变换 2。从一矩阵中抽取基本变换 3。绕任意轴的旋转

Euler变换 Euler变换是一种直观的使一个物体(或摄像机)朝向一指定方向的有效方法。 其来源:瑞士大数学家Leonard Euler 缺省视域方向:视线为-z轴,头朝+y轴 Euler变换是三个矩阵的相乘 E为一正交阵,其逆矩阵

Euler变换:Head,Pitch and Roll 摇头 “No” y head 左右摇晃身体 点头 roll pitch -z x Euler变换:Head,Pitch and Roll 其它命名方式:x-roll, y-roll, z-roll。在飞行仿真中,采用yaw而非head

Gimbal lock现象:当一个自由度丧失时。 当 时,矩阵只依赖一个角(r+h)

从Euler变换获取参数 从一正交矩阵反求Euler参数 把上式展开,得到

由于sin p= f21 , f01/ f11= - tan r, f20/f22= -tan h 故三个欧拉参数的值为 h = atan2 (-f20, f22) p = arsin(f21) r = atan2(-f01,f11)

特殊情况处理 当cos p = 0时,f01=f11=0,此时r = atan2(-f01,f11)无解。因cos p = 0时,故sin p = ±1, 可任意设定 h=0, 再得到 r = atan2(f10, f00) 由于p的值域为[-900,900],如果p的值不在这个范围,原始参数无法求得。故求得的h、p、r不是唯一的。

矩阵分解 应用需求: 获取比例缩放因子 对于特殊系统,获取基本变换(如VRML采用Transform节点,不支持任意4X4矩阵) 决定一个变换是否刚体变换 当只有矩阵信息时,动画中关键帧插值问题 从一矩阵中剔除错切部分 平移获取很容易,rotation, scaling, shears获取较复杂

绕任意轴旋转 绕任意单位轴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

正交坐标系的构造 数值稳定的方法:先找到r中绝对值最小的坐标分量,然后把其设置为0,然后设置

由(r, s, t)构造矩阵M,该矩阵M把r变换为x轴, s变换为y轴, t变换为z轴。 故最后的变换为 含义:先把r变换为x轴,然后绕x轴旋转,最后用M的逆矩阵变换回去。注:这里M-1=MT

Goldman提出的方法 参考:Goldman, Ronald, “Matrices and Transformations ”, in Graphics Gems, 1990, pp.472-475

四元数(Quaternion) 最早由Sir William Rowan Hamilton于1843年提出,从复数推广到四维空间 1985年,Shoemake把四元数引入计算机图形学 在表示旋转和朝向方面,优于Euler角。具有表示紧凑,朝向插值稳定的优点

数学背景 定义: q=(qv, qw)=(iqx+jqy+kqz+qw)= qv+qw , qv= (iqx+jqy+kqz)=(qx, qy, qz) , i2 = j2 = k2 =-1, jk=-kj=i, ki=-ik=j, ij=-ji=k qw为实部, qv称为虚部,i, j, k 称为虚轴

四元数乘: qr = (iqx+jqy+kqz+qw) (irx+jry+krz+rw) = i (qyrz-qzry+rwqx+qwrx) + j (qzrx-qxrz+rwqy+qwry) + k (qxry-qyrx+rwqz+qwrz) + qwrw-qxrx-qyry-qzrz =(qv× rv+rw qv+ qw rv, qw rw- qv. rv) 四元数加: q + r = (qv, qw) + (rv, rw) = (qv+rv , qw+rw)

四元数共轭: q*= (qv, qw)*= (-qv, qw) 四元数范数: n(q)= ||q2|| =q q*=q* q = qv .qv+q2w=q2x+q2y+q2z+q2w 四元数的逆:q-1= q* / ||q2|| 共轭法则: (q*)*= q; (q+r)*= q*+ r* ; (qr)*= r*q* 范数法则: n(q) = n(q*); n(qr) = n(q) n(r)

线性性: p(sq+tr) = s pq+ tpr (sp+tq)r = s pr+ tqr 交换率:p(qr)=(pq)r 单位四元数: n(q) =1, 可写成 q= (sinø uq, cosø)=sinø uq+cosø; 其中||uq||=1 对于单位复数,有 cosø+ i sinø = eiø 对于单位四元数有:q= sinøuq+ cosø= eøuq 对数运算:log(q)=log(eøuq)=øuq 指数运算:qt=(sinøuq, cosø)t=eøtuq =sin(øt)uq+ cos(øt)

四元数变换 单位四元数的最重要性质:能表示任意旋转,而且表示简单、紧凑 给定矢量p=(px, py , pz , pw)T和单位四元数 q= (sinø uq, cosø),qpq-1把p绕单位轴uq旋转2ø角度 q和-q表示相同的旋转 q和r的复合旋转为rq uq ø ø

矩阵转换 把q转化为旋转矩阵,可得到( 设s=2/n(q) ): 对于单位四元数,上式简化为

旋转矩阵到四元数的转换 由Mq可得到 故若得到qw,则qx、 qy、 qz便可得。因为

故单位四元数为

单位四元数的球面线性插值 给定两个单位四元数q和r,计算其插值四元数 代数形式 更有用的形式Spherical Linear intERPolation (Slerp)

多个单位四元数的插值 目标:给定单位四元数q0, q1, … qn-1,计算其插值四元数 用Slerp直接推广,会导致关键帧处朝向的变化不连续 三次样条法: (1) 首先计算辅助四元数 (2) 然后用三次样条进行插值

从一个矢量旋转到另一矢量 给定两个单位矢量s和t,要把s变换到t 该问题可很容易采用四元数来解决。 (1) 首先计算单位旋转轴u=(s×t)/|| s×t || (2) e=s.t=cos(2Ø), ||s×t||=sin(2Ø), 2Ø为s和t之间的夹角,则所对应的旋转四元数为q=(sinØu,cosØ),简化后可得

通过巧妙的技巧,对应的旋转矩阵简化为 由于没有开方和三角运算,计算效率高

顶点混合(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 顶点混合

最简单方法:前臂和后臂仍单独设置动画,但关节处用一柔性的“skin”来连接。 柔性部分的一部分顶点由前臂的矩阵来变换,另一部分由后臂的矩阵来变换。即:一个三角形的顶点可以由不同的矩阵来变换,而不是一个矩阵。这种基本技术有时也称为“Stitching”。 进一步推广:一个顶点可以由几个不同的矩阵进行加权变换 实施方法:在物体上放置关节骨架,每个骨架按用户给定的权因子影响顶点。

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

顶点混合的数学表示 p为原始顶点,u(t)为变换后的顶点,n为影响p的关节数目 Mi:把第i个关节骨架的初始坐标系变换到世界坐标系 Bi(t):第i个关节随时间变化的世界变换,通常是一系列矩阵的连乘 wi:第i个关节骨架作用于p的权因子 vertex blending 例子

顶点混合可在CPU上实现。如果是瓶颈,则该操作应在图形硬件上实现, 有些图形硬件支持顶点混合。也可以用可编程图形硬件(Vertex Shader)实现。 DirectX 8 允许两种流水线来实现Skinning: (1) Fixed function path (2) Vertex shader

Fixed function path: 最多允许256个矩阵,每个顶点可最多用其中4个矩阵(在实用中已足够)。该系统称为“indexed vertex blending”。 缺点:Fixed function path 不能与Vertex shader联合使用,因为 Vertex shader 是另一个流水线的一部分。 采用Vertex shader实现vertex blending 的好处: (1). 硬件加速 (2). 可与per-pixel lighting 结合

Vertex Blending的一些其它问题 如果需要对皮肤模型进行精确的碰撞检测,则为了获取变换后的顶点,顶点混合不得不在CPU内进行(否则需要在GPU和CPU之间进行顶点传输)。 顶点混合可能出现的问题:不应该的折叠、扭曲,自交

投影(Projections) 到目前为止,齐次变换中的w分量还没有用到 透视投影矩阵(Perspective projection matrices)将用到该分量 我们采用右手坐标系,视线方向为-z 注:DirectX 采用的是左手系

正交投影(Orthographic Projection) 特征:平行线投影后仍为平行线 正投影到平面z=0的投影矩阵为

该矩阵把由这些平面构成的Axis-Aligned Bounding Box (AABB)变换为与轴对齐的立方体 实现正交投影更常用的矩阵:通过六元组来表达。(l, r, b, t, n, f):Left, Right, Bottom, Top, Near, Far planes. 该矩阵把由这些平面构成的Axis-Aligned Bounding Box (AABB)变换为与轴对齐的立方体 t y y y l r n T(t) S(s) b x x x z z z

对应的矩阵

Direct X中的正交投影 在DirectX中,z的值域为[0,1],而不是[-1,1],此时正交矩阵为

透视投影 特征:平行线投影后不再平行。 透视投影是图形学应用中用得最多的投影变换,因为它符合人观察世界的习惯。 假设投影平面为z=-d, d>0, 摄像机(视点)在原点,待投影的点为p,投影得到的点为q(qx, qy, -d)

投影平面z = -d p y pz p + q z = -d q q x x qx px z z 根据相似三角形法则:

得到透视变换矩阵 显然,容易验证

透视变换把视域四棱锥变换为正则视域体 视域四棱锥由(l, r, b, t, n, f)决定 (r, t, n ) (l, b, n ) y Pp (r, t, n ) (l, b, n ) x x z z

视域FOV(Field of View) Horizontal field of view: 由左右平面的夹角决定(l和r) Vertical field of view:由上下平面的夹角决定(t和b) FOV越大,则摄像机看到越多 若l≠r或者t≠b,则视域四棱锥为不对称的。在CAVE等立体视域中,需要不对称视域四棱锥

透视变换矩阵 把该变换应用于一个点,我们可以得到点q=(qx, qy,qz,qw)T, 通常其w分量不为零且不等于1。为了得到投影点,需要除qw分量。 该矩阵把z=f变换为+1,把z=n变换为-1

OpenGL的透视变换矩阵 首先乘以变换S(1,1,-1),使得远平面和近平面的值为正,0<n’<f‘

DirectX的透视变换矩阵 把近平面变换为z=0, 远平面变换为z=1;而且DirectX采用左右系来定义投影矩阵

透视变换引起的深度值的非线性变化 采用透视变换的一个结果是计算得到的深度值不再随输入的pz值线性变化 远平面和近平面的值影响z-buffer的精度 近平面越靠近原点,接近远平面的点使用的规范化设备坐标深度空间越小,这使得Zbuffer在远距离的地方不精确