当前位置: 首页 > news >正文

GAMES101 笔记 Lecture12 Geometry3

目录

      • Mesh Operations: Geometry Processing
        • Mesh Subdivision (曲面细分)
        • Mesh Simplification(曲面简化)
        • Mesh Regularization(曲面正则化)
      • Subdivision(细分)
        • Loop Subdivision(Loop细分)
          • 如何来调整顶点位置呢?
          • Loop Subdivision Result (Loop细分的结果)
        • Catmull-Clark Subdivision(General Mesh)
          • Catmull-Clark细分方法中顶点更新方法:
      • Mesh Simplification(曲面简化)
        • Collapsing An Edge(边坍缩)
      • Shadow Mapping
        • Visualizing Shadow Mapping(可视化Shadow Mapping)
        • Problems With Shadow Mapping(Shadow Mapping中存在的问题)
        • 硬阴影和软阴影的比较
      • 参考资料

Mesh Operations: Geometry Processing

Mesh Subdivision (曲面细分)

增加了曲面的分辨率:
在这里插入图片描述

Mesh Simplification(曲面简化)

降低曲面分辨率,尽力保持曲面原有的几何形状。

在这里插入图片描述

Mesh Regularization(曲面正则化)

原始曲面上的三角形可能大小差异较大,这时我们可以通过曲面正则化来改善曲面的质量。

在这里插入图片描述

Subdivision(细分)

曲面细分并不仅仅是增加三角形的数量,在增加三角形的数量后,三角形的位置也会发生一些移动,使得曲面的结果更加光滑。

在这里插入图片描述

Loop Subdivision(Loop细分)

  1. 首先,将每个三角形分割成四个子三角形

    在这里插入图片描述

  2. 根据权重,调整每个顶点的位置

将新的顶点和旧的顶点区分开,采用不同的规则来改变它们的位置。

在这里插入图片描述

如何来调整顶点位置呢?

对于新的顶点:

简单来说,找到周围四个点的位置进行加权平均。

在这里插入图片描述

对于旧的顶点:

简单来说,旧的顶点在更新时不仅仅取决于周围的顶点,同时还取决于自己原来的位置。

在这里插入图片描述

Loop Subdivision Result (Loop细分的结果)

在这里插入图片描述

Catmull-Clark Subdivision(General Mesh)

Loop细分只能用于三角网格,而对于一般的网格就不适用了。

就像下图中的,有三角形、四边形等,Catmull-Clark细分就可以很好的应用。

在这里插入图片描述

  1. 每条边都取中点
  2. 每个面也取一个中间的点
  3. 连接所有点

在这里插入图片描述
经过一次细分之后:

现在有多少奇异点?

每个三角形内部的点,经过一次细分后都是奇异点,原来是奇异点的点仍然是奇异点,和原来非四边形面的数量有关系。

它们的度都是多少?

每条边的中点的度为4,非四边形面中心的点的度为3,其余点度数保持不变。

还有多少非四边形面呢?

非四边形面全部消失了,每个非四边形面都会引入一个奇异点,然后变为一个四边形面。

Catmull-Clark细分方法中顶点更新方法:

在这里插入图片描述

Mesh Simplification(曲面简化)

目的:减少网格中三角形或四边形的数量,但保持原来的形状,从而提高程序的性能。

在不同的场景下选用不同的三角形数量:

在这里插入图片描述

Collapsing An Edge(边坍缩)

在这里插入图片描述

如何来度量通过简化造成的几何误差呢?

二次度量误差:找到一个新的位置,把点放在这里使得二次误差最小。

二次误差:一个点到与它相关联的面的距离的平方和。

算法的主要思想:

  1. 枚举每一条边,计算出坍缩这条边的二次误差度量。
  2. 贪心地选出一条最小的边。

这个问题是一个动态的问题,坍缩一条边会导致其它某些边的二次度量误差发生变化,我们需要更新其它边的二次度量误差。

二次度量误差曲面简化结果:

在这里插入图片描述

Shadow Mapping

Shadow Mapping是一种图像空间的算法:

在计算阴影时,不需要知道场景中的几何信息。
会产生走样现象。

关键思想:
一个不在阴影里的点,说明可以从摄像机看到这个点,光源也可以看到这个点。

经典的Shadow Mapping只能处理点光源,这种阴影通常有很明显的边界,一个点要么在阴影里,要么不在阴影里,这种阴影我们称它为硬阴影

  1. Render from Light,从光源看向场景,记录看到的每个点的深度,得到一副深度图.
    在这里插入图片描述

  2. Render from eye,从摄像机看向场景,将看到的点投影回光源成像的深度图中,比较一下二者的深度值,如果深度值相同说明这个点是可见的;否则,说明该点是不可见的。

在这里插入图片描述

在这里插入图片描述
一个复杂场景的阴影实例:

在这里插入图片描述

Visualizing Shadow Mapping(可视化Shadow Mapping)

将深度图的点投影回原来的位置,连一条线,这样我们就会发现一个现象,什么样的点是可以被看到的呢?

光源到该点的距离等于这个点的深度值。

在这里插入图片描述

