本文中,我们将首先讨论基于物理的渲染,什么是材质域,什么是材质,什么是材质实例,什么是主材质,我们将讨论材质的一些建议和禁忌。最后,我们将了解一些材质概念,你可以将其用于各类项目中的材质。

1.什么是PBR

PBR 表示基于物理的渲染,基于物理的渲染意味着我们根据现实模拟光线,而不是根据主观想法模拟光线。光线的最终效果会更加准确且更加自然。使用PBR的另一个优点是基于物理渲染的材质,在所有光照场景中都能保持一致。无论材质是位于光线充足的室内还是室外,或者是水下,或者是外太空,它对光线的反应是一样的。这意味着你不必根据项目的各种光照场景,创建多个版本的材质或纹理,这也导致了材质不必像以前那样复杂。你可以删除许多曾经必不可少的材质指令。此外,基于物理渲染材质中的材质参数要简单得多,相互依赖性也没那么高。美术师可以更直观地调整参数。

基于物理的渲染不仅极大提升了画面的真实度,赋予我们极为真实的图像。它还可以用于卡通渲染。事实上,UE4的基于物理渲染系统源自于皮克斯和迪士尼的共同成果。这两个工作室因其卡通渲染风格而闻名于世。

最后,关于PBR我想讲一点,你应该使用它的原因是,它有助于你标准化美术工作管线。因为资源无论遇到何种光照情况都能做出相同反应,这是一个巨大的进步。如果你对VRay这类应用很熟悉,你会发现它与UE4中的PBR系统其实非常非常相似,所以你很快就能上手 。

2.材质域

只需改变材质域、混合模式和着色模型,你就可以变换材质来满足各种不同需求。下图中可以看到 材质域、混合模式和着色模型。记住,有些功能会根据 材质域、混合模式或着色模型而启用或关闭。改变三者中的任意一个都可能会影响主着色器节点上的输出。

“材质域(Material Domain)”决定了材质属性的评估方式,“混合模式(Blend Mode)”决定了材质的颜色以及材质与背景,“着色模型(Shading Model)”决定了输入将如何组合来创建材质的最终颜色。例如,如果你想实现玻璃材质,你应该将混合模式改为“透明(Transparent)”,根据你是否希望玻璃对光线做出反应,将着色模型改为“无光照(Unlit)”或“默认带光照(Default Lit)”。不同项目中的材质会使用不同的材质域、混合模式和着色模型组合,没有哪种组合可以满足所有材质需求。你需要制作很多材质,每种都使用不同的组合。记住,没有哪一种材质域、混合模式和着色模型组合,可以满足项目的所有需要。你需要制作不同版本的材质来满足不同的需求,另外要记住的是材质域、混合模式和着色模型不能在运行时更改,如果你觉得:“嗯,我有一个非常棒的材质,我希望在游戏启动时把它变成玻璃材质”,这是不可能的。

3.什么是材质

材质是UE4用于表示并调整对象纹理外观的方式,材质使用材质编辑器创建,你可以在屏幕上看到。材质实际上是由一小块一小块HLSL代码构成,也就是“高级着色器语言”。这些代码块可以执行各种任务,比如给纹理着色或者帮助混合两种纹理。如果你熟悉HLSL,你在材质编辑器中看到的许多功能,你都会很熟悉。因为其中许多都直接源自于HLSL函数,材质需要先编译才能在游戏中使用或显示。要编译材质,你要点击预览窗口上方的“Apply”。你也可以保存材质,保存时材质会自动编译。一旦材质被编译好,它就变成静态的了,不能在项目运行时更改。然而,我们可以使用一种材质,然后把它应用到项目中的各种不同材质上,我们稍后会介绍这点。如果你用过基于线性节点的编辑系统,UE4中的材质编辑器非常相似,所以你很快就能上手。

4.什么是材质实例

之前,我提到过运行时不能更改材质,这意味着如果要改变它的颜色或材质纹理都是不可能实现的。然而,这有点不太方便,尤其是在电子游戏这类动态场景中,这就需要用到“材质实例”了。材质实例是材质的特殊版本,允许我们在运行时修改材质中的参数和纹理,而不必重新编译材质。这使得材质实例的迭代变得非常快,所以你几乎可以实时看到变化效果。你还可以通过时间轴和蓝图与材质实例进行交互,从而获得大量非常酷炫的动画效果。

