计算机图形学入门15:几何表示

news2024/10/7 18:22:50

1.几何概论

        通过图形学建模表示现实生活中的各种物体,要解决的第一个问题就是如何定义物体形状,而这就涉及到了几何(Geometry)。如下图所示,各种各样的玻璃水杯、车子上的不同部件、水花四溅的模拟、病毒的微观结构等这些几何形状。

        那么如何通过几何方法表示物体呢?对此,图形学中定义了两种几何表示方法。即隐式几何表示(Implicit Representations of Geometry)和显式几何表示(Explicit Representations of Geometry)。

1.1隐式几何表示

        隐式几何表示是一种使用数学关系式来描述几何形状的方法,而不是直接描述其顶点和边界等元素。如下图所示,定义一个函数f(x,y,z)=0,只要找到任何一个点满足这个条件,就表示这个点是物体表面上定义的一点,然后找到所有的点,就可以把物体表面画出来。

        隐式几何表示用来描述表面都有哪些点是相对困难的,也很不容易看出来形状,如下图所示。

        但是,隐式几何表示用来判断一个点是否在表面内外是容易的。如下图所示,将一个点带入公式,如果得到结果是0表示在表面,如果是负的表示在物体内,如果是正的表示在物体外。

1.2显式几何表示

        显式几何表示是一种直接或间接(通过参数映射的方式)定义点、线、面等元素集合的方法。在显式几何表示中,各元素的位置通常由坐标值直接给出,各元素之间的关系通常由数据结构来表示。比如,下面的关系式通过U、V参数映射的方式间接定义了点的集合。

        显式几何表示只要带入每个U、V的值,就能很容易找到物体表面的形状。如下图所示,同样一个圆环,用显式几何表示法表示。

         但是,显式几何表示判断一个点是否在表面内外是困难的。如下图所示。除非是已经知道这个式子定义了是某个单位球。

        综上,不同的表示法有各自的优势和劣势,要根据需要使用哪种表示法

2.隐式几何表示分类

        隐式几何表示的常用技术有以下这些。

  • 代数曲面(Algebraic Surface)
  • 构造实体几何(Constructive Solid Geometry)
  • 距离函数(Distance Function)
  • 水平集(Level Set)
  • 分形(Fractals)

2.1代数曲面

        代数曲面是通过一组参数方程定义的曲线和表面。这种方法表示非常的不直观,很难看出几何形状。下图所示,这些几何体就比较适合使用代数曲面来表示。

        它适用于一些简单的,可以使用数学关系式表示的几何体。一些结构复杂的几何体很难描述,比如要描述一头奶牛。

2.2构造实体几何

        构造实体几何(CSG)是通过布尔运算来组合不同的几何体。下图所示。

        一些复杂的几何体可以通过简单的几何体来组合构造。如下图所示。这是非常常见的操作,在很多建模软件里都支持这种操作。

2.3距离函数

        距离函数描述空间中任何一个点到几何体表面的最小距离。如下图所示,两个球通过距离函数进行融合(Blend)

        一种特殊的距离函数,符号距离函数(Signed Distance Function),其以空间中任意一个点作为输入,根据距离函数的返回值,可以进行判断:

        1.当距离函数的值大于 0,表示点在几何体外部。

        2.当距离函数的值小于 0,表示点在几何体内部。

        3.当距离函数的值等于 0,表示点在几何体表面。

        可以混合两个任意距离函数。

        距离函数可以应用到几何和几何之间比较圆滑的过渡,如下图所示是一个距离函数的例子。

2.4水平集

        对于表面规则的几何体,我们可以使用距离函数来表示。对于表面复杂的几何体,距离函数难以适用,此时,我们可以使用水平集来表示。

        水平集的核心思想与距离函数一样,区别在于距离函数使用通过输入空间点来计算该点到几何体表面的距离,水平集则存储了一系列距离值,我们可以通过插值法找到距离为 0 的位置,拟合出一条曲面用于表示几何体的表面。如下图所示。

        这种方式类似地理上使用的等高线,描述一个函数在不同位置有相同的值,对于水平集来说关注函数在什么地方等于0。

        通过水平集可以把水滴与水滴之间融合之后形状表示出来。

        水平集不仅可以定义二维空间的格子,还可以定义三维空间上的格子,可以与三维纹理结合。

2.5分形

        对于自然界中难以控制的形状,并且局部部分和整体非常相似,就可以用分形表示。如下图所示是自然界中的分形例子。

        分形,类似于递归,即局部和整体的形状相似。如下图所示。分形通过迭代函数系统(IFS)来生成。IFS是一种迭代的过程,该过程将函数反复应用于某个起始点或起始数据。这些函数通常是缩放、旋转、平移等操作,同时保持自相似性。

        分形由于变化频率高,对渲染是一个非常大的挑战。

