三维动画与交互技术复习笔记
1、OpenGL Architecture Review Board:OpenGL 架构评审委员会,是一个独立的联盟,负责管理 OpenGL 的未来,提出并批准对规范的更改,新版本和一致性测试。ARB 批准的 OpenGL 扩展很可能之后会成为核心。
2、面向嵌入式平台的 OpenGL ES,面向浏览器的 WebGL
3、
- GLUT:负责创建窗口,初始化 OpenGL 上下文以及处理输入事件等。
- GLFW:提供简单的 API,用于创建窗口,上下文以及处理输入时间。
- GLEW:提供有效的运行时机制,用于确定目标平台上支持哪些 OpenGL 扩展。
4、OpenGL 使用一组状态变量的集合来保持图形渲染管线的状态。
5、OpenGL 基本图元:POINTS, LINES, LINE_STRIP, TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN
6、逆时针为三角形的正方向
7、如果没有做背面剔除就可能会出现遮挡,要使用画家算法:首先绘制最远的,依次靠近
8、自遮挡的对象,没有启用深度测试就会产生显示错误。
9、在图元的坐标非常接近时,要启用多边形偏移,才能形成稳定的图像。
10、向量在图形学中可以表示位置(顶点),也可表示方向(视线方向、平面法线)
11、向量点乘和向量叉乘。
12、OpenGL 中的矩阵包括视图变换、模型变换和投影变换。
13、
- 视图变换:设定观察者或摄像机的位置
- 模型变换:在场景中移动物体
- 模型视图:模型和视图的一致性
- 投影变换:设定视景体的大小和形状
- 视口变换:窗口缩放
14、模型变换中旋转和平移的顺序非常重要
15、投影:从三维剪裁空间到二维屏幕空间
- 正投影:平行投影,没有畸变
- 透视投影:近大远小,视觉真实
16、欧拉角
- Yaw(偏航):y 轴
- Pitch(俯仰):x 轴
- Roll(翻滚):z 轴
17、glShaderModel mode 可以取下列值:
- GL_FLAT 恒定着色
- GL_SMOOTH 平滑着色
18、光照模型
- 局部光照模型:只考虑反射光:环境光(Ambient Light)、漫反射光(Diffuse Light)、镜面反射光(Specular Light)
Itotal=Iamb+Idiff+IspecI_{total} = I_{amb} + I_{diff} + I_{spec}Itotal=Iamb+Idiff+Ispec - 全局光照模型
19、环境光:Ie=IaKaI_e = I_a K_aIe=IaKa
反射强度=环境光强度 X 反射系数
散射光具有方向性,根据入射光线的角度在表面均匀地反射
Id=IpKdcosθ,θ∈[0,π2]I_d = I_p K_d cos \theta, \theta \in [0, \dfrac{\pi}{2}]Id=IpKdcosθ,θ∈[0,2π]
I=KaIa+KdIecosα+KsIecosyγI = K_a I_a + K_d I_e cos \alpha + K_s I_e cos^y \gammaI=KaIa+KdIecosα+KsIecosyγ
多光源计算模型:
I=KaIa+∑i=1mIi(Kdcosα+Kscosnγ)I = K_a I_a + \sum\limits_{i=1}^m I_i (K_d cos \alpha + K_scos^n \gamma)I=KaIa+i=1∑mIi(Kdcosα+Kscosnγ)
镜面反射光:
Is=KsIecosnθI_s = K_s I_e cos^n \thetaIs=KsIecosnθ
n 是高光指数,表面越光滑,n 越大
20、全局光照模型:可模拟现实世界中景物表面之间的镜面反射和透射现象的贡献。Whitted 模型(光线跟踪算法、辐射度方法)
21、抗锯齿=反走样,Antialiasing,全屏反锯齿(Full Screen Anti-aliasing,FSAA),超级采样抗锯齿(Super-Sampling Anti-aliasing,SSAA),多重采样抗锯齿(MultiSampling Anti-Aliasing,MSAA)
22、纹理过滤(Texture Filter):
过滤器种类:
- 最临近值过滤器(GL_NEAREST)会出现马赛克
- 线性过滤器(GL_LINEAR)平滑更接近与真实
23、纹理环绕
- GL_REPEAT,重复
- GL_MIRRORED_REPEAT:镜像重复
- GL_CLAMP_TO_EDGE:在0-1之间截止
- GL_CLAMP_TO_BORDER:以边界颜色进行扩展
24、Mipmapping 纹理由一系列纹理图像组成,每个图形的大小都是前面的一半。Mipmapping 是一种 LOD(Level of Detail)技术,正方形的图像经过 Mipmapping 会增加 1/3 的大小。使用金字塔型存储结构。
25、三线性插值:在 mip 层之间执行线性插值,再在层内进行线性插值。
26、各向异性过滤:对周围各个方向上的像素进行取样计算后映射到目标像素上的技术,与双线性过滤和三线性过滤相比,它在大角度显示方面具有更高的精度,令画面更逼真,但计算量也更大,对显卡的要求更高。
27、OpenGL 的渲染管线
- 显示列表
- 求值程序
- 顶点操作
- 图元装配
- 像素操作
- 纹理装配
- 光栅化
- 片断操作
OpenGL 的渲染管线主要分为两个阶段:
- 首先是基于顶点的操作,然后图元被光栅化,产生片段
- 在片段写入到帧缓冲区之前进行纹理、雾以及其他基于片段的操作
28、顶点处理分为 4 个阶段:顶点变换、光照、纹理坐标和变换、剪裁
29、基于片段操作的结果是一个颜色值,基于片段的固定功能管线分为 4 个阶段:
- 纹理应用和环境
- 颜色求和
- 雾应用
- 抗锯齿应用
30、可编程渲染管线:使用着色器(Shader)替代固定管线中的部分阶段
31、OpenGL 着色语言(GLSL)是一种对 GPU 进行编程的高级语言。
32、GLSL 使用两种类型的对象:着色器对象和程序对象
33、使用高度图(Height map)的像素值确定物体表面的光照特性,凹凸纹理(Bump mapping)分为:
- 位移映射(Displacement Mapping):使用高度图将经过纹理化的表面上实际几何点位置沿着表面法线根据保存在纹理中的数值进行移位的技术
- 法线映射(Normal Mapping):直接把高度图转换成一张法线图(Normal Map),其图的 RGB 分别是原高度图该点的法线指向:Nx,Ny,Nz
34、显示列表(Display List):命令发送到缓冲区后可以反复调用,只执行一次发送和编译,提高了执行的性能。
35、使用顶点数组可以加速数据载入,在多次绘制间保存和共享数据。
36、索引顶点数组(Indexed Vertex Arrays)不是按顺序从头遍历顶点数组,由一个单独的索引数组指定,优点是节省内存、减少变换开销。共享顶点。
37、动画的分类:
- 传统动画(手绘动画)
- 定格动画 Stop Animation (粘土动画、木偶动画 Puppet Animation)
- 计算机动画(二维动画、三维动画)
38、动画由多幅连续画面组成,当画面快速、连续地播放时,由于人类眼睛存在“视觉滞留效应”而产生动感。
39、三维动画的种类:
- 变形动画(优点:能够精细地控制形状的变化、针对面部表情动画特别适用;缺点:动画数据量大、制作复杂度高、很难在多个角色间调用)
- 骨骼动画(模型创建、骨骼创建、骨骼绑定 Rigging,动画设定[关键帧、动作数据])
40、三维动画的控制技术
- 过程式动画
- 运动学动画(Kinematics):通过公式给定运动路径,自动生成连续运动的动画。适合简单物体的动画生成,粒子系统;s=vt
- 动力学动画(Dynamics):利用物理规律模拟,使用物理引擎;适合碰撞反应、爆炸效果;f=ma。
- 关键帧动画:动画师指定少量关键帧的骨骼姿势,计算机通过插值算法计算中间姿势。
41、
- 动作数据驱动的角色动画(Motion Capture)
- 表演动画(Performance Animation)
42、朝向的表示
- 使用矩阵表示:容易使用计算机处理,不可插值
- 使用欧拉角:表示简单直接,万向节死锁
- 使用四元数:球面线性插值
43、欧拉角有两种:
静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态。
动态:即绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动,所以称为动态。
使用动态欧拉角会出现万向锁现象;静态欧拉角不存在万向锁的问题。
一个典型的万向锁问题可以表述如下:先仰45°再俯90°,这与先俯90°再仰45°是等价的。事实上,一旦选择±90°作为俯角,就会导致第一次旋转和第三次旋转等价,整个旋转表示系统被限制在只能绕竖直轴旋转,丢失了一个表示维度。这种角度为±90°的第二次旋转使得第一次和第三次旋转的旋转轴相同的现象,称作万向锁。
44、四元数包含了足够有价值的朝向信息,但真正的威力源自可对它们执行的两种操作:合成和插值
44、球面线性插值(Spherical linear interpolation,通常简称Slerp),是四元数的一种线性插值运算,主要用于在两个表示旋转的四元数之间平滑差值。
45、
四元数的缺点:
- 比欧拉角稍微大一些,这个额外的数似乎没有太大关系,但在需要保存大量角位移时,如存储动画数据,这额外的33%也是数量可观的;
- 四元数可能不合法。坏的输入数据或浮点数舍入误差积累都可能使四元数不合法(能通过四元数标准化解决这个问题,确保四元数为单位大小);
- 难于使用,在所有三种形式中,四元数是最难于直接使用的。
四元数的优点:
- 不存在万向节锁的问题;
- 平滑插值(球面线性插值)
- 能和矩阵形式快速转换,四元数和矩阵间的转换比欧拉角与矩阵之间的转换稍微快一点。
- 仅用四个数。四元数仅包含4个数,而矩阵用了9个数,它比矩阵“经济”得多;
46、旋转表示方法的选择:
根据实际旋转不同的朝向表达方法
- 人机交互
- 欧拉角
- 大量的存储
- 欧拉角或四元数
- 插值
- 四元数(欧拉角会万向节死锁,矩阵则不能插值运算)
- 运动叠加
- 四元数或旋转矩阵(欧拉角不能直接叠加)
- 图形绘制
- 旋转矩阵
47、动作捕捉:使用各种设备记录人体的三维动作信息
48、动作捕捉技术的应用:
- 计算机动画
- 生物医学
- 机器人
- 电影
- 视频游戏
- 医疗人类学(运动康复训练)
49、动作捕捉的目标
- 全身动作
- 面部表情
- 手部动作
50、动作捕捉的特点
优点:
- 真实记录了每个动作细节
缺点:
- 难以修改:对动作数据的修改很容易导致失真
- 难以控制:没有很好的方法对捕获的动作进行控制
- 难以重用:应用到不同的角色、骨架
51、逆运动学(Inverse kinematics)是决定要达成所需要的姿势所要设置的关节可活动对象的参数的过程。例如,给定一个人体的三维模型,如何设置手腕和手肘的角度以便把手从放松位置变成挥手的姿势?这个问题在机器人学中是很关键的,因为操纵机械手臂通过关节角度来控制。逆运动学在游戏编程和三维建模中也很重要,虽然其重要性因为运动捕获数据的大型数据库越来越多的使用而降低了。
三维动画与交互技术复习笔记相关推荐
- 浙江大学软件学院三维动画与交互技术考试概念整理
第一讲 1. 增强现实技术AR: --融合了三维动画.立体视觉和图像处理: --建模.渲染.位置标定.图像融合: 2. OpenGL是一种用于创建实时3D图像的编程接口. 3. 三维 ...
- Java 3D编程实践_Java 3D编程实践——网络上的三维动画[学习笔记]
评论 # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2006-08-24 23:41 gy # re: Java 3D编程实践--网络上的三维动画[学习笔记] 2007-03-2 ...
- ArcGIS案例学习笔记4_2_城乡规划容积率计算和建筑景观三维动画
ArcGIS案例学习笔记4_2_城乡规划容积率计算和建筑景观三维动画 概述 计划时间:第4天下午 目的:城市规划容积率计算和建筑三维景观动画 教程: pdf page578 数据:实验数据\Chp13 ...
- 2018.8.5 复习笔记
2018.8.5 复习笔记 1,"a" + "b" + 3 strcat double d = 3 object obj = d int i = (int)ob ...
- HTML+CSS+JavaScript复习笔记持更(一)——标签篇
前言 博主现在还是在校生,目前大三,突然想起HTML的很多基础都忘记的差不多了,于是买了几本基础书,创建这篇博文用于记录复习笔记,也希望我自己在整理的时候,能帮助大家加深一些基础知识的印象,本篇博文将 ...
- 多媒体基础:动画和视频知识笔记
1.动画和视频的概念 动画:将静态的图像.图形等按照一定的时间顺序显示而形成的连续的动态画面.传统意义来说动画是在连续多格的胶片上拍摄的一系列画面,比将胶片以一定的速度放映,从而产生动态的视觉技术. ...
- JavaScript复习笔记
js复习笔记 js复习笔记,内容来源自廖雪峰JavaScript教程,w3school,菜鸟教程 一.快速入门 1.基本语法 1)js是一种直译式脚本语言 2)js结束语句后的;可以省略不写,原因是执 ...
- 【期末复习笔记】知识产权法——著作权、专利法、商标权
[期末复习笔记]知识产权法 著作权 著作权法不予以保护的客体 著作权的归属 著作权的内容 著作人身权 著作财产权 著作权的取得方式:自动取得 著作权的保护期限: 邻接权 表演者权 表演者义务 表演者权 ...
- 2021/06/29计算机视觉期末复习笔记整理
计算机视觉期末复习笔记整理 引言 我的复习参考 期末考试考题回忆 PPT对应中文笔记整理 参考的几篇博客的笔记 引言 刚结束可能是我学生时代最后一场考试了,orz热乎着,记录一下. 这门课是学校新开的 ...
最新文章
- MyEclipse插件安装
- CentOS 6.3下rsync服务器的安装与配置
- Spring Boot的第一个入门程序 HelloWorld
- Intel Realsense D435 管道配置文件类(pipeline_profile)与流配置文件类(config)
- 使用IntelliJ IDEA搭建多maven模块JAVA项目
- linux make怎么运行,Linux Make 命令教程
- day20 面向对象编程
- 通过消息跨进程发送与接收 TCopyDataStruct 数据 - 回复 skymesh
- centos系统加入windows域
- java在线测试工具_9个最好用的在线编译/调试工具
- 安装doctrine
- 【数据结构/leetcode】背包问题部分代码
- Python 动态加载并下载梨视频短视频
- Barsetto百胜图BAV01咖啡机——办公室福利包怎么选?现磨咖啡解君愁
- String Art利用matlab用直线作画
- Redis分布式锁的原理以及如何续期
- 网上订房系统的设计实现
- 亚马逊云科技——云原生主题容器入门笔记
- 牛客小白月赛 66 (A~F)
- 世纪末的星期(Java-蓝桥杯-省赛-T1)初学者详解
热门文章
- 校园心理网站html模板,基于SSM的校园心理咨询服务平台
- org.hibernate.MappingException:An association from the table XX refers to an unmapped class
- HTML 初学制作网页遇到问题的解决方法
- CSS类选择器+案例:谷歌LOGO
- 如何通过ICL8083制作一个信号发生器
- python 获取excel中的图表_使用Python将Excel中的图表导出为图像
- 【嵌入式面试】嵌入式知识点面经整理
- Ubuntu20.4安装Mendeley
- 关于“视口”与“窗口”
- PyTorch + Ray Tune 调参