12 Games101 - 笔记 - 几何(网格处理)、阴影图

12 几何(网格处理)、阴影图

曲面细分

曲面细分是指将一个模型的面合理的分成更多小的面,从而提升模型精度,使模型越来越光滑,提高渲染效果。

image-20240322142100177

Loop细分

Loop细分是指Loop提出来的细分规则,只能针对于三角形。

image-20240322142122013

步骤:

  1. 生成更多的顶点,组成新的三角形
    img
    如图,一个三角形被分成四个小三角形。

  2. 调整这些顶点的位置

  3. 把顶点分为两类:新生成的顶点和老的顶点。

    1. 对新的顶点进行加权平均:
      image-20240322142659541
      其中白点是新的顶点
    2. 对老的顶点进行加权平均:
      img
      可以看出,老的顶点受到自己和相邻顶点度数的影响。

Catmull-Clark细分

首先定义面和顶点类型:

  • quad face:四边形面
  • Non-quad face:非四边形面
  • Extraordinary vertex :奇异点(degree != 4,即度(点所连边数)不为4的点

细分步骤:

img
取每条边,每个面的中点并连起来。每个非四边形都引入了一个奇异点,非四边形面消失。

细分特点:

  • 有几个非四边形面,就会多出几个奇异点,所以现在一共有2+2 = 4个
  • 新多出来的奇异点的度数与原来所在面的边数相等,如这里就是3度
  • 第一次细分之后所有面都会变成四边形,且往后奇异点数目不再增加

计算方法:
image-20240322143200416

曲面简化

曲面简化是指将一个模型的面合理的合成更少的面,从而降低模型精度,减小开销,如远处模型使用曲面简化。
image-20240322143237703

边坍缩:将一条边的两个顶点合成为一个顶点。
img
确定进行边塌陷的边通过二次度量误差。

二次误差度量:希望把这个点放到一个位置上,使得这个点到原来的几个面的距离平方和最小。
img
即蓝色新顶点所在的位置与原来各个平面的垂直距离之和。如果能够使得这个误差最小那么对整个模型样貌修改一定程度上也会较小。

曲面简化算法流程:

  1. 为模型每条边赋值,其值为坍缩这条边之后,代替两个老顶点的新顶点所能得到的最小二次误差度量
  2. 选取权值最小的边做坍缩,新顶点位置为原来计算得出使得二次误差最小的位置
  3. 坍缩完之后,与之相连其他的边的位置会改动,更新这些边的权值
  4. 重复上述步骤,直到到达终止条件

这其实是一个标准的贪心算法,可能到不了全局最优解,但事实证明最终的结果依然相当不错

img

  • 优先队列/堆
  • 贪心算法,局部最优解而非全局最优解

shadow mapping

Shading Point没有考虑其他物体的影响,所以着色不能解决阴影。

Shadow mapping本质上是一种图像空间做法,生成shadow这一步不需要这个场景的几何信息,但也会走样。
Shadow mapping生成硬阴影,不生成软阴影。

shadow mapping具体操作:
key idea: 一个点,如果不在shadow里,你又能看到这个点,说明这个点可以从camera中看到,也可以从光源中看到。

  1. 从光源看向场景,记录看到的点的深度。
    img

  2. 从摄像机看向场景,并投影回光源所在的成像上。

    • 深度一致:说明能看到
      img
    • 深度不一致:摄像机能看到,但是光看不到外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传阴影
      img


shadow mapping最终效果:
img
可视化shadow maps:
image-20240322144517635

shadow mapping问题:

  • 浮点数难以判断相等,所以一般会有一个tolerance
  • shadow maps查询时不采用双线性插值,只寻找最近的点,因为倘若插值发生在物体边缘时,与邻接点的深度差距很大,会导致插值结果会有很大的误差
  • 属于硬阴影,只适用于点光源

硬阴影vs软阴影

image-20240322144621570

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Canvas与艺术】暗蓝网格汽车速度仪表盘

【关键点】 采用线性渐变色&#xff0c;使上深下浅的圆有凹下效果&#xff0c;使上浅下深的圆有凸起效果&#xff0c;两者结合就有立体圆钮的感觉。 【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type&quo…

计算联合体union的大小

一&#xff1a;联合类型的定义 联合也是一种特殊的自定义类型&#xff0c;这种类型定义的变量也包含一系列的成员&#xff0c;特征是这些成员公用同一块空间&#xff08;所以联合也叫共用体&#xff09; 比如&#xff1a;共用了 i 这个较大的空间 二&#xff1a; 联合的特点 …

matlab实现神经网络检测手写数字

一、要求 1.计算sigmoid函数的梯度&#xff1b; 2&#xff0e;随机初始化网络权重&#xff1b; 3.编写网络的代价函数。 二、算法介绍 神经网络结构&#xff1a; 不正则化的神经网络的代价函数&#xff1a; 正则化&#xff1a; S型函数求导&#xff1a; 反向传播算法&…

阿里云服务器价格表2024,最新报价2核2G/2核4G/4核8G/8核16G/16核32G

2024年腾讯云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

项目管理证书有何用?这些PMP考试机会一定要抓住

项目管理证书有何用&#xff1f;这些PMP考试机会一定要抓住&#xff01; PMP认证的中文全称是“项目管理专业人士资格认证”&#xff0c;是目前国际上声誉较高并且含金量比较高的项目管理证书之一&#xff0c;本人有幸考过&#xff0c;也通过PMP认证成功转岗&#xff0c;应该也…

力扣刷题之21.合并两个有序链表

仅做学习笔记之用。 题目&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xf…

进程和线程,线程实现的几种基本方法

什么是进程&#xff1f; 我们这里学习进程是为了后面的线程做铺垫的。 一个程序运行起来&#xff0c;在操作系统中&#xff0c;就会出现对应的进程。简单的来说&#xff0c;一个进程就是跑起来的应用程序。 在电脑上我们可以通过任务管理器可以看到&#xff0c;跑起来的应用程…

几个简单的参数,实现计算特征向量的余弦相似度(java实现,纯手撸)

几个简单的参数&#xff0c;实现计算特征向量的余弦相似度&#xff08;java实现&#xff0c;纯手撸&#xff09; 太狂喽&#xff01;突然高级起来&#x1f9e0;&#x1f9e0;&#x1f9e0;&#x1f9e0;&#x1f9e0;&#x1f9e0;&#x1f9e0;&#x1f9e0;&#x1f9e0;&am…

基于图的在线社区假新闻检测建模

论文原文&#xff1a;Graph-based Modeling of Online Communities for Fake News Detection 论文代码&#xff1a;GitHub - shaanchandra/SAFER: Repository containing the official code for the paper Graph-based Modeling of Online Communities for Fake News Detectio…

这个国产原型设计工具,建议PM新人一定要用!

Hello小伙伴们&#xff01;我是榛妮&#xff0c;原BAT大厂女产品经理一枚&#xff0c;目前在香港创业。 一转眼&#xff0c;做产品经理已经8年&#xff0c;想想入行时的种种往事&#xff08;尴尬情况&#xff09;&#xff0c;至今仍然历历在目。 说起刚入行时遇到的那些问题&a…

判断链表是否为环形链表

目录 一、题目 二、代码 三、疑点代码解析 1.初始化 2.循环 3.if判断 4. 需要注意的是 一、题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为…

Python综合实战案例-数据清洗分析

写在前面&#xff1a; 本次是根据前文讲解的爬虫、数据清洗、分析进行的一个纵隔讲解案例&#xff0c;也是对自己这段时间python爬虫、数据分析方向的一个总结。 本例设计一个豆瓣读书数据⽂件&#xff0c;book.xlsx⽂件保存的是爬取豆瓣⽹站得到的图书数据&#xff0c;共 6067…

python—接口编写部分

最近准备整理一下之前学过的前端小程序知识笔记&#xff0c;形成合集。顺便准备学一学接口部分&#xff0c;希望自己能成为一个全栈嘿嘿。建议关注收藏&#xff0c;持续更新技术文档。 目录 前端知识技能树http请求浏览器缓存 后端知识技能树python_api&#xff1a;flaskflask…

WebClient 同步、异步调用实现对比

文章目录 一、概述二、pom依赖三、代码结构四、源码传送1、异步代码2、同步代码3、完整代码 一、概述 WebClient是Spring WebFlux模块提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具&#xff0c;从Spring5.0开始WebClient作为RestTemplete的替代品&#xff0c;有…

Programming Abstractions in C阅读笔记:p331-p337

《Programming Abstractions in C》学习第79天&#xff0c;p331-p337&#xff0c;总计7页。 一、技术总结 /** File: stack.h* -------------* This interface defines an abstraction for stacks. In any* single application that uses this interface, the values in* the…

银行5G短消息应用架构设计

&#xff08;一&#xff09;RCS简介 1.1 RCS的提出与标准制定 RCS(Rich Communication Services & Suite&#xff0c;富媒体通信)是GSMA(Groupe Speciale Mobile Association&#xff0c;全球移动通信系统协会)在2008年提出的一种通讯方式&#xff0c;RCS融合了语音、消息…

Django(一)- 环境搭建和快速入门

一、搭建环境 1、创建Python虚拟环境 (base) C:\Users\35351>conda create -n django_study python3.9 2、安装Django (django_study) C:\Users\35351>pip install Django >> 查看安装版本 (django_study) C:\Users\35351>python -m django --version 3、安…

计算机毕业设计无从下手?学长带你从零开始,三天搞定!

嘿&#xff0c;各位朋友们&#xff0c;我是小新&#xff01;&#x1f44b; 研究生的日子就像过山车一样&#xff0c;一转眼就快到终点站了。目前也是在面临着毕业论文的压力&#xff0c;好在前期付出的时间和努力比较多&#xff0c;现阶段只剩下一些小问题了&#xff0c;相对来…

n维数字图像欧氏距离变换算法

算法简介 该算法主要用于在三维图像中计算有效体素之间的最短欧几里得距离。 算法出处&#xff1a;NEW ALGORITHMS FOR EUCLIDEAN DISTANCE TRANSFORMATION OF AN n-DIMENSIONAL DIGITIZED PICTURE WITH APPLICATIONS 算法在体渲染加速中的应用&#xff1a;Accelerated Volum…

[Halcon学习笔记]在Qt上实现Halcon窗口的字体设置颜色设置等功能

1、 Halcon字体大小设置在Qt上的实现 在之前介绍过Halcon窗口显示文字字体的尺寸和样式&#xff0c;具体详细介绍可回看 &#xff08;一&#xff09;Halcon窗口界面上显示文字的字体尺寸、样式修改 当时介绍的设定方法 //Win下QString Font_win "-Arial-10-*-1-*-*-1-&q…