2.6优缺点

        隐式几何表示法优缺点如下。

优点:

        1.通常表述容易,有利于存储(例如一个函数)。

        2.某些查询很容易(点在表面内外,到表面的距离)。

        3.适用于光线和表面的相交(后面内容)。

        4.对于简单的形状描述精准(无采样误差)。

        5.易于处理拓扑变化(例如流体)。

缺点:

        1.难以模拟复杂的形状(比如奶牛)。

        2.很难知道这个面上有哪些点,很难看出式子表示的是什么形状。

3.显式几何表示分类

        显式几何表示的常用技术有以下这些。

  • 点云(Point Cloud)
  • 网格模型(Polygon Mesh)

3.1点云

        点云是显式几何表示中最简单的技术,其核心思想是使用大量的点来表示几何体的表面。

        点云优点是可以轻松表示任何形状,适用于大型数据集。由于点云的缺点很明显,内存占用大,因此一般会被再次转换成多边形网格。

        点云的密度越高,几何体的精度越高,如下图所示,底部点云较稀疏,上不点云密集。

3.2网格模型

        网格模型是图形学中最常用的几何表示方法,它存储顶点和多边形(一般是三角形或四边形)。这种形式非常容易处理、模拟、采样,但是也拥有更复杂的结构。

        在 3D 建模中,我们经常会用到 .obj 格式的模型文件,其本质上是一个文本文件,记录了顶点、法线、纹理坐标、连接关系,由此构成几何体的形状。如下图所示,是一个立方体结构的表示。

        其中,v表示顶点坐标,vn表示法线(多了两条是因为建模冗余),vt表示纹理,f表示面。比如 f 5/1/1 1/2/1 4/3/1 表示三角形面是由第 5、1、4 个顶点组成,三个点的纹理坐标是第 1、2、3 对应的纹理坐标,面的法线是第 1 条法线。

3.3优缺点

        显式几何表示法优缺点如下。

优点:

        1.表示形状容易。

缺点:

        1.难以判断点是否在表面上(或内、外)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pikachu靶场--文件包含

参考借鉴 Pikachu靶场之文件包含漏洞详解_pikachu文件包含-CSDN博客 文件包含(CTF教程,Web安全渗透入门)__bilibili File Inclusion(local) 查找废弃隐藏文件 随机选一个然后提交查询 URL中出现filenamefile2.php filename是file2.php&…

MCK主机加固在防漏扫中的关键作用

在当今这个信息化飞速发展的时代,网络安全成为了企业不可忽视的重要议题。漏洞扫描,简称漏扫,是一种旨在发现计算机系统、网络或应用程序中潜在安全漏洞的技术手段。通过自动化工具,漏扫能够识别出系统中存在的已知漏洞&#xff0…

C++项目实战:SPDK文件系统

目录 一、Blobstore设计框架二、Cache机制三、Blob FS I/O操作四、SPDK FUSE (Filesystem in Userspcae) 前言 Blob FS是spdk面向于用户态的轻量级的文件系统 SPDK通过绕过内核(kernel bypass)的方案,构筑了用户态驱动,并利用异步轮询、无锁机制等&a…

函数依赖-函数依赖、平凡函数依赖、完全与部分函数依赖、传递函数依赖

