从兼职到大神:新手必看的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

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处