10 种3D 建模技术
在本文中,我将列出 10 种不同类型的 3D 建模。也许可以了解下一个项目将走向何方,或者你可能会像我一样惊讶,究竟有多少 3D 被用作以多种方式进行可视化的工具。这些是我们将讨论和探索的建模类型:
- 盒子造型
- 多边形建模
- Nurbs 和曲线建模
- 数字3D雕刻
- 摄影测量
- 模拟
- 程序建模
- 布尔建模
- Kit Bashing
- 模块化建模
你可能会争辩说,建模的类型与工具的数量一样多。然而,我选择将自己限制在比我自己更广泛的观众所认可的技术上。我发现有些技术似乎被普遍接受为 3D 建模的技术或类型。
它们都以一种或另一种方式可行。这完全取决于你想要创造什么样的形状和细节。这些类型中的大多数都可以在 Blender 中使用。但这不是 Blender 的独家文章,即使那是我选择的工具。相反,我想鼓励更广阔的视野,看看每种类型的建模带来了什么。
1、盒建模
让我们从盒建模(Box Modeling)开始。使盒建模成为自己的类型的原因是我们从一些原始对象开始,例如立方体或球体,我们使用经典的建模工具从中创建形状。
我们有一个起点,我们使用低多边形形状来创建我们的对象。这是一种非常机械的常见建模方式,因为我们控制各个面、边和顶点。通过盒建模,我们强调一次操作对象的整个形状和较大部分。
大多数时候,我们处理有四个边的面,我们称它们为四边形。这些很容易使用,因为大多数建模工具都是为使用四边形而设计的。但是在我们使用模型之前,它通常是由用户预先或由后台软件自动进行三角测量的。
这种类型的建模往往最适用于硬表面对象,例如建筑可视化和人造对象或产品。
我们使用挤压、创建循环切割和斜切等工具。箱形建模经常与细分曲面一起使用。
细分曲面是一种在我们使用传统建模工具操作的边、顶点和面之间添加额外几何图形的技术。我们控制的几何形状就像一个笼子,我们用来塑造对象的细分版本。
根据 catmull-clark 算法,细分的低多边形对象变得更加圆润。这可能听起来很技术,但本质上我们只是添加了围绕对象表面的几何形状。
关于如何使用细分曲面有不同的流派。由于这是在我们原始几何体之上添加的一种层,因此有些人说你永远不应该在细分曲面可见的情况下进行建模,因为如果没有添加细分曲面,原始网格可能会变得不可用。限制我们对原始网格的使用。
其他人则认为,更容易看到你在做什么,并且意图仍然是使用具有细分曲面的对象。
2、多边形建模
Polygon Modeling(多边形建模)是一种与盒建模非常相似的 3D 建模。这里的不同之处在于,我们通常从单个顶点或简单形状开始,没有深度。然后我们一块一块地构建我们的模型。我们经常使用与盒建模相同的工具,但我们以一种细节化的方式使用它们。
这里的重点是更多地使用边和顶点。我们使用这种技术创建的对象类型仍然经常是坚硬的表面,但具有更多的有机形状。
多边形建模与盒建模一样,通常强调在拓扑中使用四边形。这是因为许多工具被设计为使用四边形拓扑。
我们用多边形建模创建的这个可能属于硬表面类别。但很多时候,我们创建的模型具有一些有机特征。例如,它可以是雕像或建筑装饰品。
但它也可以是我们用这种技术创造的一些配件、工具或其他装备。
此处也经常使用细分曲面来平滑对象的几何形状。
本质上,盒建模和多边形建模使用的工具是相同的,只是使用方式不同。
3、Nurbs 和曲线建模
Nurbs 代表非均匀有理 b 样条。难怪我们有一个首字母缩略词。通过这种建模,我们切换到一种完全不同的建模。我们创建基于控制点控制的曲面。我们可以用它来创建非常光滑的曲面。
我们既可以在同一曲线内的点之间进行解释,也可以在多条曲线之间建立桥梁。我们可以设置一个曲线网络,充当对象的边缘,然后填充其间的几何形状以创建对象。
这种建模主要用于工程和类似CAD的软件中。说到视觉特效和 3D 的艺术方面,就没有那么多了。
想象一下,如果你有一个想要 3D 打印的对象。在这种情况下,如果你有一个多边形模型,我们使用盒或多边形建模创建了它,然后将其放大。所有这些面和三角形都将开始变得可见,就像你放大基于光栅的图像时一样。
另一方面,使用 nurbs,我们可以放大和缩小模型,曲线将保持平滑。这可以说是相当于二维图形中的矢量图。
因为我们不再使用顶点、面或边,而是使用曲线。这意味着这些工具非常不同。
我们可能有工具可以打开或关闭一条曲线,或者创建一条在另外两条曲线之间进行解释的新曲线。但我们也有非常相似的工具,例如移动控制点、缩放和旋转。
4、数字3D雕刻
雕刻将我们从 3D 建模的工程部分带回到通常更具艺术性的方面。雕刻使用顶点、面和边,就像盒和多边形建模一样。我们使用雕刻将塑造过程与担心单个元素的更多技术细节分开。我们没有根据选择进行操作,而是使用画笔。画笔具有影响区域,并根据画笔类型和设置更有机地重塑几何形状。
雕刻通常与角色、动物或生物设计一起使用。但也可用于雕刻传统盒子和多边形建模难以创建的细节。
有不同类型的雕刻。我们可以按原样在网格上雕刻,这将根据画笔移动顶点、边缘和面以形成形状。使用这种方法,我们需要从一开始就有很多可用的几何图形,否则我们很快就会达到几何图形可以容纳多少细节的极限。
我们称之为多分辨率的下一个技术。它类似于细分曲面,不同之处在于我们可以在多分辨率的每一层之间存储雕刻。一旦我们达到几何体可以容纳多少细节的极限,我们就将多分辨率级别提高。通过这种方式,我们可以根据需要获得更多几何图形,并且可以将雕刻存储在多个细节级别上。
下一个技术迭代称为动态拓扑。至少在Blender中。当我们根据缩放级别或预定义的绝对级别进行绘制时,此功能会动态地将网格细分为三角形。这样,我们只需继续雕刻,几何形状就会适应。
当我们完成雕刻后,我们需要使网格再次可用。在雕刻会话之后,网格在性能和可加工性方面通常处于非常糟糕的状态。
有时我们可以通过不同的重新网格算法自动完成更好的网格,这些算法可以在对象的表面上并在其上应用新的网格。很多时候认为我们必须经历一个称为重新拓扑的过程,并在雕刻对象的顶部手动重新创建网格。
5、摄影测量
摄影测量是另一种生成 3D 模型的完全不同的方式。通过这种技术,我们使用相机并在尽可能均匀的照明条件下从各个角度多次拍摄对象。然后我们将这些图像输入到一个程序中,该程序解释它们并生成对象的 3D 表示。
这里有明显的优点和缺点。我们得到真实世界的数据,这意味着我们创造的任何东西都必然接近现实。很多时候,我们会在此过程中生成纹理和 UV 贴图,因此我们也不必在这些区域上花费太多时间。
然而,就像雕刻网格一样,需要通过重新网格或重新拓扑来重新加工。这意味着我们可能还需要重新创建 UV 贴图。
由于相机不仅可以捕捉到有问题的物体,还可以捕捉到周围的环境,因此还将进行大量的清理工作。
另一个缺点是我们需要有可用的对象来拍摄它,并且我们需要将它放在一个表面上,这意味着我们无法到达对象的一部分。例如,当我们拍摄一块岩石时,它必须躺下,并且在单次拍摄期间无法触及其底部。这将导致我们的网格中出现洞,我们必须以某种方式处理这些洞。
摄影测量是一项相对较新的发明,最近获得了很多关注。我们不能只拍摄小物体。我们还可以使用无人机拍摄整个区域并重建更大的结构。
这对于保护旧建筑或更快地研究一个地区是个好消息。
还有一些扫描仪可用于扫描物体或区域,就像声纳工作一样。然后可以通过软件输入数据以重新创建 3D 地图。
6、模拟
数字模拟有很多种。这里我将列出一些。
- 物理
- 布
- 柔软的身体
- 体液
- 火与烟
- 海洋
- 粒子
每一个都有自己的目的。正如你可能想象的那样,它们中的大多数还具有多种用途。当我们模拟某些东西时,我们会创建一个具有不同对象和参数的设置,这些对象和参数将随着时间的推移相互交互。计算机计算事物将如何移动以及我们运行模拟的每一帧会发生什么。
然后,我们可以使用结果来创建动画,也可以基于模拟而不是来自其他建模技术的原始手动输入来创建场景或对象。想象一下,如果你要在岩石上创造一个飞溅的波浪。您可以建模或使用摄影测量来创建岩石,但波浪更难。你也许可以雕刻它,但运行模拟并让它自己飞溅在岩石上会更方便,它会根据诸如波浪撞击岩石的角度、波浪的大小和速度等参数创建形状。波等。
同样,我们可以将物理模拟与软体对象结合使用来创建车祸。无需手动建模每一帧。
另一个例子是布料模拟。你可以为下一个建筑可视化场景雕刻枕头,也可以使用布料模拟来创建包含所有皱纹的枕头。
模拟比 nurbs 更倾向于 VFX。但是我们仍然可以将其视为一种建模技术,因为我们使用它来创建或变形对象。
模拟是一种技术含量更高的 3D 建模类型。因为我们主要是调整和微调参数,而不是直接关注形状。
7、程序化建模
程序化建模有多种形状和大小。我将其分为两种不同类型的建模。第一个是基于工具的。我们或其他人创建了一个工具,旨在通过程序生成一堆相似的对象。例如,我们可以有一个建筑物生成器。然后我们可以输入一堆参数,比如有多少层、天花板应该有多高以及应该有什么样的屋顶形状。然后我们多次运行该程序,每次运行时,都会吐出一个符合我们标准的新模型。
对于特定类型的模型,有很多这样的工具,我们还可以创建自己的模型生成器,并为我们希望工具输出的模型类型公开某些参数。
下一种程序建模与着色密切相关。着色器可以有一个位移输出,通过这个位移我们可以得到一个简单的基元,比如一个球体或一个平面,然后我们使用数学公式将表面变形为一个复杂的对象或表面。
随着越来越多更好的工具可用于通过着色置换几何体,这种趋势已经发展。可以使用在单个上下轴上工作的传统位移和矢量位移。矢量置换可以在所有方向上置换几何,从简单的几何创建非常高级的对象。
8、布尔建模
使用布尔建模,我们从模型开始,然后切掉或添加其他对象以创建新形状。这与盒子建模密切相关,我们经常将这两种技术结合使用。
通常我们用盒子建模来建模基本形状,然后用布尔运算组合不同的形状。我们必须使用的操作是:
- 区别
- 联盟
- 相交
差分算子是最常见的。这是从另一个对象中去除一个对象的形状和体积的运算符。
Union 会将两个对象合并在一起,并且 intersect 将仅保存两个对象共享的几何图形。
布尔值可以帮助我们创建形状,否则用其他建模技术模仿这些形状会很耗时。我们可以将圆形或弯曲形状与方形硬表面形状相结合,并将它们切掉或添加在一起。
9、Kit Bashing
这是另一种类型的建模,我们从一组对象开始,我们将这些对象组合成更详细的对象。或者我们可以使用工具包来详细说明使用其他类型建模制作的对象。
在创建坚硬的表面物体时,kit bashing也很常见。它使我们能够探索不同的部分如何组合在一起,而无需完整了解最终部分的外观。
Kit bashing 非常适合详细说明场景。使用kit bashing时,应注意高频细节、中频和低频细节的比例。合成良好的镜头通常在不同的细节分布之间具有良好的混合和排列。
对于硬表面和有机建模都是如此。例如,一个虚构的机器人可能有更多关于应该被视为头部或焦点的细节,而森林可能有不同的植物、树木和蘑菇分布,这取决于每种香料最有效地生长的地方。有些在场景中均匀分布,而另一些则聚集在一起或集中在场景的特定区域。
10、模块化建模
这并不是真正的建模技术,而是一种很好的实践。在创建 3D 资产时,最好记住模块化。我们可能正在创造一个城市景观。我们可能需要对多个看起来相似的建筑物进行建模。在这种情况下,我们应该考虑模块化,以便我们可以在下一栋建筑物中重用建筑物的某些部分。
我们甚至可以对不同的建筑部分进行建模,我们可以以不同的方式重新排列以创造变化。
11、最后的想法
在决定使用哪种类型的建模时,我们需要考虑我们的最终目标是什么。但在大多数情况下,这将是一个组合。特别是如果我们正在创建一个场景。在这些情况下,我们可能有一些对象需要一些技术,而其他对象则需要其他技术。
如果你是初学者,我建议你从盒子建模和多边形建模开始,因为它们使用的工具相同,并且这些技术是所有建模的基础。但是,例如,如果想在 3D 打印领域占据一席之地,那么你应该从 nurbs 建模开始。
相关文章:
10 种3D 建模技术
在本文中,我将列出 10 种不同类型的 3D 建模。也许可以了解下一个项目将走向何方,或者你可能会像我一样惊讶,究竟有多少 3D 被用作以多种方式进行可视化的工具。这些是我们将讨论和探索的建模类型: 盒子造型多边形建模Nurbs 和曲…...
常见的socket函数封装和多进程和多线程实现服务器并发
常见的socket函数封装和多进程和多线程实现服务器并发 1.常见的socket函数封装2.多进程和多线程实现服务器的并发2.1多进程服务器2.2多线程服务器2.3运行效果 1.常见的socket函数封装 accept函数或者read函数是阻塞函数,会被信号打断,我们不能让它停止&a…...
Tomcat架构分析
Tomcat的核心组件 Tomcat将请求器和处理器分离,使用多种请求器支持不同的网络协议,而处理器只有一个。从而网络协议和容器解耦。 Tomcat的容器 Host:Tomcat提供多个域名的服务,其将每个域名都视为一个虚拟的主机,在…...
旧项目集成阿里云滑动验证码(web和H5方式)
简述 旧项目集成阿里云滑动验证码(web和H5方式) 适用于servlet和HTML项目,VUE + springboot请看另一篇文档 前情提示 系统: 一说 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行…...
机器人内部传感器阅读梳理及心得-速度传感器-数字式速度传感器
在机器人控制系统中,增量式编码器既可以作为位置传感器测量关节相对位置,又可作为速度传感器测量关节速度。当作为速度传感器时,既可以在模拟量方式下使用,又可以在数字量方式下使用。 模拟式方法 在这种方式下,需要…...
【vue+element ui】大屏自适应中el-select下拉内容在低分辨率下显示不全问题解决
目录 背景 现象 解决方案 背景 最近要把一个1920px*1080px的大屏改成自适应的;最低适配到1028px*720px; 现象 自适应适配改完之后 将电脑屏幕改成1028px*720px分辨率后,下拉显示正常 通过谷歌浏览器设置Toggle device toolbar为1028px*…...
前端架构: 脚手架之多package项目管理和架构
多package项目管理 1 )多package项目管理概述 通常来说,当一个项目变大了以后,我们就要对这个项目进行拆分在前端当中,对于项目进行拆分的方式,通常把它称之为javascript包管理需要使用一个工具叫做 npm (Node Packag…...
【C# 多线程】如何停止正在运行中的子线程
如何停止正在运行中的子线程 通过协作式取消模式强制终止线程(可能存在资源不能及时释放的泄漏风险) 通过协作式取消模式 在线程函数中,你可以周期性地检查一个标志位,以确定是否应该停止线程。该标记位可以是共享变量࿰…...
服务器机房安全守护:五大物理安全实践
服务器机房是数字企业的心脏。无论是企业家还是经验丰富的IT专业人员,都知道服务器机房的安全性至关重要。如果没有采用适当的物理安全措施,其服务器很容易受到盗窃、人为破坏和自然灾害的破坏。 在保护服务器机房的领域内,需要采用多方面的…...
spring boot 修复 Spring Framework URL解析不当漏洞(CVE-2024-22243)
漏洞描述 当应用程序使用UriComponentsBuilder来解析外部提供的URL(如通过查询参数)并对解析的URL的主机执行验证检查时可能容易受到Open重定向攻击和SSRF攻击,导致网络钓鱼和内部网络探测等。 受影响产品或系统 6.1.0 < Spring Framew…...
VR全景HDR拍摄教程
什么是HDR? HDR可以用在哪里? 书面解释:HDR(高动态范围 High Dynamic Range)摄影,是摄影领域广泛使用的一种技术。 是不是有点懵? 我们来看一个实际的拍摄现场环境,你就懂了 我们…...
hive执行select count(1)返回0
背景: 做数据质量检核任务的时候,有些数据表有数据,直接查hive执行select count(1) from table返回的值一直是0 问题原因: hive通过select count(1)或者select count(*) 查询的是元数据库里面的rownum,如果数据表数据是通过load、…...
3D Gaussian splatting 协方差矩阵 球谐函数 简单理解
3D Gaussian splatting 是一种图形和视觉处理技术,常用于体积渲染、点云渲染和其他应用中,以便对数据进行平滑或重建。在这个上下文中,高斯分布(或高斯“splat”)用于表示单个数据点(如一个点云中的点&…...
代码随想录算法刷题训练营day27:LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串
代码随想录算法刷题训练营day27:LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串 LeetCode(39)组合总和 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;clas…...
docker 容器修改端口和目录映射
一、容器修改端口映射 一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [container-name] -p 8088:80 [image-name]…...
echarts鼠标事件
鼠标事件支持方法 ECharts 支持常规的鼠标事件类型,包括 ‘click’、 ‘dblclick’、 ‘mousedown’、 ‘mousemove’、 ‘mouseup’、 ‘mouseover’、 ‘mouseout’、 ‘globalout’、 ‘contextmenu’ 事件 简单实例 // 基于准备好的dom,初始化EChar…...
【北京迅为】《iTOP-3588开发板网络环境配置手册》第2章 电脑、开发板直连交换机或路由器
RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…...
6.5 共享数据
本节介绍Android的四大组件之一ContentProvider的基本概念和常见用法:首先说明如何使用内容提供器封装内部数据的外部访问接口,然后阐述如何使用内容解析器通过外部接口操作内部数据,最后叙述如何利用内容解析器读写联系人信息,以…...
SpringBoot之Session新增、删除、获取配置与使用
SpringBoot之Session新增、删除、获取配置与使用 文章目录 SpringBoot之Session新增、删除、获取配置与使用1. SpringBoot版本2. 定义增删查Session的类3. 定义Session的监听器4. 使用 自定义根据sessionId进行session的新增、删除、获取操作 1. SpringBoot版本 <parent>…...
Hive UDF 札记
低版本的udf就不说了,太老了,说现在主流的。 1:initialize 方法的进一步理解: 在Apache Hive中,用户自定义函数(UDF)的initialize方法是一个可选的方法,它属于Hive UDF的生命周期…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
