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

UV贴图和展开初学者指南

在线工具推荐: 3D数字孪生场景编辑器  -  GLTF/GLB材质纹理编辑器  -  3D模型在线转换  -  Three.js AI自动纹理开发包  -  YOLO 虚幻合成数据生成器  -  三维模型预览图生成器  -  3D模型语义搜索引擎

介绍

这正是本文的主题——UV贴图——登上舞台的时候。大多数 3D 建模软件在创建网格时会创建 UV 布局。但是,这并不意味着您不需要对其进行编辑和调整以适应模型的要求。然后是UV贴图和解包,这是3D建模离不开的。

听起来很难?

如何开始UV映射

尽管如此,这些概念听起来很复杂。实际上,它要简单得多,我们将证明这一点。

什么是UV贴图?

UV 贴图是 3D 对象表面的二维表示。它由与模型信息的顶点相对应的 UV 或纹理坐标构成。每个纹理坐标在 3D 空间中都有一个对应的点 - 顶点。因此,这些坐标用作标记点,用于定义纹理上的哪些像素对应于哪些顶点

如何UV贴图

注意:UV 贴图中的 U 和 V 表示 2D 纹理的水平轴和垂直轴,因为 X、Y 和 Z 已经用于表示 3D 空间的这些轴。

UV 贴图对 3D 工作流程至关重要。因此,当您学习如何进行 3D 建模时,您不会错过它。尽管大多数应用程序在创建模型时都会创建 UV 布局,但不要依赖它来为您完成所有工作。

很多时候,您必须从头开始编辑甚至创建UV贴图。这称为UV展开。

UV 展开:元素

UV 展开是将 3D 几何体展开或展平为 2D 表示的过程,以便 3D 对象的每个多边形和面都绑定到 UV 贴图中的面。

不幸的是,当您对模型进行UV展开时,失真是不可避免的。多边形的大小和形状已经并将会发生变化,以适应展平过程。因此,您必须尽最大努力尽可能少地造成变形,同时将接缝保持在最低限度。

还有其他事情。

接缝

接缝是网格的一部分,您必须将其拆分,以便从 3D 网格中创建 2D UV 贴图。

如果您的纹理没有被拉伸并且对象有硬边,那么分割所有多边形似乎是一个完美的选择。但是,它只会以大量接缝的形式出现缺点。

UV地图接缝金字塔

(来源:YouTube)

有没有办法解决这个问题?

您可以减少接缝的数量,但代价是纹理扭曲,最终不会在对象周围流畅流动。

UV贴图接缝圆形

(来源:YouTube)

不要对自己太苛刻。几乎不可能使接缝不明显。相反,您可以通过遵循某些规则来学习隐藏它们

  • 将接缝隐藏在对象其他部分后面。
  • 使用自动贴图投影工具从多个平面投影UV贴图。
  • 使接缝遵循模型的硬边缘或切口。
  • 将它们创建为位于模型焦点的下方或后面。
  • 直接在 3D 应用程序中的纹理中绘制主题。

专业提示:使用UV编辑器创建UV贴图后,使用软件中的相应工具创建UV贴图的快照。它将为您的UV贴图拍照,并将其保存为首选的图像格式。然后,您将能够在 2D 绘画工具中将其导入并绘制到 3D 模型上。

重叠的 UV

当 UV 映射与 UV 重叠时,您将遇到的另一个陷阱。当您有两个或多个多边形占用相同的 UV 空间时,就会发生这种情况。相应地,重叠的 UV 是指这些多边形彼此叠加并显示相同的纹理。

UV 展开问题 – 重叠

通常,您必须避免重叠的 UV,以便纹理看起来正确且多样。但是,有时如果纹理太基本,您甚至可能会故意使用它来重复网格多个部分的纹理。

注意: 它可以减小纹理的大小,并在需要时使游戏引擎运行更流畅,尤其是当模型用于移动设备时。

UV通道

如果您的 3D 模型需要多个 UV 贴图,尤其是对于游戏引擎,您应该探索 UV 通道。

有时,您的模型可能不需要纹理贴图,但仍然需要用于光照烘焙的 UV 贴图。许多实时引擎,如Unity或虚幻引擎4,都需要它。在这种情况下,没有重叠UV的地方,因为阴影信息将应用于模型的错误部分。

或者,您可以使用 2 个 UV 通道,一个用于纹理的 UV 贴图,另一个用于照明的 UV 信息。

