从兼职到大神:新手必看的UE材质原理讲解

2024-06-18 17:44

本文主要是介绍从兼职到大神:新手必看的UE材质原理讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于刚接触UE的同学来说,材质篇章往往是令人望而生畏的一大板块。但材质的一些基本原理其实并不难,只要稍作理解便可以轻松入门。接下来我们便分为材质类型和节点类型两个知识板块来介绍材质的相关内容。

材质类型

材质分类

金属:金属材质一般反射比较均匀,且大部分时候反射是带有金属颜色的。

金属材质
金属材质

非金属:非金属材质的反射面与人眼视线的夹角不同,效果上会有一些变化(菲尼尔效果)。

图片
非金属材质

透射:透射材质最经典的就是玻璃,其主要效果除了反射以外还有折射的效果。

图片
透射材质

制作技巧

金属材质:制作金属材质的时候,需要将材质的metallic(金属度)调整到1,也就是把金属度拉满,让材质表现出纯金属的材质。通过base color(颜色)与roughness(粗糙度)通道控制金属的颜色和粗糙度。

金属材质节点

非金属材质:非金属材质的metallic通道则为0,其他的通道与金属通道一致,唯一不同的是Specular(反射)通道可以通过常数来调节反射效果的强弱。

非金属材质节点

透射材质:在UE中制作玻璃等透射材质会比较复杂,需要调整的参数较多,在此便不一一赘述。下图是玻璃材质的参数参考。

透射材质的节点和参数

当熟知三种常用的材质类型之后,再学习一些常用的节点便可以制作很多基础的材质效果了。

节点类型

常数与参数

常数:常数在项目运行时,数值上不会发生改动;在材质实例(instance)上也不会暴露其数值,也无法通过材质实例单独控制参数。

参数:参数在项目运行时,可以通过蓝图等控制其变化;并且在材质实例(instance)上也会暴露其数值,可以通过材质实例单独控制参数。

图片
左侧为常数 右侧为参数

图片
暴露出来的参数

常数命名:可用的常数类型有(a)、(a,a)、(a,a,a)、(a,a,a,a),它们分别为一维常数、二维常数、三维常数、四维常数。我们可以把常数的位数跟空间轴的x,y,z轴相对应上,所以使用空间维度来命名。(a代表任意数值)

参数命名:参数只有一维参数、三维参数、四维参数,一般是用来控制float,RGB,RGBA等参数的变化。

PS:常数与参数之间相互对应,也可以通过右键选择相应选项来相互转换。通常一些固定的值会使用常数将数值固定住,而一些需要调整或者控制的变量则可以通过参数将其释放。

常用运算节点

Add:将输入的两个数值相加,输入的数值必须是相同的类型,如果输入不同维度的数值则会报错,但如果其中一个值是单个的常数时除外。

例如:

(a,b,c)+(x,y,z)=(a+x,b+y,c+z)

(a,b,c)+(1)=(a+1,b,c)

Multiply:将两个输入值相乘,当输入的是两张贴图的时候,输出结果与PS的正片叠底相同。在项目中经常会将贴图与参数相乘,让参数起到控制贴图亮度/强度的作用。

图片
mutiply制作强度控制节点

Clamp:将输入的值约束到min和max 的数值范围内,超出范围的数值会被min或者max所取代。

图片

图片
clamp作用的效果

Max:取两个数值的最大值,当输入的是两张贴图的时候,输出结果与PS的变亮相同。一般情况下混合两种变化较大的纹理并提取高亮的效果,比如划痕。

Min:取两个数值的最小值,当输入的是两张贴图的时候,输出结果与PS的变暗相同。一般情况下混合两份纹理并提取暗部的效果,比如潮湿路面的粗糙度贴图混合积水分布控制贴图。

贴图相关节点

纹理节点也有类似数值那样有常数和参数的区别,分别是texture sample 和texture sample parameter 2D,我们也可以直接右键点击texture sample 选择转化为参数。

图片
两种纹理节点

Texture coordinate:用于调整纹理的UV缩放次数。可以直接通过add节点增加一个二维常数,达到控制UV偏移的效果。

图片
连接二维常数控制偏移

图片
连接三维参数控制偏移

了解了基础的材质知识和节点知识以后,已经能够满足大部分基础材质的制作需求了。趁热打铁,接下来让我们动手实操一下吧

图片

这篇关于从兼职到大神:新手必看的UE材质原理讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072673

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个