【北航计算机图形学笔记】完整版

【北航计算机图形学笔记】完整版
⽂章⽬录
0. 介绍
江西农业大学学报
计算机图形学: 使⽤数学算法将三维或⼆维图像转化为计算机显⽰器的栅格形式. Data–>Image
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-FFyShkqt-1593676402391)
(C:\Users\dreamer\AppData\Roaming\Typora\typora-user-images\1585298041484.png)]
主要研究内容: 渲染(光照模型), 建模(细分曲⾯, 扫描点云), 动画(物理真实感), ⼈机交互
1. 概论
计算机图形系统:
图像硬件系统: 图像输⼊输出设备, 图形计算设备.
图像软件系统: 图形应⽤程序, 图形⽀撑软件.
图像输出设备:
显⽰设备: CRT显⽰器, 平板显⽰器(等离⼦显⽰器, 液晶显⽰器)
硬拷贝设备: 打印机, 绘图仪
3D显⽰设备
除了,3D显⽰设备, 都是光栅设备, 但硬拷贝设备不能刷新.
光栅的硬件表现: 帧缓存
连续储存空间
储存屏幕上像素的颜⾊值
可看作所有显⽰设备的硬件接⼝像恋爱一样去工作
河南师范大学学报每个像素在帧缓存中1位的储存容量成为位⾯
不同位⾯的帧缓存展⽰的图像不同
颜⾊模型:
⾯向⽤户: HSV模型, HLS模型
⾯向设备: RGB模型, CMY模型, YIQ模型
图形计算设备: 显卡, GPU
输⼊⽅式: 测量过程, 设备触发器
输⼊模式: 请求模式, 采样模式, 事件模式
2. 计算机图形系统
图形软件系统
针孔照相机模型 虚拟照相机模型
图形绘制流⽔线:
顶点处理(坐标变换, 顶点颜⾊值)->裁剪和图元组装(视域->裁剪, 顶点->图元)–>光栅化(输出⽚元)–>⽚元处理(纹理,透明化)
OpenGL, OpenGL ES, WebGL
图元: ⼏何图元(点, 线段, 折线, 多边形), 图像图元
3. 基本图形学程序
空间:
标量场
向量空间(坐标系, 原点): 标量-向量乘法, 向量-向量加法
仿射空间: 点点减法
欧⽒空间: 内积和正交, 度量的变换(长度和⾓度)
凸性: 满⾜下式, 为凸的
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-KBDgSKo7-1593676402394)
(C:\Users\dreamer\AppData\Roaming\Typora\typora-user-images\1585494950007.png)]
坐标系在表⽰平移变换时,有困难,于是引⼊标架和齐次坐标
标架: 空间的⼀个定点O,连同三个不共⾯的有序向量e1,e2,e3的全体,叫做空间中的⼀个标架,记做{O;e1,e2,e3}。如果
e1,e2,e3都是单位向量,那么{O;e1,e2,e3}就叫做笛卡⼉标架。两两互相垂直的标架叫做笛卡⼉直⾓标架。在⼀般情况下,{O;e1,e2,e3}叫做仿射标架。
三维空间中: 坐标系变换(3x3)–>标架变换(4x4)
仿射变换: 组合的线性变换=变换的线性组合
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-qIKlvhCW-1593676402396)
(C:\Users\dreamer\AppData\Roaming\Typora\typora-user-images\1585495359508.png)]
流⽔线的级联 导致 变换的级联
4. ⼏何对象与变换
线性组合出各类变换
流⽔线:
COP投影中⼼, 透视投影
DOP投影⽅向, 平⾏投影(COP在⽆线远处)
没有COP,
平⾏投影: 正投影, 轴测投影, 斜投影
透视投影: ⼀点, 两点, 三点透视. (消失点的个数)
模-视变换矩阵: 模型到COP视⾓的变换.
三种⽅法定位相机(相机外参)
OpenGL的透视投影:
利⽤视域指定视景体
延吉市七中
透视投影和平⾏投影都可以转换为正投影, ⽅便流⽔线使⽤.
P=N(透视投影的规范化矩阵)S(缩放变换)H(错切变换)
5. 观察与投影
模型变换: 模型坐标系变到世界坐标系下
计算光照: 利⽤光照模型
观察变换: 世界坐标系变到相机坐标系下
透视变换: 流⽔线进⾏
光照模型: 使2D图像(帧缓存是2D的)看起来像3D
全局光照: 全局的能量平衡, 绘制⽅程(积分⽅程,很难计算)
简化使⽤局部光照: 只考虑光源和表明的⼀次相互作⽤
光源模型: 照明函数(参数: 三个位置, 两个⾓度, ⼀个波长)
四类光源: 环境光(强度相同), 点光源(距离衰减), 聚光灯(发光强度衰减), 远距离光源(平⾏光源)
反射模型
Phong反射模型(法向量n, 观察向量v, 光源向量l, 反射向量r)
改进Phong模型, 加⼊半⾓向量h
理想物体: 镜⾯反射表⾯, 漫反射表⾯, 半透明表⾯
实际物体是粗糙的: 表⾯反射, 微⼏何体
实际物体可以简化为三种表⾯反射的集合, 使⽤BRDF(双向反射分布函数)
法向量在OpenGL中是状态的⼀部分(已知的, ⽤户确定)
明暗绘制:
均匀着⾊(每个多边形内部颜⾊⼀致, 导致Mach带, 侧抑制)
平滑着⾊(多边形内部双线性插值颜⾊)
Phong着⾊(多边形内部双线性插值法向量,再⽤光照明公式计算颜⾊)
阴影: 局部光照模型需要补充阴影, 利⽤透视变换(投影)得到地⾯上的阴影区域.
6. 光照与明暗绘制
图元装配(连接图元)->裁剪(去掉不可见信息)->透视除法(规范化设备坐标系)->视⼝变换(投影到⼆维摄像机平⾯上)
⼆维裁剪
线段裁剪:
暴⼒求交点需要⼤量乘法计算
Cohen-Sutherland算法: 4位端点编码(确定点的⽅位), 分类讨论(4种), 减少除法
Liang-Barsky算法: 与四条边界直线相交, 看交点顺序. ⽤减法替代⼤部分除法
多边形裁剪:
Sutherland-Hodgman算法: 利⽤四个边界的延长线依次裁剪(每次判断多边形所有边, 更新点集), 问题: 可能会产⽣两个以上个图像,中间连接部分重叠(不独⽴). ⽅便⽤于流⽔线结构
Weiler-Atherton算法: 规定边为⽮量, 有出点和⼊点, 产⽣多个独⽴图像.
包围盒和包围体
曲线和曲⾯的裁剪
三维裁剪
⼆维算法都可扩展, Cohen-Sutherland算法变为6位, 其他算法加边界
视景体裁剪: 投影规范化后的正投影裁剪, 将三维任务简化为⼆维.
7.图元裁剪
光栅化: 顶点->⽚元(点->格⼦)
本PPT讲选取哪些顶点
⽚元Fragment: 颜⾊属性, 位置属性, 深度信息
直线光栅化:
DDA算法: 利⽤端点确定斜率, 计算x,y, 只⽤加法.
Bresenham算法(经典): 不⽤浮点计算. ⼀个⽚元到下⼀个⽚元只有两种可能, 所有判断更接近那个就⾏.
圆光栅化: 使⽤平⽅/开⽅/三⾓函数(极坐标)都很慢. 利⽤对称性先画第⼀象限, 这⼀步⽤中点画圆法(两个Bresenham算法), 然后对称得出.I m ∈(0,1)(m >1,交换xy )
椭圆光栅化: 同样利⽤对称性先画第⼀象限, ⽤中点()画圆法
⾛样: 离散化引起锯齿状边缘. 区域平均反⾛样技术(将Bresenham算法中的⽐例作为着⾊的权重).
8. 光栅化
隐藏⾯消除/可见⾯判定
对象空间算法: 适⽤于重叠少
遍历O(N^2)不可取.
画家算法: 先画底层(远景), 再画近景. 重叠测试(观察平⾯,深度)->调换顺序(避免死循环)
BSP树算法: ⽤平⾯不断在深度上分割物体集合, 建⽴树
图像空间算法: 适⽤于重叠多
遍历COP发出的k条光线, O(k), 性能可以但精度受帧缓存限制
Z-Buffer算法: 逐个物体计算, 双缓存(深度+颜⾊)更近的就更新, 计算量⼩, 可同时处理正投影变换+隐藏⾯消除+明暗处理, 但精度不⾜, 不能处理透明表⾯(不同深度的颜⾊混合).
A缓存算法: 深度域和强度域(⽤链表将所有深度的颜⾊都保存)
扫描线算法: 标记ON(可见)/OFF(不可见), 重叠时才计算深度值. 但不能处理循环遮挡\表⾯相交(可以分割物体解决这两个问题)
9~10. 隐藏⾯消除,纹理映射与⽚元处理
纹理映射+⽚元处理
帧缓冲的写操作: 以位块为单位, 位块传送/光栅操作(源缓存->⽬标缓存)
写⼊模式: 16种模式(保持不变\替换\按位与\按位或\等等)
映射(不⽤复杂模型)
纹理映射:
⼀系列纹理映射: 屏幕坐标, 对象坐标, 纹理坐标, 参数坐标
线性纹理映射⽅法
两步映射⽅法
纹理->简单三维中间表⾯(圆柱\圆等), 中间表⾯->对象表⾯
三种映射关系建⽴(中间表⾯的法向量\对象表⾯的法向量\对象中⼼的法向量)
⾯积平均法改善颜⾊⾛样现象
OpenGL: 定义纹理对象, 给顶点设置纹理坐标, 指定纹理参数, 设置纹理映射⽅式(调和\贴图(颜⾊不变))
山西职工医学院学报
环境贴图/映射:
两步⽅法
镜⾯中⼼绘制: 假装照相机放在镜⼦中⼼, 不需要计算所有光线及其反射. 中间表⾯: 球⾯映射/⽴⽅体映射. 但没有实现镜⼦本⾝的映射(⽐如光滑的⽔壶嘴)
常规绘制
凹凸映射:
法向量的扰动(⼏何不变)
⽚元合成:
α
合成(1=完全不透明, 0=完全透明). 也可以实现反⾛样, 多重采样
11. 可编程流⽔线和GPU
之前讲的是固定功能流⽔线: 参数控制, 各阶段功能固定,
可编程流⽔线: 较少状态变量, 某些阶段仍然是固定功能, 代码交复杂, 需要⼤量缓存对象.
顶点缓存对象VBO: 顶点数组对象VAO, 索引缓存对象EBO, 像素/纹理缓存对象PBO, 帧缓存对象FBO(实时渲染)/渲染缓存对象RBO(离线渲染)
着⾊器和着⾊语⾔:
实时渲染: OpenGL–GLSL, …
离线渲染: OSL, …
顶点着⾊器, ⽚元着⾊器, 细分着⾊器, ⼏何着⾊器私营企业主不能入党
GPU:
划分多个GPC图像处理簇, 其中划分SM处理器, 其中划分线程core核⼼
SIMD单指令多数据, (升级版)SIMT单指令多线程
统⼀着⾊器架构
12. ⼏何建模
⼏何建模
Geometric Modeling+⼏何信息+拓扑信息
分为显式建模(点云, 多边形⽹格, 细分曲⾯) / 隐式建模(代数曲⾯, 体素表达, ⽔平集)
Geometric Modeling+⼏何信息+拓扑信息
显式建模(点云, 多边形⽹格, 细分曲⾯) / 隐式建模(代数曲⾯, 体素表达, ⽔平集)
线框模型: 顶点+棱边, 简单快速但不精确
边界表达法(B-rep): ⽤⼀组曲⾯(⼆维)描述三维物体
点是最基本的信息;
边是由两点确定的;
环是由⼀组相邻的边组成的;
⾯是由封闭的环组成的;
体是由空间封闭⾯组成的。
解耦性好, ⽅便转换为线框模型(点+边)
但是占⽤空间⼤, B-rep表⽰不⼀定对应⼀个有效形体,通常运⽤欧拉操作来保证B-rep表⽰形体的有效性、正则性等。
三维流形: 在任意⼀点的附近⼀⼩⽚区域, 都是⼀个⼆维的⼀个⾯(a, b是, c不是, 附近区域不是⼀个⾯)
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-kyMJtWGF-1593676402398) (C:\Users\dreamer\AppData\Roaming\Typora\typora-user-images\1589645627173.png)]
多边形⽹格
是边界表达法的⼀种应⽤
使⽤半边数据结构简化储存
代数曲⾯过于复杂
体素构造表⽰法 (CSG)
复杂物体可由简单形体(体素: 提前定义好的集合),经过布尔运算后得到
实体表⽰为⼀颗CSG树的⼆叉树, 其叶结点为基本体素或⼏何变换参数; 中间结点为布尔运算或⼏何变换操作
局部修改困难, 不具备⾯,环,边, 点的拓扑信息
距离函数: 利于描述动态融合过程
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-gYtmpoKe-1593676402399) (C:\Users\dreamer\AppData\Roaming\Typora\typora-user-images\1589646801610.png)]
⽔平集: ⾼维空间描述低维空间
隐式模型的表⾯获取
四/⼋叉树
Marching Cube(MC)算法
隐式⽅法:
优点:
表达⽅式简介
便于空间查询
便于射线追踪
简单形状⽆损失精度
便于表达拓扑变化(最明显)
缺点:
复杂形体外形表达困难

本文发布于:2024-09-21 16:36:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/71623.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   变换   算法
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议