第二十四章 Unity 纹理贴图

通常情况下,3D网格模型只能展示游戏对象的几何形状,而表面的细节则纹理贴图提供。纹理贴图通过UV坐标“贴附”在模型的表面。当然,这个过程不需要我们在Unity中完成,而是在建模软件中完成的。通常情况下,我们通过3ds max或者maya制作完网格模型后,需要进行一个“UV”拆分的操作,操作完毕后就可以渲染出一张UV贴图,剩下的工作就是使用3D绘制软件来绘制这样UV贴图。最后,我们将模型和UV贴图一起导出FBX文件,并导入到Unity中使用。在Unity中,纹理贴图是作为材质的一部分来使用的。因此,我们可以在Unity中单独创建材质,然后赋予游戏对象上面。但是,对于美工人员制作好的带有贴图的模型文件,我们直接导入后,就会自动将贴图作为材质绑定到该模型上面。还记得我们之前使用的“阿丽塔”的模型文件嘛,如下所示:

左边的就是我们的FBX文件,右边的就是我们的纹理贴图文件。

我们点击这个FBX文件上面的三角箭头展开这个文件。

我们看到里面包含两个文件,一个是材质球,一个是网格模型。

我们点击材质球,查看它的Inspector检视视图。

我们可以看到在“Albedo”基础色哪里使用了一张纹理贴图,我们点击这个纹理贴图。

就会发现在Project视图中“高亮”显示对应的贴图。

如果我们将模型拖动到Scene视图中,就会看到完整的模型呈现了。

旋转一下,

我们点击Scene视图中的“阿丽塔”游戏对象,查看它的Inspector检视视图

在“Mesh Renderer”组件下面就能看到对应的材质,在材质中也能看到Albedo纹理贴图。游戏对象本来就是由模型文件实例化而来的,因此他们在数据上肯定是相同的。

接下来,我们继续介绍纹理贴图。纹理贴图本质就是一张图片而已,因此它作为一种资源文件可以直接导入到Unity的Assets文件夹。Unity中使用图片的地方有很多,除了作为模型纹理贴图之外,在2D游戏中作为“精灵”来处理,还有在粒子系统中也会用到图片,当然UI界面也需要图片,我们在编辑地形和植被的时候,也使用到了纹理贴图。

理想情况下,纹理尺寸大小应该是每边为 2 的幂(即 2、4、8、16、32、64、128、256、512、1024、2048 像素 (px),以此类推)。在 Unity 中可以使用 NPOT(非 2 的幂)纹理大小。但是,NPOT 纹理大小通常需要稍微多一点的内存,并且 GPU 的采样速度可能更慢,因此,只要有可能,最好使用 2 的幂大小以提高性能。Unity 可读取以下文件格式:BMP,EXR,GIF,HDR,IFF,JPG,PICT,PNG,PSD,TGA,TIFF。这里需要大家注意的,Unity之所以能够支持这么多的格式,主要是Unity会这些格式的图片进行二次处理。也就是说,Unity并不会在程序中直接使用该格式下的原图。在Unity文件结构中的Library文件夹的时候也介绍过。

我们点击纹理贴图文件,在Inspector检视视图中查看其内容如下

首先是Texture Type纹理类型,它是一个下拉选项,选项值如下:

1. Default 默认选项,此选项可用于访问大多数纹理导入属性。

2. Normal map法线贴图,可将颜色通道转换为适合实时法线贴图的格式。

3. Editor GUI and Legacy GUI 也就是UI纹理,用于任何HUD或GUI控件上使用。

4. Sprite (2D and UI) 在2D游戏中使用该纹理作为精灵,或者NGUI中的控件使用。

5. Cursor光标纹理,一般用于自定义光标的样式。

6. Cookie通过内置渲染管线中用于剪影的基本参数来设置纹理。

7. LightMap光照贴图,将纹理用作光照贴图。

8. Directional LightMap平行光光照贴图,将纹理用作平行光光照贴图。

9. Shadowmask阴影遮罩,将纹理用于阴影效果。

10. Single Channel在纹理中只需要一个通道。

接下来是Texture Shape纹理形状,它也是一个下拉选项,选项值如下:

第一,2D 是用于所有纹理的最常用设置;它将图像文件定义为 2D 纹理。这些设置用于将纹理映射到 3D 网格和 GUI 元素以及其他项目元素。该项是默认值。

第二,Cube 将纹理定义为立方体贴图。例如,可将其用于天空盒或反射探针。此类型仅可用于 Default、Normal Map 和 Single Channel 纹理类型。

第三,2D Array 将纹理定义为 2D 数组纹理。这通常用作某些渲染技术的优化,其中会使用许多具有相同大小和格式的纹理。

第四,3D 将纹理定义为 3D 纹理。某些渲染技术使用 3D 纹理表示体积数据。