现在我们已经介绍了UV贴图的元素,是时候深入研究如何将其应用于对象了。

UV 映射投影类型

UV 展开是将 3D 模型转换为 2D 表示的过程,而 UV 贴图是将 2D 图像投影到 3D 表面上,以便将 2D 纹理包裹在其周围。

通常,它是通过部署不同UV贴图投影类型的投影技术完成的。它们通常基于简单的几何形状,这是一个很好的开始方式。

球面图

顾名思义,球面投影用于具有球形的物体上,以将纹理包裹在多边形网格周围。

球面UV贴图投影类型

球面投影类型(来源:YouTube)

圆柱图

可以完全封闭且在圆柱体内可见的对象(如腿或手臂)使用圆柱投影类型进行映射。

圆柱UV贴图投影类型

球面投影类型(来源:YouTube)

平面图

如果 3D 对象非常简单且相对平坦,则平面投影是将 UV 贴图投影到其上的最佳选择。否则,如果模型过于复杂,平面投影将导致重叠的UV并扭曲纹理。

圆柱UV贴图投影类型

平面投影类型(来源:YouTube)

我们刚才提到的所有投影类型也是如此。一旦开始 3D 角色建模或任何其他类型的复杂网格建模,您会发现这些投影类型不是很有用。

尽管如此,您仍然可以完全控制 UV 贴图,因为您可以将不同的投影类型应用于网格的每个面以获得更好的效果。此外,您也可以选择某些软件为您提供的一些高级功能。

UV映射的最佳软件

当您掌握UV贴图时,您会发现一些基本功能不足以达到您的目标结果。这时,使用软件是最佳选择,如:

  • GLTF 编辑器 -NSDT 不仅可以设置3D模型纹理贴图,还可以设置模型的几何原点、以及对有相同材质属性的mesh进行合并,实现模型轻量化,是一款不可多得的实用型在线模型编辑工具。

结论

UV贴图是一项需要了解的关键技能,因为它可以让您将纹理平滑地过渡到模型上。此外,它不仅是模型的扁平化拓扑,而且是地图烘焙的基础。

因此,在创建模型时,您必须牢记贴图,因为糟糕的UV贴图会使即使是最好的3D对象看起来也很糟糕。虽然UV贴图是一组概念和术语,一开始可能会让你感到困惑,但随着时间的推移,它开始变得越来越简单。希望本指南能帮助您更接近更好地理解UV贴图。

转载:UV贴图和展开初学者指南 (mvrlink.com)

相关文章:

  • x-cmd pkg | usql - SQL 数据库的通用交互界面
  • Zookeeper+Kafka概述
  • 构建中国人自己的私人GPT
  • RT-Thread入门笔记2-动态内存堆的使用
  • Docker安装Nacos2.2.3并鉴权、Prometheus监听Nacos、Grafana监控Nacos【亲测可用】
  • Redis 7.0性能大揭秘:如何优化缓存命中率?
  • react+AntDesign 之 pc端项目案例
  • SpikingJelly笔记之泊松编码
  • Linux备忘手册
  • ML:2-4理解python如何实现forward prop
  • TypeScript使用技巧内置工具类型详解
  • 抛弃安卓,追赶iOS,鸿蒙能否成为中国第二大系统?
  • vue.js环境在window和linux安装
  • springcloud gateway动态路由
  • LeetCode[105] 从前序与中序遍历序列构造二叉树
  • Babel配置的不完全指南
  • co.js - 让异步代码同步化
  • const let
  • JavaScript DOM 10 - 滚动
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java多态
  • JS实现简单的MVC模式开发小游戏
  • mysql 5.6 原生Online DDL解析
  • Python爬虫--- 1.3 BS4库的解析器
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • windows下如何用phpstorm同步测试服务器
  • 闭包--闭包作用之保存(一)
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 免费小说阅读小程序
  • 如何选择开源的机器学习框架?
  • 首页查询功能的一次实现过程
  • 算法之不定期更新(一)(2018-04-12)
  • ​批处理文件中的errorlevel用法
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • (11)MSP430F5529 定时器B
  • (5)STL算法之复制
  • (JS基础)String 类型
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (原)Matlab的svmtrain和svmclassify
  • **CI中自动类加载的用法总结
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core中Emit的使用
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .ui文件相关
  • @RequestBody的使用
  • [20171106]配置客户端连接注意.txt