计算机图形学理论(1):建模基础

本系列根据国外一个图形小哥的讲解为本,整合互联网的一些资料,结合自己的一些理解。

场景的组成部分

场景相当于一个或多个模型的集合。模型包含以下内容:

  • 结构描述:几何形状,如顶点、纹理坐标等
  • 表面描述:外观及光照等

image.png

犹他壶模型(Utah teapot)

对于学图形学的人来说,犹他壶并不陌生。犹他壶模型是计算机图形学早期著名的3D模型(大约70年代~80年代)。在那个时候,3D模型通常被表示为多项式函数,主要技术被称为“样条曲线(spline curves)”,该技术将模型划分为多个表面块,如下所示:
image.png

三角形网格

现在我们主要使用多边形或三角形网格来构建模型。

3D 对象数据的类型

  • 多边形网格(polygonal meshes) —— 代表复杂的现实世界对象。
  • 样条面片(spline patches) —— 程序化建模。
  • 体积数据,体素(voxel) —— 通过将对象的密度存储在三维数组中来表示对象。
  • 构造立体几何(Constructive Solid Geometry) —— 常用于机器零件。
  • 其他。

这是网格和样条线之间的比较:
image.png

建模技术

点云技术

image.pngimage.png
首先,点云样本是非结构化的数据,所以没有关于两点之间邻接(连通性)的信息。为了使点能够连接在一起,我们必须使用额外的算法,例如 K 最近邻算法。

使用点云技术的优点之一是“简单”。此外,由于点云样本通过扫描能成为“原始数据raw data”,因此如今备受关注。

使用相机进行 3D 扫描

原理是通过一系列相机扫描物体,之后相机生成点云并捕获纹理。

原始数据都是“rgbd”数据,“rgb”的部分用于表示颜色和纹理,然后“d”(深度)用于生成点云。深度是指点与相机之间的距离。
image.png

多边形汤(Polygon Soup)

多边形汤是一组非结构化的多边形。它可以渲染一个对象,但不可以再进行其他操作,因为这些多边形之间并没有几何上的连系,也不含拓扑信息。为什么起这个名可以看下知乎的一个回答。
image.png

网格(Mesh)

网格是一组连接的多边形(通常是三角形)。 例如,多边形可以由多个三角形组成,并且三角形表示为一组顶点。一开始三角形之间没有连接,我们可以通过为每个顶点附加有关相邻三角形的附加信息(索引)来实现多边形上的连接。
image.pngimage.png
网格是表示对象的显式方法。

隐式曲面(水平集 Level set)

通过使用三维函数,我们可以隐式地表示一个对象。曲面表面上的点应满足“F(x,y,z) = 0”。当函数的结果为零时,表示该点是曲面上的一个点,称为等值曲面。
image.pngimage.png
这种技术有优点也有缺点。
优点:

  • 可以保证模型无孔洞
  • 易于改变拓扑

缺点:

  • 必须遍历体积数据,就会造成 CPU 时间开销,导致速度慢。
  • 需要更多的内存空间。

体素(Voxels)

医疗领域在CT、MRI中经常使用此类物体。体素是体积数据的 3D 图像。
image.png

构造立体几何

使用主要的几何图形,从布尔运算的层次结构中获得目标几何图形(并集、差集和交集),例子之一是CAD程序中的机械建模。
image.png

场景图(Scene Graph)

文章的开头提到过“一个场景相当于一个或多个模型的组合”。我们可以将模型放置为层次树,而不是将它们放置为列表。

如下图所示,从办公桌的角度来看,桌面上的一组模型(电话、镜子、相框)是叶子节点。通过使它们依赖于办公桌,我们可以构建新的模型。
image.pngimage.png
通过绘制一组对象的图形,我们可以应用视椎体进行剔除。“视锥体”是相机能够看到物体的空间。“剔除”是一种不会在视锥体空间之外渲染对象的技术。创建一组模型后,我们可以为包含所有对象的组设置包围体。如果我们将视图空间投影到单位立方体空间(NDC空间),红球将位于该空间之外。然后,我们可以在 CPU 操作内将其从渲染目标中删除。
image.png

程序化建模

我们在这里使用替换规则。
image.png
程序化建模的一个例子是“地形”。我们不使用纯随机数,而是利用高度图并生成受相邻位置高度影响的随机数。
image.png

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

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

相关文章

Vue3中的defineModel

目录 一、vue3的defineModel介绍 二、defineModel使用 (1)在vite.config.js中开启 (2)子组件 (3)父组件 一、vue3的defineModel介绍 为什么要使用到defineModel呢?这里有这样一种场景&…

“快速排序:一种美丽的算法混沌”(1.hoare)

欢迎来到我的博客!在今天的文章中,我将采用一种独特且直观的方式来探讨我们的主题:我会使用一幅图像来贯穿整篇文章的讲解。这幅精心设计的图表不仅是我们讨论的核心,也是一个视觉辅助工具,帮助你更深入地理解和掌握本…

学习深度强化学习---第2部分----RL动态规划相关算法

文章目录 2.1节 动态规划简介2.2节 值函数与贝尔曼方程2.3节 策略评估2.4节 策略改进2.5节 最优值函数与最优策略2.6节 值迭代与策略迭代2.7节 动态规划求解最优策略 本部分视频所在地址:深度强化学习的理论与实践 2.1节 动态规划简介 态规划有两种思路&#xff1…

前端 Web Workers 简介