Problems With Shadow Mapping(Shadow Mapping中存在的问题)

  • 硬阴影(只能处理点光源)
  • 质量取决于Shadow Map的分辨率
  • 涉及浮点深度值的比较运算,意味着会产生误差。

硬阴影和软阴影的比较

在这里插入图片描述

参考资料

GAMES101 Lecture12

相关文章:

GAMES101 笔记 Lecture12 Geometry3

目录 Mesh Operations: Geometry ProcessingMesh Subdivision (曲面细分)Mesh Simplification(曲面简化)Mesh Regularization(曲面正则化) Subdivision(细分)Loop Subdivision(Loop细分)如何来调整顶点位置呢?Loop Subdivision Result (Loop细分的结果) Catmull-Cla…...

Java的内部类

内部类的概念 在 Java 中,内部类是定义在另一个类或者方法的内部的类。内部类可以访问外部类的所有成员和方法,同时可以被外部类和其他类所访问。内部类可以分为四种类型:静态内部类、成员内部类、局部内部类和匿名内部类。 静态内部类 静…...

电赛培训(高频电路类赛题)学习总结

此篇文章基于全国电子设计大赛培训网的官网的高频电路类赛题总结的知识点。 高频电路赛题的相关理论知识点 (1)高频电路的单位 a.1kHz1000Hz不等于1KHz(大写的K是错误的) b.S是西门子,电导的单位,s是秒&…...

Rust ESP32C3开发

Rust ESP32C3开发 系统开发逐步使用Rust语言,在嵌入式领域Rust也逐步完善,本着学习Rust和ESP32的目的,搭建了ESP32C3的环境,过程中遇到了不少问题,予以记录。 ESP-IDF开发ESP32 这一部分可跳过,是使用C开…...

【Spring Cloud Gateway 新一代网关】—— 每天一点小知识