当你使用一个材质实例时,使用它们的性能优势很有限。然而,当你使用成千上百的材质实例而不是材质时,性能优势就会显现。使用材质实例的主要优点是灵活性,它们允许美术师参与你的项目。你可以设置一个主材质,然后在材质实例中设置许多参数,以便美术师根据喜好调整材质,而无需编写大量复杂的着色器代码。

5.什么是主材质

我之前介绍过主材质和材质实例,但让我们真正深入了解一下什么是主材质。主材质是一种用来完成许多任务的材质,下图是一个主材质实例。

你可以使用许多参数节点,比如矢量参数,叫做“Base_Color”,它的功能是允许我们在材质实例中,使用取色器将材质设置成任意颜色。

另一种参数节点是纹理参数节点,它的作用是允许我们在材质实例中添加任意纹理,以便让材质拥有全新外观。

此外还有标量参数,标量参数控制标量变量,这类参数节点允许你更改材质实例中的参数数值,以便你增加或减少材质实例的某种效果。

如果你想在材质实例中找到可以调整的节点,你要找的就是材质参数节点,有很多种方法可以添加材质参数节点,甚至将现有节点转换为材质参数节点,稍后我们将了解。 现在,你只需知道主材质可以在项目中满足对象的不同材质需求。

6.有关主材质的注意事项

请使用多种主材质, 不要尝试将一种主材质用于所有对象,这是不可能的,会让材质臃肿不堪,最终导致性能问题。你应该做的是,所有不透明场景对象使用一种材质,然后半透明对象使用另一种材质,角色使用一种主材质,武器使用另一种主材质。不要试图用一种主材质满足游戏中的所有需求,这是不可能的。

最后,当你创建主材质时,不要自作主张替美术师做出决定,和他们面对面交流,了解哪些参数他们最常用,然后将它们添加到主材质中。这样美术师只需调整最有用也最常用的参数。这样,你就可以省去维护不必要着色器代码的麻烦,避免材质变得臃肿不堪,这么做还有助于开发人员了解材质中的逻辑。如果许多代码没人使用,那么为什么还要用它们呢?

7.“主材质”的概念

当你创建主材质时,有几点事项有助于你极大提升材质的性能,并且适用于所有目标平台。

首先要介绍的是材质函数,材质函数允许你共享并且复用材质图表的部分内存。UE4实际上自带了许多材质函数,功能齐全,包括确定场景对象的位置以及确定鼠标当前在屏幕中的坐标。你可能已经用多了许多自带的材质函数,只不过你没意识到。我之所以介绍它,原因是如果你需要创建或复用某一组代码,比如调整纹理在X轴和Y轴上的平铺效果,你会发现可以方便地将代码封装成材质函数,然后通过材质库分享代码。这样一旦需要调整平铺效果,你只需调整材质函数而不必打开所有材质然后亲自调整平铺效果。材质函数允许你共享材质代码,从而在你调整全局效果时,减少维护代码的麻烦。

接下来要说的是RGB遮罩打包,当你创建主材质时,你可以描述纹理的使用方式,让美术师将不同的纹理保存在同一张纹理的红、绿、蓝通道中,能够有效减少内容中的纹理占用量。然而,当你在使用RGB遮罩打包时,请确保注明红、绿、蓝通道中各自保存的纹理类型,并在项目整个生命周期长恪守该规范。

接下来要说的是静态开关,静态开关允许你启用或禁用材质中的整条代码路径。例如,你可以使用静态开关启用视差法线贴图,它能够让你的法线贴图看起来很有立体感,不过它的开销很大,所以不要在场景中将其频繁用于材质。通过将功能放置在静态开关内,你可以控制哪些材质会启用或禁用功能,以便美术师将这类功能添加到真正需要它的网格体上。

最后要讨论的特性是特性层级开关,特性层级开关能让材质在任何目标设备上运行,你要做的是将不同版本不同复杂度的材质输出到不同平台中。例如,如果我要使用 Shader Model 5(SM5) 就能获得最高程度的细节和精细度,它是细节最丰富的着色器。而使用ES2模型的材质,通常用于移动平台,它们的实际效果无法提供大量精美细节。ES2中的材质远没有SM5中的材质显得复杂。同样,这个特性允许你将一个材质用于项目的所有的目标发布平台。

