第二十三章 Unity 材质

这篇具有很好参考价值的文章主要介绍了第二十三章 Unity 材质。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3D模型主要是通过材质(Material)和贴图(Texture)来表现其精美的外表,说白了就是一张“画皮”而已。我们之前的DirectX课程中介绍过材质,它实际就是对光的反射率,这样简单的设置并不能展现3D模型的外观,因此就引入了贴图来展示模型物体的表面纹理。请注意,贴图是材质的一部分,因为材质的本质就是颜色,图像是展示颜色的最好方式。但是,本章节要讲的是PBR材质。PBR全称Physically Based Rendering,译成中文是基于物理的渲染,是目前非常流行的一种拟真渲染技术。它是利用真实世界的原理和理论,通过各种数学方法推导或简化或模拟出一系列渲染方程,并依赖计算机硬件和图形API渲染出拟真画面的技术。

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

以上是电影《战斗天使》的画面。主角阿丽塔是计算机通过PBR技术渲染出来的虚拟角色。对于游戏而言,PBR材质已经成为了次时代游戏的标配。Unity从5.0开始就支持PBR材质了。Unity内部实现机制遵循了PBR的基本准则,支持金属度,表面粗糙度,能量守恒,菲涅尔反射,表面阴影遮蔽等特性。

接下来,我们仍然在“LightDemo”工程中创建一个新的场景SampleScene2.unity。材质也是一个资源,所以我们要在Project视图中右键选择“Create”->“Material”,然后重命名为“TestMaterial”即可,截图如下:

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

我们选中“TestMaterial”材质文件,然后查看它的Inspector检视面板,查看它的属性

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

在我们之前的很多章节中,我们已经简单使用过材质了。我们基本上都是设置一个颜色值而已。修改的方式就是点击“Albedo”后面的颜色框,非常的简单。接下来,我们就系统性的讲解一下材质的各个属性。

首先是Shader的分类:standard和standard(Specular setup)

两者区别是,standard使用了金属模拟的外观,而standard(specular setup)使用镜面模拟的外观。两者都支持PBR材质,只是对应的参数是不一样的。我们一般使用标准着色器standard就行了。什么是Shader?它与材质的关系是什么?在Unity中,材质与Shader的关系很紧密,Shader是材质的一部分,称之为着色器。着色器的本质就是一小段程序,它负责将网格模型和贴图或者颜色按照指定的算法进行渲染输出。简单的理解,Shader的作用是告诉GPU如何去绘制模型的每一个顶点的颜色以及最终每一个像素点的颜色。另外,Shader与渲染管线也有密切的关系。我们之前在DirectX课程中讲过渲染管线的一些内容,它是非常复杂的流程,包括坐标系转换,光照计算,光栅化等等。固定渲染管线已经帮我们实现了大部分的流程,我们能够做的大部分操作只是对模型的控制,但是如果想要实现逼真的现实世界的画面,我们就需要对渲染管线的内部流程进行定制,也就是我们所说的可编程渲染管线。在Unity中就是通用渲染管线 (URP)和高清渲染管线 (HDRP)两种。在这个渲染流程中,我们就可以使用Shader来实现基于物理的着色渲染(PBR)。可以说,Shader是可编程渲染管线中非常重要的一部分,也是实现AAA级游戏画面的关键部分。

接下来就是“Rendering Mode”渲染模式,它有如下几项可以选择:Opaque(不透明),Cutout(裁剪),Fade(渐变),Transparent(透明)四种,他们影响的是透明效果,解释如下:

1. Opaque此项为默认设置,适用于没有透明区域的普通固体对象,说白了就是不透明。

2. Cutout用于创建在不透明区域和透明区域之间具有硬边的透明效果(只有透明和不透明)。

3. Transparent适用于渲染逼真的透明材质(可以设置透明度),如玻璃效果。

4. Fade - 允许透明度值完全淡出对象,可对淡入或淡出的对象进行动画化。

我们以一张图片为例,来说明“Rendering Mode”渲染模式的区别。

首先,我们创建一个Plane,然后调整它的参数,如下

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

 unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

接下来,我们将之前的一张照片(sunwukong.bmp)放置到Assets目录下。

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

接下来,我们如何将图片添加材质中呢?很简单,只需要将图片拖动到Albedo”前面的矩形框内,不是后面的颜色框哦。如下所示

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

同时,在Project面板中材质文件也会发生变化,

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

接下来,我们如何将材质赋予Plane平面上面呢?直接拖动材质文件到Plane上或者其Inspector检视面板中即可。这样拖动的最终设置如下

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

平面Plane的Mesh Renderer组件用于渲染游戏对象,它的第一个属性就是Materials材质组。我们拖动的效果就是将我们的材质赋予了材质组的第一个材质元素。回到我们Scene场景中,就会发现Plane会显示我们的图片了。

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

