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

图形学笔记 - 4. 几何 -网格操作和阴影映射

文章目录

    • 网格操作:几何处理
      • 细分
      • Loop细分
      • Catmull-Clark细分(一般网格)
      • 网格简化
    • 阴影 Shadows
      • 可视化阴影映射
      • 阴影映射
      • 阴影贴图的问题

网格操作:几何处理

  • 网格细分
  • 网格简化
  • 网格正则化
    在这里插入图片描述
    网格细分(上采样)
    在这里插入图片描述
    网格简化(下采样)
    在这里插入图片描述
    网格正则化(相同的 # 三角形)
    在这里插入图片描述
    调整样本分布以提高质量

细分

Loop细分

三角形网格的常用细分规则
首先,创建更多的三角形(顶点)
第二,调整他们的位置
在这里插入图片描述
把每个三角形分成四个
在这里插入图片描述
根据权重分配新的顶点位置

  • 新 / 旧顶点更新不同
    在这里插入图片描述
    更新
    对于新顶点(白点为例)
    在这里插入图片描述
    对于旧顶点(例如这里的 6 度顶点):(白点)
    在这里插入图片描述

结果:
在这里插入图片描述

Catmull-Clark细分(一般网格)

在这里插入图片描述

奇异点:度不为4
每个细分步骤:

  • 在每个面添加顶点
  • 在每条边缘添加中点
  • 连接所有新顶点
    在这里插入图片描述

一次细分:有多少个奇异点?它们的度是多少?有多少个非四边形面?
非四边形消失
再做下去奇异点数不再增加
在这里插入图片描述
在这里插入图片描述

FYI:Catmull-Clark 顶点更新规则(四网格)
在这里插入图片描述
收敛:整体形状和折痕
在这里插入图片描述
Subdivision in Action (Pixar’s “Geri’s Game”)

网格简化

目标:减少网格元素的数量
同时保持整体造型
在这里插入图片描述
边坍缩
假设我们使用边坍缩来简化网格
在这里插入图片描述

二次误差度量Quadric Error Metrics

  • 简化引入了多少几何误差?
  • 对顶点进行局部平均不是一个好主意
  • 二次误差:新顶点应使其到先前相关三角形平面的平方距离之和(L2 距离)最小化!
    在这里插入图片描述

边坍缩的二次误差

  • 坍缩一个边需要多少代价?
  • 想法:计算边中点,测量二次误差
  • 更好的主意:选择最小化二次误差的点
  • 更多详情:Garland&Heckbert 1997
    通过二次误差简化
    迭代坍缩边
    哪些边?使用二次误差度量分配分数
  • 到曲面的近似距离作为到包含三角形的平面的距离之和
  • 以最小分数迭代折叠边缘
  • 贪婪的算法… 伟大的结果!

问题:其他边跟着变,有影响

二次误差网格简化:
在这里插入图片描述

阴影 Shadows

如何使用光栅化绘制阴影?
阴影映射
在这里插入图片描述
一种图像空间算法

  • 阴影计算期间不了解场景的几何形状
  • 必须处理走样现象
    关键思想:不在阴影中的点必须同时被光线和相机看到
    Pass 1:从光渲染
    来自光源的深度图像
    在这里插入图片描述在这里插入图片描述

Pass 2A:从眼睛渲染
来自眼睛的标准图像(带深度)
在这里插入图片描述
PASS 2B:投射到光
将眼睛视图中的可见点投影回光源
在这里插入图片描述
在这里插入图片描述

可视化阴影映射

  • 一个带有阴影的相当复杂的场景
    在这里插入图片描述

  • 比较有阴影和没有阴影的情况
    在这里插入图片描述

  • 灯光视角下的景象
    在这里插入图片描述

  • 从光线的角度来看,深度buffer
    在这里插入图片描述

  • 比较distance(light, shading point)与阴影映射
    在这里插入图片描述
    绿色表示阴影图上的distance(light, shading point)≈深度
    非绿色是阴影应该出现的地方

  • 带阴影的场景
    在这里插入图片描述

阴影映射

众所周知的渲染技术
早期动画的基本阴影技术(小故事等)以及每一款3D电子游戏
在这里插入图片描述

阴影贴图的问题

  • 硬阴影(仅限点光源)
  • 质量取决于阴影贴图的分辨率(基于图像的技术的一般问题)
  • 涉及相等比较的浮点深度值意味着尺度、偏差、容差等问题
    硬阴影vs软阴影
    在这里插入图片描述

http://www.kler.cn/a/404922.html

相关文章:

  • 开源TTS语音克隆神器GPT-SoVITS_V2版本地整合包部署与远程使用生成音频
  • npm上传自己封装的插件(vue+vite)
  • 【实用数据】上市公司数字化转型双重差分准自然实验数据(2007-2022年)
  • goland单元测试
  • 新华三H3CNE网络工程师认证—子接口技术
  • 智能购物时代:AI在电商平台的革命性应用
  • 自动化测试面试技巧
  • 天润融通携手挚达科技:AI技术重塑客户服务体验
  • 面试小结(一)
  • 解决Electron拖拽窗口点击事件失效问题
  • Python CSV文档自动化操作详解
  • SqlServer 链接一个 SqlServer的链接服务器
  • 自动驾驶系列—探索自动驾驶数据管理的核心技术与平台
  • 微信小程序样式
  • windows 和 linux检查操作系统基本信息
  • 前端开发调试之 PC 端调试学习笔记
  • 【ARM Coresight OpenOCD 系列 6.2 -- Boundary Scan Commands】
  • 药典新篇:Spring Boot助力中药实验管理
  • 使用redis-shake工具进行redis的数据同步
  • 使用IDEA+Maven实现MapReduced的WordCount
  • c# npoi操作excel
  • 【ARM Coresight OpenOCD 系列 5.1 -- OpenOCD 无法识别CPUID 问题: xxx is unrecognized】
  • 嵌入式学习(13)-塔石TAS-LAN-476串口服务器
  • 双因子认证:统一运维平台安全管理策略
  • iOS应用网络安全之HTTPS
  • Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现