一、引言 函数依赖是关系模式中属性与属性之间存在的一种重要数据依赖 1、将关系模式R的模式结构改为 R(SNO,CNO,SN,SD,DD,GRADE) 并对属性列进行重命名 R(学生学号&#xff0c…

msvcp100.dll已加载但找不到入口点的处理方法,分析比较靠谱的msvcp100.dll解决方法

用户在日常使用中有时会遇到一个错误提示:“已加载 msvcp100.dll,但找不到入口点”。这一信息不仅引发了使用上的不便,也对软件的稳定性产生了质疑。理解并解决该问题不仅对确保计算机正常运行至关重要,也对维护软件的长期稳定性和…

油猴 脚本如何添加包含哪个网址 执行脚本

油猴 脚本如何添加包含哪个网址 执行脚本 在这里面加上就可以 // include *://blog.csdn.net/*/article/details/* // include *.blog.csdn.net/article/details/*

【随手记】贴一段matplotlib绘图的多图拼接代码

二维: import numpy as np import matplotlib.pyplot as pltpic_names ["pic1", "pic2", "pic3", "pic4", "pic5", "pic6", "pic7", "pic8", "pic9", "pic10&qu…

代理四川公司疑难商标办理商标异议复审办理

申请商标注册或者办理其他商标事宜,可以自行办理,也可以委托依法设立的商标代理机构办理。外国人或者外国企业在中国申请商标注册和办理其他商标事宜的,应当委托依法设立的商标代理机构办理,按照被代理人的委托办理商标注册申请或…

BEV 中 multi-frame fusion 多侦融合(一)

文章目录 参数设置align_dynamic_thing:为了将动态物体的点云数据从上一帧对齐到当前帧流程旋转函数平移公式filter_points_in_ego:筛选出属于特定实例的点get_intermediate_frame_info: 函数用于获取中间帧的信息,包括点云数据、传感器校准信息、自车姿态、边界框及其对应…

EasyCVR/EasyDSS无人机直播技术助力野生动物监测:开启野生动物保护新篇章

近日有新闻报道,一名挖掘机师傅在清理河道时,意外挖出一只稀有的扬子鳄,挖机师傅小心翼翼地将其放在一边,扬子鳄也顺势游回一旁的河道中。 随着人类对自然环境的不断探索和开发,野生动物及其栖息地的保护显得愈发重要。…

压测怎么做?如何自动化?盘点各大公司全链路压测方案与实践

本文综合盘点各大公司团队的全链路压测技术方案和实践路径,供大家参考。 一、什么是全链路压测? 全链路压测指的是基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。常用…

PyMuPDF 操作手册 - 01 从PDF中提取文本

文章目录 一、打开文件二、从 PDF 中提取文本2.1 文本基础操作2.2 文本进阶操作2.2.1 从任何文档中提取文本2.2.2 如何将文本提取为 Markdown2.2.3 如何从页面中提取键值对2.2.4 如何从矩形中提取文本2.2.5 如何以自然阅读顺序提取文本2.2.6 如何从文档中提取表格内容2.2.6.1 提…

为啥找对象千万别找大厂男,还好我不是大厂的。。

网上看到一大厂女员工发文说:找对象千万别找大厂男,理由说了一大堆,无非就是大厂男为了逃避带娃,以加班为由宁愿在工位上玩游戏也不愿回家。当然这种观点有的人赞同有的人反对。 网友精彩评论: --------------下面是今…

视频太大了怎么缩小内存

我们在分享视频的时候,有时候会遇到过视频文件太大,无法发送或者上传的情况,别担心,今天我就来给大家分享一个简单有效的方法,让你的视频变得更小,更方便分享! 打开 “51视频处理官网 的网站。上…

vue引入aos.js实现滚动动画

aos.js官方网站:http://michalsnik.github.io/aos/ aos.js介绍 AOS (Animate on Scroll) 是一个轻量级的JavaScript库,用于实现当页面元素随着用户滚动进入可视区域时触发动画效果。它不需要依赖 jQuery,可以很容易地与各种Web开发框架&#…

高压线防外破警示灯在电力安全发挥的作用_鼎跃安全

高压输电线路往往跨越城市、乡村和野外,覆盖范围广泛。随着城乡建设和交通运输的快速发展,高压线路周围的活动频繁,外部破坏风险增加。车辆撞击电线杆、施工机械误碰线路以及人为破坏等事件时有发生,严重影响电力供应的稳定性和安…

Linux---rpm/yum包管理器

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.RPM概述 RPM(Red Hat Package Manager)是Linux中的一种软件包管理格式也可以称为软件包管理器;它可以将软件包以二进制形式打包,并提供工具来安…

记录一个利用winhex进行图片隐写分离的

前提 是一次大比武里面的题目,属实给我开了眼,跟我之前掌握的关于隐写合并的操作都不一样。 它不是直接在文件里面进行输入文件隐写,叫你输入密码,或者更改颜色,或者偏移位置; 它不是单纯几个文件合并&a…

【GD32定时器】高级定时器生成PWM波+定时器外设配置DMA使用

基本定时器和系统时钟配置可以参考以下文章, 文章链接为: 【GD32系列–基本定时器Timer + 定时1ms 灯光间隔1s闪烁例程】 【GD32】_时钟架构及系统时钟频率配置 【GD32】 TIMER通用定时器学习+PWM输出占空比控制LED 目录标题 一 、DMA简介1 DMA 操作2 中断3 DMA 请求映射二、…

sharePoint-基于sharepoint列表中的其他列值自动更新值列

首先进入网站,点击网站内容 点击想要操作的数据表后面的按钮,点击设置 点击创建栏 填写栏名,类型选择计算值,公式用于对列表或库中的值执行计算,然后点击右下角的确定就添加成功了 公式参考: 公式SharePoi…