当前位置: 首页 > 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)

相关文章:

UV贴图和展开初学者指南

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 这正是本文的主题——UV贴图——登上舞台的时候。大多数 3D 建…...

解密Path环境变量

解密Path环境变量 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一起深入探讨程序开发中不可或缺的一项关键技术——“path环境变量”。无论…...

git撤销提交到本地的commit

有些时候,当我们提交代码到本地后,突然发现因为某些原因需要撤销提交本地的代码。 就比如我,因为代码写错了分支,已经提交到本地了,而我需要取消,并且还要把代码搞得另外的分支上。 提交前: …...

使用Adobe Acrobat Pro DC给pdf文件填加水印

前言 GPT4的官方售价是每月20美元,很多人并不是天天用GPT,只是偶尔用一下。 如果调用官方的GPT4接口,就可以按使用量付费,用多少付多少,而且没有3个小时内只能提问50条的使用限制。 但是对很多人来说调用接口是比较麻烦…...

解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

目录 问题: 尝试 问题得到解决 我的解释 问题: 最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多…...

SpringBoot默认配置文件

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot默认配置文件 📚个人知识库: Leo知识库,欢迎大家访问 1.前言☕…...

Flink构造宽表实时入库案例介绍

1. 安装包准备 Flink 1.15.4 安装包 Flink cdc的mysql连接器 Flink sql的sdb连接器 MySQL驱动 SDB驱动 Flink jdbc的mysql连接器 2. 入库流程图 3. Flink安装部署 上传Flink压缩包到服务器,并解压 tar -zxvf flink-1.14.5-bin-scala_2.11.tgz -C /opt/ 复…...

【Kubernetes】K8s 查看 Pod 的状态

K8s 查看 Pod 的状态 [rootk8s-master1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-3 1/1 Running 2 (34m ago) 14hNAME:Pod 的名称。READY:代表 Pod 里面有几个容器,前面是启动的,后面…...

Linux系统操作命令

Linux管理 在线查询Linux命令: https://www.runoob.com/linux/linux-install.htmlhttps://www.linuxcool.com/https://man.linuxde.net/ 1.Linux系统目录结构 Linux系统的目录结构是一个树状结构,每一个文件或目录都从根目录开始,并且根目…...

大模型学习与实践笔记(五)

一、环境配置 1. huggingface 镜像下载 sentence-transformers 开源词向量模型 import os# 设置环境变量 os.environ[HF_ENDPOINT] https://hf-mirror.com# 下载模型 os.system(huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-…...

100个GEO基因表达芯片或转录组数据处理之GSE126848(003)

写在前边 虽然现在是高通量测序的时代,但是GEO、ArrayExpress等数据库储存并公开大量的基因表达芯片数据,还是会有大量的需求去处理芯片数据,并且建模或验证自己所研究基因的表达情况,芯片数据的处理也可能是大部分刚学生信的道友…...

1. Presto基础

该笔记来源于网络,仅用于搜索学习,不保证所有内容正确。文章目录 一、presto基础操作二、时间函数0、当前日期/当前时间1、转时间戳1)字符串转时间戳 (推荐)2)按照format指定的格式,将字符串str…...

ChatGPT可以帮你做什么?

学习 利用ChatGPT学习有很多,比如:语言学习、编程学习、论文学习拆解、推荐学习资源等,使用方法大同小异,这里以语言学习为例。 在开始前先给GPT充分的信息:(举例) 【角色】充当一名有丰富经验…...

20240111在ubuntu20.04.6下解压缩RAR格式的压缩包

20240111在ubuntu20.04.6下解压缩RAR格式的压缩包 2024/1/11 18:25 百度搜搜:ubuntu rar文件怎么解压 rootrootrootroot-X99-Turbo:~/temp$ ll total 2916 drwx------ 3 rootroot rootroot 4096 1月 11 18:28 ./ drwxr-xr-x 25 rootroot rootroot 4096 1月…...

YOLOv5改进 | 检测头篇 | ASFFHead自适应空间特征融合检测头(全网首发)

一、本文介绍 本文给大家带来的改进机制是利用ASFF改进YOLOv5的检测头形成新的检测头Detect_ASFF,其主要创新是引入了一种自适应的空间特征融合方式,有效地过滤掉冲突信息,从而增强了尺度不变性。经过我的实验验证,修改后的检测头在所有的检测目标上均有大幅度的涨点效果,…...

第十三章 接口测试(笔记)

一、接口测试分类 内部接口:测试被测系统各个子模块之间的接口,或者被测系统提供给内部系统使用的接口 外部接口: 1.被测系统调用外部的接口 2.系统对外提供的接口 接口测试重点:检查接口参数传递的正确性,接口功能的正确性,输出结果的正确性,以及对各种异常情况的容错…...

Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问

Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问 前言1、创建仓库2、开启 gh-pages页面功能3、访问测试 前言 写博客文章时,图片的上传和存放是一个问题,使用小众第三方图床,怕不稳定和倒闭&…...

Airtest-Selenium实操小课②:刷B站视频

1. 前言 上一课我们讲到用Airtest-Selenium爬取网站上我们需要的信息数据,还没看的同学可以戳这里看看~ 那么今天的推文,我们就来说说看,怎么实现看b站、刷b站的日常操作,包括点击暂停,发弹幕,点赞&#…...

Linux chmod命令详解

Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令 Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users&#xff09…...

求幸存数之和 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 给一个正整数列nums,一个跳数jump,及幸存数量left。运算过程为:从索引为0的位置开始向后跳,中间跳过 J 个数字,命中索引为 J+1 的数字,该数被敲出,并从该点起跳,以此类推,直到幸存left个数为止。…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...

深入解析 ReentrantLock:原理、公平锁与非公平锁的较量

ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...