纹理的透明处理。可以使用阿尔法纹理Alpha Texture用来包含游戏对象纹理的透明信息。其实阿尔法纹理就是一个图像纹理的灰度图。黑色区域表示透明,白色区域表示不透明,中间灰色代表不同程度的透明。也就是说,如果想让一个图像以透明方式显示,则需要根据这个图像制作一个灰度图,将透明部分做成黑色,不透明部分做成白色。两个图像叠加就会出现透明效果。

重采样决定如何将纹理图像上的像素映射到游戏对象上。选中纹理图像,在检视面板中的Filter Mode属性可以设置点Point,双线性Bilinear(默认),三线性Trilinear三种模式。这三种过滤模式对纹理图像处理的质量依次增加。

最后,我们顺便在说一下3D模型。模型文件可包含各种数据,包括网格、材质和纹理。对于动画角色,它们还会包含动画数据。通常在外部应用程序中创建模型,然后将它们导入到 Unity 中。Unity 内部使用 .fbx 文件格式作为其默认格式,因此建议大家尽可能使用 .fbx 文件格式。当然,Unity还支持obj, .dxf和.dae 标准格式。对于专有文件格式,Unity支持Maya,Blender,3ds Max等格式。Unity 不提供对 Cinema4D 文件的内置支持。要在 Unity 中使用 Cinema4D 文件,您应该将它们从专有软件导出为 .fbx 文件。

这里我们首先说明一下模型单位的问题。在Unity中1个单位是1米,但是在其他建模软件中就不一定是这样的设置了。例如,我们在3ds max中需要通过在菜单栏中选择“自定义”-“单位设置”-“系统单位设置”中设置1个单位是1米。

然后我们创建一个立方体Cube,其尺寸为1米*1米*1米

我们在3ds max中添加了一个紫色的材质球。

然后我们将这个Cube导出FBX文件。

我们可以在单位设置中查看,我们发现就是“Meters”米的单位设置。

这里需要额外说明的是,3ds max的坐标系是Z轴向上,在Unity中是Y轴向上,改一下。

改完之后,就可以导出Cube.fbx文件了。然后我们导入到Unity中。

我们还可以使用Unity创建一个立方体Cube与之进行对比。

两者的尺寸是一样的。如果我们在3ds max中设置的单位是CM的话,在导出米单位的时候,会有一个比例因子变成0.01,导入Unity的时候对应的就是Scale Factor为0.01。

模型导入Unity后,我们可以点击模型文件,查看它的Inspector检视视图。

首先是四个选项卡按钮,分别是“Model”,“Rig”,“Animation”和“Materials”。

“Model”网格信息,其下第一个就是“Scale Factor”缩放因子的设置。

“Rig”骨骼框架,这个内容我们会在骨骼动画章节中详细介绍。

“Animation”动画,主要是动画剪辑的设置。

“Materials”材质,显示该模式使用的材质信息。

关于模型的相关信息,我们会在骨骼动画章节中详细介绍。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript:二叉树(前序遍历,中序遍历,后序遍历,递归法,统一迭代法)

文章目录 二叉树递归法迭代法 144. 二叉树的前序遍历 - 力扣(LeetCode)二叉树的递归遍历递归法作图分析代码和思路分析 二叉树的迭代遍历前序遍历迭代分析代码及思路分析 94. 二叉树的中序遍历递归法作图举例递归流程 迭代法代码 145. 二叉树的后序遍历 …

制作Alpine Linux镜像报错errors: 15 distinct packages available

1.执行报错 执行docker build -t 镜像:版本 -f Dockerfile . 报错: 2.查看网上的解决思路 网上文档解决思路: 这边我做了一下改变把这些写入了dockerfile 加了几个RUN RUN rm -rf /var/cache/apk RUN mkdir -p /var/cache/apk RUN apk update -v 发现还…

mongodb分片集群搭建

1.本次搭建使用三台centos7主机搭建伪集群,关闭防火墙和selinux服务 2.mongodb架构相当于9个分片节点,3个路由节点,3个配置节点,主机信息如下图所示 主机名称主机ip地址端口服务A10.1.60.11420001,21001,…

Visual Studio 2019离线安装包获取和安装教程

