第二十四章 Unity 纹理贴图

news2024/9/28 3:26:43

通常情况下,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”材质,显示该模式使用的材质信息。

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

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

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

相关文章

鸿蒙Hi3861学习九-Huawei LiteOS-M(互斥锁)

一、简介 互斥锁又被称为互斥型信号量,是一种特殊的二值信号量,用于实现对共享资源的独占式处理。 任意时刻互斥锁的状态只有两种:开锁或闭锁。 当有任务占用公共资源时,互斥锁处于闭锁状态,这个任务获得该互斥锁的使用…

C++系列六:一文打尽C++运算符

C运算符 1. 算术运算符2. 关系运算符3. 逻辑运算符4. 按位运算符5. 取地址运算符6. 取内容运算符7. 成员选择符8. 作用域运算符9. 总结 1. 算术运算符 算术运算符用于执行基本数学运算,例如加减乘除和取模等操作。下表列出了C中支持的算术运算符: 运算…

Oracle 19C 单机环境升级RU(19.3升级至19.12)

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

鸿蒙Hi3861学习五-Huawei LiteOS-M(任务管理)

一、任务简介 关于任务的相关介绍,之前文章有比较详细的介绍,这里不做过多解释,可以参考如下文章:FreeRTOS学习二(任务)_t_guest的博客-CSDN博客 而LiteOS的主要特性可以总结为如下几点: LiteO…

〖数据挖掘〗weka3.8.6的安装与使用

目录 背景 一、安装 二、使用explorer 1. 介绍 2.打开自带的数据集(Preprocess) 1.打开步骤 2.查看属性和数据编辑 3.classify 4.Cluster 5.Associate 6.Select attributes 7.Visualize 待补充 背景 Weka的全名是怀卡托智能分析环境(Waikato Environme…

低代码平台解读—如何不写代码创建表单和维护表单

工作表新建与修改——敲敲云 新建工作表的流程包含 新建工作表/编辑公祖表为工作表添加字段,例如“员工档案”表中有姓名、性别、年龄等字段为字段设置属性工作表布局工作表预览、保存、关闭 1、新建工作表/修改工作表 新建工作表 修改工作表 2、为工作表添加字段 …

c#笔记-定义类

声明类 类可以使用帮助你管理一组相互依赖的数据,来完成某些职责。 类使用class关键字定义,并且必须在所有顶级语句之下。 类的成员只能有声明语句,不能有执行语句。 class Player1 {int Hp;int MaxHp;int Atk;int Def;int Overflow(){if (…

算法记录 | Day55 动态规划

392.判断子序列 思路: 1.确定dp数组(dp table)以及下标的含义: dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。 2.确定递推公式: if (s[i - 1] t[…

线程同步、生产者消费模型和POSIX信号量

gitee仓库: 1.阻塞队列代码:https://gitee.com/WangZihao64/linux/tree/master/BlockQueue 2.环形队列代码:https://gitee.com/WangZihao64/linux/tree/master/ringqueue 条件变量 概念 概念: 利用线程间共享的全局变量进行同…

单片机c51中断 — 开关状态监测

项目文件 文件 关于项目的内容知识点可以见专栏单片机原理及应用 的第五章,中断 图中 P2.0引脚处接有一个发光二极管 D1,P3.2引脚处接有一个按键。要求分别采用一般方式和中断方式编程实现按键压下一次,D1 的发光状态反转一次的功能。 查询…

从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象

目录 1. 构造函数的初始化列表 1.1 初始化列表概念 1.2 初始化列表注意事项 2. 构造函数的explicit关键字 2.1 C语言的隐式类型转换 2.2 explicit 关键字使用 3. static成员 3.1 static的概念 3.2 static成员特性 3.3 static成员使用场景 4. 友元(frien…

【Java 基础】类和对象 方法重载详解

《Java 零基础入门到精通》专栏持续更新中。通过本专栏你将学习到 Java 从入门到进阶再到实战的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 订阅专栏后添加我微信或者进交流群,进群可找我领取 前端/Java/大数据/Python/低…

Linux 常用命令(1)

文章目录 Linux 常用命令格式 clear 清屏清屏获取当前目录的路径 pwd目录切换命令 cd进入上一级目录进入当前目录的文件夹 ta中(假设这里有一个文件夹ta)进入主目录进入根目录 显示目录内容 ls显示详细信息,包含文件属性显示全部内容,包含隐藏文件&#…

tiechui_lesson07_中断级和自旋锁

一、中断级IRQL 高级别可以打断低级别的调用,同级别不能打断同级别的调用。 中断级在软件层面分为三级,再高的级别是硬件发送的中断。 - 0 pass_level- 1 apc_level- 2 dpc_level 只有硬件中断能打断 1.获取中断级 DbgPrint("当前执行中断级为 %…

无法防范的网络攻击-DDOS

DDoS攻击(Distributed Denial of Service Attack)是一种网络攻击方式,攻击者通过利用大量的计算机或者网络设备向目标服务器发送大量的请求,使得目标服务器无法正常响应合法用户的请求,从而导致服务不可用或者服务质量…

M302H-YS-Hi3798MV300H/MV310-当贝纯净桌面卡刷固件包

M302H-YS-Hi3798MV300H/MV310-当贝纯净桌面卡刷固件包-内有教程及短接点提示 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简…

LicheePi4A尝鲜开箱笔记

开发板介绍 LicheePi4A是以 TH1520 主控核心,搭载 4TOPSint8 AI 算力的 NPU,支持双屏 4K 显示输出,支持 4K 摄像头接入,双千兆 POE 网口和多个 USB 接口,音频由 C906 核心处理。 LicheePi4A详细介绍可以在https://wi…

SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

FreeRTOS内核:详解Task各状态(GPT4帮写)

FreeRTOS内核:详解Task各状态(GPT4帮写) 1. 背景2. Task顶层状态区分3. 运行状态(Running)4. 非运行状态4.1 阻塞态(Blocked):4.2 挂起态(Suspended)4.3 就绪…

K8s基础8——svc基础使用、应用暴露、iptables代理、ipvs代理

文章目录 一、Service基本了解二、Service定义与创建2.1 相关命令2.2 yaml文件参数大全2.3 创建svc2.3.1 两种创建方式类比2.3.2 验证集群内A应用访问B应用2.3.3 将集群外服务定义为K8s的svc2.3.4 分配多个端口 2.4 常用三种类型2.4.1 ClusterIP(集群内部访问&#…