图形学 | 期末复习(下)| games101笔记 | 补档

  • 博客基于GAMES101-现代计算机图形学入门-闫令琪,但不是其完整笔记,基于复习要求有一定的删减。
  • 考试以图形学入门基本概念核心研究内容为主,少量公式。即以论述概念为主,涉及少量算法。
  • p13:3:12是对应的games101视频节点。

文章目录

  • 📚光线追踪
    • 🐇为什么要光线追踪
    • 🐇光线追踪的几个假设
    • 🐇光线追踪
      • 🥕递归光线追踪过程
      • 🥕光线追踪加速——AABB包围盒
      • 🥕空间划分的分类
      • 🥕层次包围盒(BVH)
    • 🐇辐射度量学
      • 🥕Radiant Energy
      • 🥕立体角
    • 🐇反向反射分布函数(BRDF)
    • 🐇渲染方程
  • 📚材质与外观(BRDF)
    • 🐇全反射
    • 🐇菲涅尔项
    • 🐇各向同性/各向异性材质
  • 📚高级图像渲染概要
    • 🐇高级光线传播
      • 🥕双向路径追踪(BDPT)
      • 🥕Metropoils光线传播(MLT)
    • 🐇材质建模
      • 🥕表面模型——次表面散射(BSSSRDF)
  • 📚照相机、镜头和光场
    • 🐇曝光
    • 🐇景深
    • 🐇光场
  • 📚颜色与感知
  • 📚模拟与动画
    • 🐇关键帧动画
    • 🐇物理模拟
      • 🥕质点弹簧系统
      • 🥕粒子系统
    • 🐇运动学
      • 🥕正向运动学
      • 🥕逆向运动学
      • 🥕骨骼绑定

📚光线追踪

🐇为什么要光线追踪

p13:3:12

⭕️光栅化难以将一下的效果做好:

  • 软阴影
  • 毛玻璃材质的反射
  • 间接光照

⭕️光栅化虽然较快,但是质量较低

🐇光线追踪的几个假设

这些也是之后会提到的BRDF基本假设

  • 光沿直线传播(显然这是错的)
  • 光线与光线之间不会发生碰撞(显然这是错的)
  • 光线是从光源不断传播直到视椎体的(光线的可逆性)

🐇光线追踪

🥕递归光线追踪过程

p13:23:18

  • 光线不仅仅只会反射,还会折射,然后再与其他物体进行反射
  • 光线每次反射折射都会有能量损耗,不然经过无限次的累加只会变成白色
  • 递归过程需要设置一个最大次数
  • 两次反射和折射情况如下图可见

在这里插入图片描述

🥕光线追踪加速——AABB包围盒

基本概念,p13:56:22,关于包围盒:

  • 针对一个复杂的物体,用一个简单的图形把它框起来
  • 如果一个光线连包围盒也碰不到,就更不可能碰到物体了
  • 特殊的包围盒定义:三对面的交集形成的立方体,三对面分别与xyz轴平行
  • 使用包围盒包围与光一定轴对齐,减少了计算量

在这里插入图片描述

⭕️判定光线与包围盒的交点

🔔对于二维的包围盒:

  • 先判断与x这对面与光线相交(进和出)的时间tmin、tmax
  • 再判断y与光线的相交时间
  • 取交集(求出tmin的最大值,tmax的最小值)
  • If t e n t e r < t e x i t t_{enter} < t_{exit} tenter<texit, we know the ray stays a while in the box

在这里插入图片描述

🔔三维与二维类似:

  • 增加了一对平面,判断三对面的相交时间tmin,tmax
  • 取交集(求出tmin的最大值,tmax的最小值)
  • If t e n t e r < t e x i t t_{enter} < t_{exit} tenter<texit, we know the ray stays a while in the box

在这里插入图片描述

🔔几种负值的情况的处理

  • t m a x < 0 tmax<0 tmax<0,说明包围盒在光线背面(无交点)
  • t m a x > = 0 tmax>=0 tmax>=0 t m i n < 0 tmin<0 tmin<0则说明光源在包围盒中(有交点)

AABB有交点当且仅当 t m i n < t m a x tmin<tmax tmin<tmax t m a x > = 0 tmax>=0 tmax>=0

🥕空间划分的分类

普通的网格划分对物体分布不均匀的场景中不友好(即使这样的网络也很常见),因此引入空间划分来切割网格。p14:17:47

⭕️八叉树(Oct-tree)

  • 八叉树是在每个子树下面画十子,划分为四块(在二维下是分为四块,三维是八块)
  • 由于是均匀划分,会出现将同一个物体划分为两块的问题。