摘要 介绍Visual Studio 2019离线安装方法和配置及注意事项 关键词 VS2019 离线安装 Visual Studio 2019版本与以往的2015、2013、2012版本不同,采用了新的模块化安装方法。微软官方也并未提供ISO镜像,根据官方提供的离线下载方案(docs.mic…

JMeter开发web及手机APP自动化脚本练习

(一)开发web自动化脚本练习 一、打开浏览器代理服务器设置 我这里用的是360浏览器,打开浏览器代理服务器设置,端口要与jmeter中的端口设置保持一致哦。 二、JMeter设置代理 JMeter设置代理(jmeter中的端口要与360浏览…

数据发送流程

在发送模式下,UART 的串行数据发送电路主要包括一个发送移位寄存器(TSR),TSR 功能是将数据 逐个移位送出。待发数据必须先写到发送缓冲区中。 TXIFx 是发送中断标志位,可配置为发送缓冲区空或TSR 空。 数据的发送支持7bit 、8bit 或9bit 数据…

JAVA基础:Scanner类中next(), nextLine(), hasNext(), hasNextLine()

一、next() : 只读缓冲区中空格之前的数据,并且光标指向本行。二、nextLine() : 读取除回车以外的所有符号(整行内容),光标定位在下一行三、hasNext() :检查下一个标记(token),也就是以空格、制表符或换行符为分隔符的…

大数据技术之Kettle

目录 第1章 Kettle概述 1.1 ETL简介 1.2 Kettle简介1.2.1 Kettle是什么 1.2.2 Kettle的两种设计 1.2.3 Kettle的核心组件 1.2.4 Kettle特点 第2章 Kettle安装部署 2.1 Kettle下载 2.1.1 下载地址 2.1.2 Kettle目录说明 2.1.3 Kettle文件说明 2.2 Kettle安装部署 …

YonLinker连接集成平台构建新一代产业互联根基

近日,由用友公司主办的“2023用友BIP技术大会“在用友产业园(北京)盛大召开,用友介绍了更懂企业业务的用友BIP-iuap平台,并发布了全面数智化能力体系,助力企业升级数智化底座,加强加速数智化推进…

mysql数据库之索引

1.索引的相关知识 1.1 索引的简介 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于c语言的链表通过指针指向数据记录的内存地址)。使用索引后可以不用扫描全表来定位某行的数据,而是…

PCL学习六:Filtering-滤波

参考引用 Point Cloud Library黑马机器人 | PCL-3D点云 1. 点云滤波概述 1.1 背景 在获取点云数据时,由于设备精度、操作者经验、环境因素等带来的影响,以及电磁波衍射特性、被测物体表面性质变化和数据拼接配准操作过程的影响,点云数据中将…

大型数据库期末总复习【SQL server 2008 基础教程】

一、概述 1.Microsoft SQL Server系统的体系结构 Microsoft SQL Server 2008系统由4个主要部分组成。这4个部分被称为4个服务,这些服务分别是数据库引擎、分析服务、报表服务和集成服务。这些服务之间相互存在和相互应用,它们的关系示意图如图所示&…

“世界中医药之都” 亳州市医保局领导一行莅临万民健康交流指导

为进一步推进智慧医疗、智慧服务、智慧管理“三位一体”为主旨的“智慧中医、健康社区”项目建设。2023 年 5 月 3 日,“世界中医药之都” 亳州市医保局 局长 吴旭春 、 医保中心主任秦克靖 、 办公室主任徐伟 等一行 5 人莅临 万民健康交流 指导工作 &#xff0c…

JQuery实现自定义滚动条

在页面中虽然可以通过CSS修改滚动条的样式,但是部分属性是无法自己修改和设置的,而且不同浏览器存在兼容问题,因此通过JS来实现滚动条在自定义滚动条的环境下也是有必要的。 接下来,我们来实现上图两种情况下滚动条的实现。 一、页面搭建 1.…

白宫召见科技巨头 讨论AI潜在风险 以确保人们从创新中受益

ChatGPT的问世,被认为是通用人工智能发展的“奇点”和强人工智能即将到来的“拐点”,甚至有业内人士推测所有数字化系统和各个行业都可能被其重新“洗牌”。 乐观主义者表示,人工智能的核心是对人类大脑的模拟,其目的是延伸和增强…

mysql数据库之事务

1.事务的概念 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个 整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元&#xf…

ES6-Class类

ES6 提供了更接近传统语言的写法,引入了 Class (类)这个概念,作为对 象的模板。通过 class 关键字,可以定义类。基本上, ES6 的 class 可以看作只是 一个语法糖,它的绝大部分功能&…

代码随想录算法训练营第三十二天 | 利润题、覆盖范围题

122.买卖股票的最佳时机II 文档讲解:代码随想录 (programmercarl.com) 视频讲解:贪心算法也能解决股票问题!LeetCode:122.买卖股票最佳时机II_哔哩哔哩_bilibili 状态:根本做不出来,思路太巧了。 思路 想获…

DT7遥控DBUS协议解析

文章目录 运行环境:1.1 DBUS协议解析1)DT7遥控2)配置串口引脚3)配置串口接收DMA 2.1例程代码移植1)例程移动到 Inc 和 Src2)makefile添加.c文件 3.1核心代码解释4.1代码修改1)bsp_rc.c 和 remote_control.c2)调用代码 5.1调试1)硬件接线2)串口工具监视拨杆数据 运行…

【C++】哈希

一、unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 l o g 2 N log_2 N log2​N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。 …