可能是由于我们对平面Plane的旋转是不对的,因此我们重新调整一下。

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

我们Play运行工程,查看效果

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

这是“Rendering Mode”渲染模式默认Opaque的效果(不透明)。

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

这是Cutout裁剪的效果。

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

这是Fade渐变效果(与Cutout裁剪类似)。

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

这是Transparent透明效果。

接下来我们重点说一下PBR相关的参数:

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

Albedo:基础色,可使用一个颜色值,也可用使用纹理贴图。相当于我们之前的漫反射颜色。

Metallic:金属度,数值在0-1之间,也可以用金属贴图代替,此时Smoothness参数会消失。金属度影响的是高光反射,数值越高,金属感越强。金属度贴图本身是一张灰白图,越白的地方,金属度越强烈,越黑的地方金属度越低。

Smoothness:光滑度,数值在0-1之间,表示材质表面的粗糙程度,影响的是反射效果。

Smoothness Source:指定存储光滑度数据的纹理通道,可选择金属度贴图的Alpha通道或基础色贴图的Alpha通道。

请注意,金属度和光滑度影响的是物体表面的反射情况,图片可能无法看到这种效果。我们使用一个球体,并附加颜色值为(123,78,8,255)的橙黄色材质来查看这两个属性的作用效果。默认情况下,金属度Metallic为0,且光滑度Smoothness为0.5,效果如下

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

我们可以清晰的看到高光部分,接下来我们调整光滑度Smoothness为0(金属度也是0)

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

高光没有了,接下来我们调整金属度Metallic为0.5(光滑度是0)

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

颜色偏暗,接下来调整光滑度Smoothness为0.5(金属度也是0.5)

unity3d 材质,Unity基础,unity,unity基础,unity入门,unity教程

现在就非常像一个金属球了。

接下来介绍的是四个贴图:Normal Map,Height Map,Occlusion和Detail Mask

1. Normal Map:法线贴图;用于增加模型的表面细节;只是改变的表面上的光照结果,并没有真正改变表面上的形状。通过法线贴图使物体低模物体表面具有高度的细节效果。法线贴图本身是一张蓝色的凹凸图。它的原理就是将模型表面的法线向量(x, y, z)存储到一个 RGB 纹理贴图中。法线贴图一般都是通过高模烘焙得到的,并不是手绘的。

2. Height Map:高度图,法线贴图和高度贴图都是凹凸贴图(Bump Map)。它们都是用贴图,去展现低模的表面细节,但它们以不同的方式存储数据。高度图应为灰度图像,白色区域表示纹理的高区域,黑色表示低区域。与法线贴图对比,这种技术更复杂,性能也更高。高度图和法线贴图可以一起搭配使用。

3. Occlusion 称之为AO贴图,负责环境光和环境光反射产生的间接光照,主要用于改善阴影,给场景(模型)更多的深度,有助于更好的表现模型的细节。AO 贴图本身是一张灰白图。

4. Detail Mask 细节遮罩贴图,这个贴图是配合“Secondary Maps”中的 Detail Albedo,Normal Map 两张贴图配合使用的,可以屏蔽模型的某些区域的细节纹理。这意味着您可以在某些区域显示细节纹理,某些区域不显示。这里顺便说一下“Secondary Maps”,也就是细节贴图,主要在近距离观察时具有清晰的表面细节。

最后在介绍一个“Emission”,也就是让模型自发光,这个比较简单。

总结,我们发现基于PBR材质的渲染,能够达到非常逼真的效果。但是,它需要很多的贴图来支持,这就需要美工人员来进行制作。现代游戏的研发流程:美术用建模软件,建立高模模型,然后制作出法线贴图。然后把这个法线贴图,用于减面之后的低模模型上,这样就能用普通贴图,在低模上渲染出高模上的细节。在软件使用上,除了我们日常使用的3ds max和maya之外,推荐大家使用Substance 这款软件。Substance是Allegorithmic公司的一套PBR美术制作工具,包括Substance Painter和Substance Designer两款软件。其中,Substance Painter是PBR贴图绘制软件,该软件提供了大量的画笔与材质,可以让我们轻轻松松的导入自己的模型,然后绘制输出PBR贴图。2019年初,Adobe公司收购Substance Painter和Substance Designer的开发公司Allegorithmic。随后,Adobe就发布了Substance 3D 全家桶,全新发布的 Adobe Substance 3D 系列应用软件由 Substance 套件进化而来。例如,Substance 3D Stager是三维场景搭建软件,Substance 3D Painter是次世代游戏贴图绘制软件,Substance 3D Sampler是真实材质贴图制作软件,Substance 3D Designer是三维贴图材质制作软件。目前使用比较多的是Adobe Substance 3D 2022版本,对应是Substance Painter是7.4版本。文章来源地址https://www.toymoban.com/news/detail-563595.html