在这里插入图片描述

⭕️KD树(KD-Tree)

  • 每次划分只划分为两块(类似二叉树)
  • 在二维中第一次为水平的划分,第二次为竖直的,然后循环划分
  • 在三维中类似,以xyz轴顺序进行划分,这样可以保证划分比较均匀
  • 我们在AABB中主要使用KD树(曾经)

在这里插入图片描述

🔔KD树的划分

在这里插入图片描述

KD树:难以判断物体与包围盒边界的相交问题;一个物体容易同时穿过多个包围盒被重复计算影响性能

⭕️BSP树(BSP-Tree)

  • 划分与KD树类似
  • 由于划分不是横平竖直的不能用于AABB的划分

在这里插入图片描述

🥕层次包围盒(BVH)

过程+特点,p14:38:38

⭕️BVH的特点:

  • BVH的思想更像分组,只需将三角形**(物体)进行分组**(因此一个物体只可能出现在一个包围盒内)并对三角形(物体)较多的组进行递归分组
  • 每次的划分都选择XYZ中最长的轴进行划分,这样保证划分的大小比较平均
  • 总是选择中间的三角形进行划分,这样划分出来树更加接近平衡二叉树
  • 划分到一个比较小的数量后停止划分(比如5个三角形)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

⭕️BVH伪代码

Intersect(Ray ray,BVH node)
{if(ray misses node.bbox)return;//如果与节点光线都不相交就返回if(node is a leaf node){//如果相交且只是一个叶子节点test intersection with all objs;//将节点内三角形都做判断return closest intersection;//返回最近的那个}hit1=Intersect(ray, node.child1);//递归。如果不是叶子节点则递归找到最近的那个hit2=Intersect(ray, node.child2);//另一边return the closer of hit1,hit2;
}

在这里插入图片描述

🐇辐射度量学

之前提到的着色、光线追踪体系其实并不够真实,引入辐射度量学,定义了相关属性来描述光照

🥕Radiant Energy

p14:1:03:50

在这里插入图片描述

🥕立体角

p14:1:12:25

在这里插入图片描述

🐇反向反射分布函数(BRDF)

p15:29:14

  • BRDF定义了某个点接收到能量后反射能量与反射光的比例,表示指示方向的反射光和入射光的比例关系。
  • BRDF描述了光线从某个方向入射到物体表面上的一个微元面积上,从该方向反射到另一个方向的光线强度分布情况。
  • 材质的不同决定BRDF方程的不同。

在这里插入图片描述

🐇渲染方程

定义,渲染方程组成部分p15:41:47

  • 渲染方程由两部分组成,自发光 L e L_e Le和反射光
  • 其中反射光可以由光源直射也可以由其他的物体反射
  • 在反射方程的基础上加入自发光,定义了渲染方程
  • 渲染方程定义了所有的光线传播规律

⭕️借助BRDF可以定义出反射方程,即在某个方向接受到的所有的反射光线

在这里插入图片描述

在这里插入图片描述

⭕️渲染方程

在这里插入图片描述

📚材质与外观(BRDF)

材质由BRDF决定,或者说材质就是BRDF

🐇全反射

p17:29:44

在这里插入图片描述

在这里插入图片描述

🐇菲涅尔项

p17:35:22

在这里插入图片描述

  • 当入射角与物体相互垂直的时候,反射会更加明显
  • 菲涅尔项对绝缘体会更加明显(下图1),对导体来说并不明显(下2图),因为导体的折射率是负数。

在这里插入图片描述

在这里插入图片描述

⭕️公式

在这里插入图片描述

  • 上面的公式是准确的,但是计算十分复杂,需要考虑极化。
  • 下面的公式是一个近似解,图形学中广泛使用。

🐇各向同性/各向异性材质

p17:59:24

  • 各向同性(Isotropic)材质是指在各个方向上具有相同的物理性质和光学性质的材质。这意味着无论从哪个方向观察或照射,该材质的属性都是均匀的。(理想的漫反射表面)
  • 各向异性(Anisotropic)材质是指在不同方向上具有不同的物理性质和光学性质的材质。这意味着该材质在不同方向上对光的反射、折射或散射会有不同的行为。(金属材质通常是各向异性的)

在这里插入图片描述

📚高级图像渲染概要

🐇高级光线传播

🥕双向路径追踪(BDPT)

p18:7:05

  • 思想:从光源和相机各打出一条光线,然后连接端点。

在这里插入图片描述

  • 应用场景:在光源由漫反射形成的场景中效果较好。

在这里插入图片描述