ue4玻璃材质_UE4-材质相关推荐

  1. ue4集合类型_UE4材质参数集

    我们今天给大家分享的是UE4中的材质参数集,这个参数集合有什么用了?哈哈它的用处可大了,我们如果在调节一个材质的时候,如果这几个材质里面都有一个相同的材质属性,如果我们按照传统的方法来进行修改太慢了, ...

  2. UE4地编基础-材质蓝图篇

    基本操作(材质编辑窗口) 材质预览窗口中旋转光照:L+左键(在材质预览窗口中) 旋转天空壳:K+左键 复制粘贴节点:Ctrl+W 一.贴图规格设置 1.贴图尺寸规范 官方推荐贴图尺寸为:2的N次幂 如 ...

  3. UE4中的PBR材质

    PBR材质系统原理简介 一.自然界材质 要学会使用PBR首先需要了解什么是PBR,需要从真实世界的这些PBR材质特有的属性拆分开来去了解他们,这样我们就需要了解光,物体表面材质以及光是如何与材质交互的 ...

  4. 【多图】【严肃的技术帖】用UE4做黑丝材质

    [多图][严肃的技术帖]用UE4做黑丝材质 https://zhuanlan.zhihu.com/p/32064456 [多图][严肃的技术帖]用UE4做黑丝材质 奶帆 0.序言 近日,回答了一篇关于 ...

  5. UE4如何动态修改材质(材质参数集)

    UE4如何动态修改材质(材质参数集) UE4如何动态修改材质 一.Material Parameter collection是什么? 二.使用步骤 1.创建材质参数集 2.创建参数 3.添加到材质 4 ...

  6. UE4材质11_材质参数集

    11.1_参数集全局控制材质 创建材质参数集 MPC 材质参数集的前缀 材质参数集可以添加标量和向量 标量一般就是数字 向量就是颜色或者是X,Y,Z 一个材质最多只能使用两个材质参数集 11.2_蓝图 ...

  7. Ogre 光,材质与材质脚本

    Mage小组 著 Email: norman_chen@163.com  renwind@163.com QQ: 18725262 http://www.173d8.com http://blog.c ...

  8. Ogre 材质与材质脚本

    材质与材质脚本 基本概念 Ogre的材质(Material) 为了优化渲染,必须把渲染状态的变化减少到最小.而最频繁的渲染状态改变是材料的变化(大多是纹理的变化). Ogre的Material类封装了 ...

  9. 关于Revit 材质 及 材质的外观图像 见解

    关于Revit 材质 及 材质的外观图像 见解 //对于Revit 功能的二次开发,熟悉操作流程才是开发的基础,思路仅供参考! 首先说我的看法,我认为材质的外观图像是没有更换接口的.(有的话麻烦私信告 ...

最新文章

  1. 让弹出窗口变得“体贴”一些
  2. linux远程登录uart,Linux console,uart,tty的关联关系
  3. python的float精度_python 中的各种小数点后的精度处理方式
  4. Android开发六 电话拔号器
  5. linux 实时功能,linux – 什么是同时具有实时循环和非实时功能的更好方法
  6. 操作系统:分享10个经常用的cmd命令
  7. python中for x in range_python教程:对 [lambda x: x*i for i in range(4)] 理解
  8. 树——一种数据结构(二)
  9. 聚类(5)-- Spectral clustering
  10. Ubuntu18.04 安装 Idea 2018.2
  11. 刘意JavaSE 学习笔记 Day12-Day14——字符串API(String/StringBuffer/StringBuilder...)
  12. 使用Excel2016对数据进行线性回归分析
  13. 《骆昊-Java面试题全集(中)》学习笔记_2018_12_17
  14. 简单说说Java SE、Java EE、Java ME三者之间的区别
  15. 了解CV和RoboMaster视觉组(五)滤波器、观测器和预测方法:维纳滤波器Wiener Filter,LMS
  16. 中文名字和英文名字正则匹配
  17. Linux工控主板的多通道高速并行采集方案(基于libiio)
  18. [React hooks] Antd Form: Instance created by `useForm` is not connected to any Form element.Forget t
  19. 虚拟主机知在同一服务器,虚拟主机与云服务器
  20. Python小游戏贪吃蛇

热门文章

  1. Material Design风格登录注册
  2. MAC OS 命令行使用详解
  3. redis中使用redis-dump导出、导入、还原数据实例
  4. Python异步非阻塞IO多路复用Select/Poll/Epoll使用
  5. Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件表达式)
  6. php怎么循环输出二维数组,PHP中遍历二维数组—以不同形式的输出操作
  7. feign调用多个服务_spring cloud各个微服务之间如何相互调用(Feign、Feign带token访问服务接口)...
  8. python socket出现ip已经使用_Python:只接受特定的IP(socket)
  9. 滤波器开发之二:基于算数平均的带阻平滑滤波器
  10. Linux怎么查看保存的密码,在Linux中查看已保存的WiFi密码