简介 以前我们总说,JS 是单线程没有多线程,当 JS 在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要设置把任务放在任务队列中;执行任务队列中的任务也并非多线程进行的,然而现在 HTML5 提供了…

App备案、ios备案Bundle ID查询、公钥信息、SHA-1值

App备案、ios备案Bundle ID查询、公钥信息、SHA-1值 Bundle ID这个就不说了,都知道是啥,主要说公钥信息和SHA-1值的获取 打开钥匙串访问,找到当前需要备案App的dis证书,如下: #####右键点击显示简介 #####可以看…

03.仿简道云公式函数实战-QLExpress初探

1. 前言 在上一篇文章中,我们简单介绍了一下表达式引擎,并引出我们的主角QLExpress.在这篇文章中,我们先来一个QLExpress的热身。 2. 初探QLExpress 源码地址:https://github.com/alibaba/qlExpress 笔者下载源码的版本是3.3.…

STL源码剖析笔记——适配器(adapters)

系列文章目录 STL源码剖析笔记——迭代器 STL源码剖析笔记——vector STL源码剖析笔记——list STL源码剖析笔记——deque、stack,queue STL源码剖析笔记——Binary Heap、priority_queue STL源码剖析笔记——AVL-tree、RB-tree、set、map、mutiset、mutimap STL源…

【Spring 基础】00 入门指南

【Spring 基础】00 入门指南 文章目录 【Spring 基础】00 入门指南1.简介2.概念1)控制反转(IoC)2)依赖注入(DI) 3.核心模块1)Spring Core2)Spring AOP3)Spring MVC4&…

php实现截取姓名中的第一个字作为头像的实战记录

php 截取中文字符串第一个字 substr 函数 在 PHP 中,使用 substr 函数来截取中文字符串的第一个字。由于 PHP 默认的字符编码是 UTF-8,它可以正确处理中文字符。 $chineseString "你好世界"; $firstChar substr($chineseString, 0, 1); e…

中文分词演进(查词典,hmm标注,无监督统计)新词发现

查词典和字标注 目前中文分词主要有两种思路:查词典和字标注。 首先,查词典的方法有:机械的最大匹配法、最少词数法,以及基于有向无环图的最大概率组合,还有基于语言模型的最大概率组合,等等。 查词典的方法…

知识产权服务企业网站建设效果如何

知识产权服务也有较高的市场需求度,尤其如今互联网深入到各个行业,无论个人还是企业都会以不同的方式经营,相应的为保障自身权益,注册商标、专利等自然不可少,而对普通小白来说,想要完成这些流程也是有些难…

Python实现获取b站视频的弹幕内容

前言 本文是该专栏的第39篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,有详细介绍使用python增加b站视频的播放量方法,感兴趣的同学可往前翻阅《Python-增加b站视频播放量》。而本文,笔者再来单独的详细介绍,通过python来获取b站视频的弹幕内容。如下…

CGAL的3D皮肤表面网格

1、介绍 Edelsbrunner 引入的皮肤表面和具有丰富而简单的组合和几何结构,使其适合在生物计算中模拟大分子。 对这些表面进行网格划分通常是进一步处理其几何形状所必需的,例如在数值模拟和可视化中。 皮肤表面由一组加权点(输入球&#xff09…

html通过CDN引入Vue使用Vuex以及Computed、Watch监听

html通过CDN引入Vue使用Vuex以及Computed、Watch监听 近期遇到个需求,就是需要在.net MVC的项目中,对已有的项目的首页进行优化,也就是写原生html和js。但是咱是一个写前端的,写html还可以,.net的话,开发也…

期末速成数据库极简版【查询】(3)

目录 多表查询 【8】多表连接——内连接 🙂等值连接 🙂自然连接 🙂非等值连接 【9】多表连接——外连接 【10】交叉连接不考 【11】联合查询 【12】扩展多表连接 【13】嵌套查询 🙂 多表查询 【8】多表连接——内连…

OSPF路由协议

随着Internet技术在全球范围的飞速发展,OSPF已成为目前应用最广泛的路由协议之一。OSPF(Open Shortest Path First)路由协议是由IETF(Internet Engineering Task Force)IGP工作组提出的,是一种基于SPF算法的…

JS 云服务 Deno Depoly 宣布,推出定时运行功能 Deno Cron

如果需要定时执行 JS 脚本,以后多一个选项。 Web 构建日益复杂。编写现代软件包括利用云基础设施、剖析模板代码和管理复杂的配置,而开发人员只想专注于编写业务逻辑。 Deno 旨在通过删除配置和不必要的模板,从根本上简化 Web 开发。我们将无…

网络攻击(三)--攻击阶段

5. 威胁建模阶段 目标 了解威胁建模阶段的工作内容 工作内容 威胁建模主要使用在情报搜集阶段所获取到的信息,来标识出目标系统上可能存在的安全漏洞与弱点。 在进行威胁建模时,确定最为高效的攻击方法、所需要进一步获取到的信息,以及从…

【前端】CSS浮动(学习笔记)

一、浮动 1、传统网页布局 网页布局的本质:用 CSS 来摆放盒子,把盒子摆放到相应位置。 CSS 提供了三种传统布局方式(盒子如何进行排列顺序) 普通流(标准流)浮动定位 实际开发中,一个页面基…

Tomcat头上有个叉叉

问题原因: 这是因为它就是个空的tomcat,并没有导入项目运行 解决方案: war模式:发布模式,正式发布时用,将WEB工程以war包的形式上传到服务器 war exploded模式:开发时用,将WEB工程的文件夹直接…