到了这里,关于第二十三章 Unity 材质的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [C国演义] 第二十三章

    力扣链接 求 删除字符的ASCLL和的最小值 ⇒ 正难则反 ⇒ 求公共子序列的ASCLL和的最大值 两个数组的dp问题 ⇒ 分区间讨论 ⇒ dp[i][j] -- nums1数组的[0, i] 区间 和 nums2数组的[0, j] 区间, 公共子序列的ASCLL和的最大值 转态转移方程 — 根据最后一个位置进行讨论 遍历顺序 初始化 需

    2024年02月04日
    浏览(34)
  • Nodejs 第二十三章(Markdown 转 html)

    Markdown 转换html 是一个非常常见的需求 什么是 Markdown ? Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。 我们需要用到三个库实现 EJS :一款强大的JavaScript模板引擎,它可以帮助我们在HTML中嵌入动态内容。使用EJS,您可以轻松地将Markdown转换为

    2024年02月04日
    浏览(38)
  • 第二十三章 原理篇:Pix2Seq

    大夏天我好像二阳了真是要命啊。 现在找到工作了,感觉很快乐,但是也有了压力。 《论你靠吹牛混进公司后该怎么熬过试用期》 希望自己能保持学习的习惯!加油! 参考教程: https://arxiv.org/pdf/2109.10852.pdf https://github.com/google-research/pix2seq https://zhuanlan.zhihu.com/p/421851551 ht

    2024年02月13日
    浏览(35)
  • 读书笔记-《ON JAVA 中文版》-摘要26[第二十三章 注解]

    注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方式,使我们可以在稍后的某个时刻更容易的使用这些数据。 通过使用注解,你可以将元数据保存在 Java 源代码中。并拥有如下有下优势:简单易读的代码,编译器类型检查,使用 annotation API 为自己的注

    2024年02月07日
    浏览(36)
  • ChatGPT 与生成式 AI 的崛起:第二十六章到第三十三章

    原文:Rise of Generative AI and ChatGPT 译者:飞龙 协议:CC BY-NC-SA 4.0 恐怖分子、罪犯、警察、国防、执法机构、工程师、作家和学生等都在使用 ChatGPT,这是来自 OpenAI 的强大自然语言人工智能工具,作为他们日常工作的重要组成部分。自去年 11 月底发布以来,这种生成式人工智

    2024年01月24日
    浏览(263)
  • 【Unity3D日常开发】Unity3D中协程的使用

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 最近有小伙伴问协程怎么用、怎么写,我也是会用会写,但是原理不是很明白。 学习了一下,总结出

    2024年02月12日
    浏览(55)
  • unity3D基础操作之01--unity3d窗口界面介绍

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 1、Scene场景编辑窗口; 2、Game游戏运行窗口; 3、Hierarchy场景物体列表窗口; 4、Project项目资源列表窗口; 5、Inspector属性编辑列表窗口; 6、其他常调节窗口 在屏幕左上方为场景编辑窗口Scene,在场景编

    2024年02月06日
    浏览(77)
  • 【Unity3D】Unity3D 软件安装 ( 注册账号并下载 Unity Hub | 安装 Unity Hub | 获取个人版授权 | 中文环境设置 | 安装 Unity3D 编辑器 )

    Unity 官方网站 : 英文 : https://unity.com 中文 : https://unity.cn 进入 中文网站 https://unity.cn , 点击右上角的 \\\" 下载 Unity \\\" 按钮 ; 推荐下载 Unity3D 的长期支持版本 ; 点击界面中的 \\\" 下载 Unity Hub \\\" 选项 ; 根据你的系统 , 选择对应的 Unity Hub , 我在 Windows 上开发 , 因此选择 \\\" Windows 下载 \\\"

    2024年01月25日
    浏览(92)
  • 【Unity3D-01】 记录Unity3D调用外接摄像头

    最近想在Unity3D上调用一个摄像头,通过查找资料发现仙魁XAN和八哥快走开的博客符合我的想法,实现起来也不难就尝试了一下 2.1 在这个工程里新建Canvas 如下图所示 然后下设RawImage为载体 2.2 在Assets里面新建一个脚本命名为PlaneManager.cs 代码内容如下(参考八哥快走开的博客)

    2024年02月04日
    浏览(51)
  • 【Unity3D日常开发】Unity3D中实现单例模式详解

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 首先,说一下,什么是 单例模式(Singleton) 。 单例模式是设计模式中常见的一种设计模式,目的是为了

    2024年02月02日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包