💧 S p r i n g C l o u d G a t e w a y 新一代网关 \color{#FF1493}{Spring Cloud Gateway 新一代网关} SpringCloudGateway新一代网关💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客&a…...

Java 中的关键字 final 和 static

一、关键字 final final 修饰符可以用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。 1.1 final 变量 final 有"最后的、最终的"的含义&#xf…...

Spring Cloud OpenFeign 全教程

1. 声明式 REST 客户端: Feign Feign 是一个声明式的 Web Service 客户端。它使编写 Web Service 客户端更容易。要使用 Feign,需要创建一个接口并对其进行注解。它有可插拔的注解支持,包括 Feign 注解和 JAX-RS 注解。Feign 还支持可插拔的…...

LLaMA模型论文《LLaMA: Open and Efficient Foundation Language Models》阅读笔记

文章目录 1. 简介2.方法2.1 预训练数据2.2 网络架构2.3 优化器2.4 高效的实现 3.论文其余部分4. 参考资料 1. 简介 LLaMA是meta在2023年2月开源的大模型,在这之后,很多开源模型都是基于LLaMA的,比如斯坦福大学的羊驼模型。 LLaMA的重点是比…...

了解Unity编辑器 之组件篇Effects(十一)

一、Halo:是一个可用于游戏对象的特效组件,它可以在对象周围添加一个光晕效果 Color属性: 用于设置Halo的颜色。你可以通过选择颜色面板中的颜色来指定光晕的外观。选择适当的颜色可以使光晕与游戏场景中的其他元素相匹配或突出显示。 Size属性: 用于设…...

笔记整理-SpringBoot中的扩展点

SpringBoot有哪些扩展点 aware 感知类接口 aware系列的扩展接口,允许spring应用感知/获取特定的上下文环境或对象。bean生命周期控制类接口 bean生命周期类的接口,可以控制spring容器对bean的处理。app生命周期控制类接口 app生命周期控制类接口&#xf…...

各系统的目录信息路径

Windows系统: 查看系统版本——C:\boot.ini IIS配置文件——C:\windows\system32\inetsrv\MetaBase.xml 存储Windows系统初次安装的密码——C:\windows\repair\sam Mysql配置——C:\ProgramFiles\mysql\my.ini MySQL root密码——C:\P…...

Asp.Net 使用Log4Net (封装帮助类)

Asp.Net 使用Log4Net (封装帮助类) 1. 创建Log4Net帮助类 首先,在你的项目中创建一个Log4Net帮助类,用于封装Log4Net的配置和日志记录逻辑。 using log4net; using log4net.Config;public class LogHelper {private static readonly ILog log LogMan…...

全志F1C200S嵌入式驱动开发(lcd屏幕驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lcd RGB屏幕作为比较经济、实用的显示工具,在实际场景中使用较多。它的信号来说,一般也比较简单,除了常规的数据信号,剩下来就是行同步、场同步、数据使能和时钟信号了。数据信…...

dubbo原理框架设计

dubbo原理框架设计 (1)config 配置层:对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类。 (2)proxy 服务代理…...

【数据挖掘】使用 LSTM 进行时间和序列预测

一、说明 每天,人类在执行诸如过马路之类的任务时都会做出被动预测,他们估计汽车的速度和与汽车的距离,或者通过猜测球的速度并相应地定位手来接球。这些技能是通过经验和实践获得的。然而,由于涉及众多变量,预测天气或…...

Typescript第四章 函数(声明和调用,注解参数类型,多态,类型别名,泛型)

第四章 函数 ts中声明和调用函数的不同方式签名重载多态函数多态类型声明 4.1 声明和调用函数 在js中函数是一等对象,我们可以像对象那样使用函数,可以复制给变量,可以作为参数传递,返回值,赋值给对象的原型&#x…...

大数据-Spark批处理实用广播Broadcast构建一个全局缓存Cache

1、broadcast广播 在Spark中,broadcast是一种优化技术,它可以将一个只读变量缓存到每个节点上,以便在执行任务时使用。这样可以避免在每个任务中重复传输数据。 2、构建缓存 import org.apache.spark.sql.SparkSession import org.apache.s…...

Android Service的生命周期,两种启动方法,有什么区别

Android Service的生命周期,两种启动方法,有什么区别 Android Service是一种后台组件,用于在后台执行长时间运行的任务,而无需与用户界面进行交互。Service具有自己的生命周期,其主要包含以下几个状态:创建…...

测试开源C#人脸识别模块ViewFaceCore(5:质量检测和眼睛状态检测)

ViewFaceCore模块中的FaceQuality支持预测人脸质量,最初以为是预测人体体重,实际测试过程中才发现是评估人脸图片质量,主要调用Detect函数执行图片质量检测操作,其函数原型如下所示: //// 摘要:// 人脸质量评估///…...

Go语言网络库net/http

Go语言网络库net/http Http 协议(Hyper Text Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,它通常运行在 TCP 之 上。超文本传输协议是互联网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。 Http 协…...

Acwing.91 最短Hamilton路径(动态规划)

题目 给定一张n个点的带权无向图,点从0~n-1标号,求起点0到终点n-1的最短Hamilton路径。Hamilton路径的定义是从0到n-1不重不漏地经过每个点恰好一次。 输入格式 第—行输入整数n。 接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距…...

[hfut] [important] v4l2 vedio使用总结/opevx/ffpeg/v4l2/opencv/cuda

(158条消息) linux驱动camera//test ok_感知算法工程师的博客-CSDN博客 (158条消息) linux V4L2子系统——v4l2架构(1)之整体架构_感知算法工程师的博客-CSDN博客 (158条消息) linux V4L2子系统——v4l2的结构体(2)之video_devi…...

2023年深圳杯数学建模A题影响城市居民身体健康的因素分析

2023年深圳杯数学建模 A题 影响城市居民身体健康的因素分析 原题再现: 以心脑血管疾病、糖尿病、恶性肿瘤以及慢性阻塞性肺病为代表的慢性非传染性疾病(以下简称慢性病)已经成为影响我国居民身体健康的重要问题。随着人们生活方式的改变&am…...

指令调度(Instruction Scheduling)

指令调度(Instruction Scheduling) 指令调度的约束基本机器模型基本块调度全局调度 指令调度是为了提高指令级并行(ILP),对于超长指令字(VLIW, Very Long Instruction Word)和多发射系统&#x…...

【运维】Linux 跨服务器复制文件文件夹

【运维】Linux 跨服务器复制文件文件夹 如果是云服务 建议用内网ip scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影…...

k8s apiserver如何支持http访问?

原本是可以通过设置api-server的--insecure-port来实现,但是这个参数已经被废弃了,更好的方法则是使用proxy来实现: 在集群任意一个节点上起一个proxy服务,并设置允许所有host访问: kubectl proxy --address0.0.0.0 …...

Safetensors,高效安全易用的深度学习新工具

大家好,本文将介绍一种为深度学习应用提供速度、效率、跨平台兼容性、用户友好性和安全性的新工具。 Safetensors简介 Hugging Face开发了一种名为Safetensors的新序列化格式,旨在简化和精简大型复杂张量的存储和加载。张量是深度学习中使用的主要数据…...

Unity 工具之 NuGetForUnity 包管理器,方便在 Unity 中的进行包管理的简单使用

Unity 工具之 NuGetForUnity 包管理器,方便在 Unity 中的进行包管理的简单使用 目录 Unity 工具之 NuGetForUnity 包管理器,方便在 Unity 中的进行包管理的简单使用 一、简单介绍 二、NuGetForUnity 的下载导入 Unity 三、NuGetForUnity 在 Unity 的…...

运算放大器(二):恒流源

一、实现原理 恒流源的输出电流能够在一定范围内保持稳定,不会随负载的变化而变化。 通过运放,将输入的电压信号转换成满足一定关系的电流信号,转换后的电流相当一个输出可调的简易恒流源。 二、电路结构 常用的恒流源电路如…...

企业选择租用CRM还是一次性买断CRM?分别有哪些优势?

CRM是企业管理客户关系,提升销售业绩,实现业务增长的重要工具。市场上的CRM系统销售方式主要有两种——租用型和买断型。那么,租用CRM好还是一次性买断CRM好?本文将从以下几个方面进行分析: 1、什么是租用型CRM和买断…...