🥕Metropoils光线传播(MLT)

p18:11:03

  • 思想:使用了马尔科夫链和蒙特卡洛算法,通过一定的概率扰动路径的传播,得到一条新的路径,有一条路径追踪为种子生成其他的路径。

在这里插入图片描述

  • 应用场景:在复杂场景中的光线追踪。

在这里插入图片描述

  • 缺点:难以估计渲染完成画面的时间,局部的结果可能会比较“脏”

在这里插入图片描述

🐇材质建模

🥕表面模型——次表面散射(BSSSRDF)

p18:1:00:30

  • 光线通过材质内部发生了散射,比如皮肤、玉石、水母等。

在这里插入图片描述

  • BSSRDF是BRDF的延伸

在这里插入图片描述

  • 让物体内外各有一个光源来模拟光的扩散,简单说就是能让光透出来

在这里插入图片描述

在这里插入图片描述

📚照相机、镜头和光场

🐇曝光

p19:21:47

  • Exposure = time*irradiance曝光 = 时间*辐射度
  • 时间由快门控制irradiance由光圈的大小和焦距控制

在这里插入图片描述

  • 对于机械快门,如果拍摄高速物体会产生运动扭曲的现象。
  • 光圈的大小控制单位时间内的进光量,光圈可以制造景深,通过F数 (F/N)来描述光圈的大小,F数是焦距/光圈直径 (N=f/D),F数越大光圈越小。
    • 光圈越大,快门速度慢,曝光时间长,光在感光器上停留时间长,会产生运动模糊的现象
    • 光圈越大景深越明显
    • 当相机设置较大的光圈以获得浅景深时,快门速度较快,可能无法捕捉到物体的运动轨迹,从而无法产生运动模糊效果。相反,当相机设置较小的光圈以获得深景深时,快门速度较慢,可能会捕捉到物体的运动轨迹,导致运动模糊。因此运动模糊和景深无法同时出现
  • ISO是一个后期的处理值,通过乘上ISO来改变整体的明暗
    • ISO也可以在硬件上进行改变,比如改变感光器的灵敏度
    • lSO过大会产生噪声,因此一般不直接大范围调整ISO来提高亮度
  • 通过很长的曝光时间应用于延时摄影上。

🐇景深

p19:1:09:13

  • 场景中的光经过滤镜,打到成像平面,在成像平面附近的某个区域,这个区域内CoC都是足够小的。
  • 当CoC足够小,我们就认为这个地方是清晰的,而这一区域就被我们称为景深(DOF)
  • 景深外的模糊的范围会因光圈大小而变化
  • 计算公式:

在这里插入图片描述

🐇光场

基本概念,p20:13:30

在这里插入图片描述

📚颜色与感知

  • 可见光的范围:图形学仅关心光谱中的可见光(400-700nm)

  • HSV:通过色调(H)、饱和度(S)、明度(V)来定义颜色空间的一种颜色标准。

  • CMYK:减色系统,由靛蓝、品红、黄色三种颜色混合出其他颜色再加上黑色组成,广泛应用于印刷

    在这里插入图片描述

📚模拟与动画

🐇关键帧动画

  • 最早是由最厉害的原画画出关键帧,其他助手画出之间的查值(渐变帧)
  • 现在通过插值补充两个动画中的查值
    • 线性插值一般过渡不那么自然
    • 使用平滑插值技术

在这里插入图片描述

🐇物理模拟

🥕质点弹簧系统

p21:28:24

简单定义:一系列相互连接的质点和弹簧

⭕️理想弹簧

在这里插入图片描述

⭕️非零长弹簧

在这里插入图片描述

⭕️加入阻尼力

在这里插入图片描述

⭕️完善的阻尼力

在这里插入图片描述

🥕粒子系统

基本概念,p21:48:40

⭕️粒子生成步骤

  • 生成粒子
  • 计算每个粒子的力 (难点)
  • 更新每个粒子的位置速度
  • 将死亡的粒子移除
  • 渲染

⭕️粒子之间的作用力

  • 引力与斥力:重力、电磁力
  • 阻尼力:摩擦、空气阻力、粘度
  • 碰撞:墙壁、容器、物体

⭕️应用:通过指定规则让粒子表现群体的个体之间的关系

🐇运动学

不考察公式,都是关注概念,p21:1:00:47

🥕正向运动学

⭕️关节类型:

  • 可以绕着关节2维的旋转
  • 可以绕着关节3维的旋转
  • 可以拉长一部分的关节

⭕️我们可以通过参数很容易计算出p点的坐标,通过改变参数来实现骨骼的动画就被称为正向运动学

在这里插入图片描述

🥕逆向运动学

正向运动学不够直观

⭕️通过直观的控制尖端p点来直接控制参数

在这里插入图片描述

🥕骨骼绑定

  • 在模型上增加控制点,让人们能够方便的调整模型的动作
  • 对于同一个模型的两个动作,通过控制点间的位置插值计算来完成,这被称为:Blend Shape

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14919.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决printJS打印问题汇总

目录 一、打印预览表格列不全&#xff08;Element的el-table组件&#xff09; 1、打印设置“打印缩放” 2、修改el——table的底层代码&#xff08;如果页面上有多个表格慎用&#xff09; 一、打印预览表格列不全&#xff08;Element的el-table组件&#xff09; 问题描述&a…

zookeeper第一课-Zookeeper特性与节点数据类型详解

1、Zookeeper特性与节点数据类型详解 ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。 Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一…

Ubuntu下Go语言TCP广播服务器实现

最近在学习Go语言网络编程&#xff0c;突然想到很久以前的用C语言写过的TCP广播聊天程序&#xff0c;然后就用Go尝试写了一遍&#xff0c;在此做个记录。 目录 1.广播结构 2.实现效果 3.源码 4.Go语言学习参考网站 1.广播结构 2.实现效果 服务器&#xff1a; 客户端1&…

计算机毕业论文内容参考|基于Python的入侵检测系统的设计与实现

文章目录 导文摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望导文 计算机毕业论文内容参考|基于Python的入侵检测系统的设计与实现 摘要 本文介绍了基于Python的入侵检测系统的设计与实现。首先,简要概述了入侵…

语言模型BERT理解

一、BERT概述 BERT是由Google在2018年提出的一种预训练语言模型。BERT的创新之处在于采用了双向Transformer编码器来生成上下文相关的词向量表示。 传统的单向语言模型只考虑了左侧或右侧的上下文信息&#xff0c;而BERT则同时考虑了左侧和右侧的上下文信息&#xff0c;使得生…

uni-app获取系统信息(手机牌子、手机型号、屏幕宽度、屏幕高度)

uni.getSystemInfo({success(res) {console.log(res.brand) //手机牌子console.log(res.model) //手机型号console.log(res.screenWidth) //屏幕宽度console.log(res.screenHeight) //屏幕高度}) .exec()}}); 如下 官网链接&#xff1a;系统信息的概念 | uni-app官网

【ES6】中构造函数的语法糖 —— Class(类)

在现代前端开发中&#xff0c;JavaScript的面向对象编程成为了主流。ES6引入了class关键字&#xff0c;使得开发者可以更方便地使用面向对象的方式编写代码&#xff0c;更接近传统语言的写法。ES6的class可以看作是一个语法糖&#xff0c;它的绝大部分功能ES5都可以做到&#x…

Leetcode每日一题:167. 两数之和 II - 输入有序数组(2023.7.8 C++)

目录 167. 两数之和 II - 输入有序数组 题目描述&#xff1a; 实现代码与解析&#xff1a; 暴力&#xff08;超时&#xff09; 双指针 原理思路&#xff1a; 二分 原理思路&#xff1a; 167. 两数之和 II - 输入有序数组 题目描述&#xff1a; 给你一个下标从 1 开始的…

【机器学习核心总结】什么是随机森林

什么是随机森林 森林里有很多树&#xff0c;随机森林里有很多决策树。 随机森林是决策树的升级版&#xff0c;随机指的是树的生长过程。世上没有两片相同的树叶&#xff0c;随机森林中的树也各不相同。在构建决策树时&#xff0c;我们会从训练数据中有放回的随机选取一部分样本…

【C语言】指针进化 !!!

前言 &#x1f388;大家好&#xff0c;我是何小侠&#x1f388; &#x1f343;大家可以叫我小何或者小侠&#x1f343; &#x1f490;希望能通过写博客加深自己对于学习内容的理解&#x1f490; &#x1f338;也能帮助更多人理解和学习&#x1f338; 兰生幽谷&#xff0c;不为…

交叉熵、Focal Loss以及其Pytorch实现

交叉熵、Focal Loss以及其Pytorch实现 本文参考链接&#xff1a;https://towardsdatascience.com/focal-loss-a-better-alternative-for-cross-entropy-1d073d92d075 文章目录 交叉熵、Focal Loss以及其Pytorch实现一、交叉熵二、Focal loss三、Pytorch1.[交叉熵](https://pyto…

SpringCloud入门实战(十二)-Sleuth+Zipkin分布式请求链路跟踪详解

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…