UE4 材质学习笔记07(叶子摇晃着色器/雨水潮湿着色器/材质函数/雨滴着色器)

news2025/1/18 6:20:14

一.叶子摇晃着色器

现实世界中叶子的晃动十分复杂,这次我们将实现每个叶子都动起来,来接近现实世界的效果

先让它整体动起来,可以用time节点,然后用sin节点限制移动的范围

接下来就是找到一个方法,把这条树枝上的单个叶子分离开来,这样我就可以让单个叶子以不同的幅度摆动 ,我要做的是画一个看起来像这样的蒙版遮罩,你不需要为这个蒙版准备一个高分辨率的纹理,只要你能把单个叶子指定为属于红色组、绿色组或蓝色组就行

然后将三个时间值乘以我们的蒙版,根据我们对叶子的分组,会得到三个不同的值,然后加到UV上,每个叶子会根据所属的组来摆动。

最后要做的时用动画控制叶子的法线 ,这样看起来就不只是来回移动了,它们实际上是在轻微摇摆了,它让叶子感觉像是三维的

事实上,着色器应用到树木上以后效果还不错

二.雨水潮湿着色器/材质函数

怎么让表面看起来是潮湿的呢,吸收水分的多孔表面 颜色会变深。表面的基础颜色越深 饱和度越高,所以首先Desaturation增加饱和度。然后再将颜色变暗,所以我们得到一个比开始时颜色更暗、更饱和的表面。

 

当水在材质表面汇聚时,实际上会更平滑,镜面反射更少,接下来模拟这个效果

首先放入一个const2节点,表示潮湿墙面的粗糙度和高光度,水是非常光滑的,粗糙度设置为0.07,大多数表面的高光度为0.5,但是水的反射率比大多数表面要低一些,设置为0.3.然后可以根据潮湿度来进行插值。

现在的效果看起来已经很不错了

现在 创建了一个有湿度控制的材质,假设我要把所有这些节点都添加到每一个材质上,将是个巨大的工作量,所以就要用到材质函,把所有这些节点放进一个单独的函数里。

输入和输出在材质中的显示顺序可以在细节面板的Sort Priority修改

然后只要把材质函数拖拽到材质中就可以使用了,Porousness是用于定义多孔渗水,0代表表面完全不透水,1代表完全透水,表面更暗,更饱和

三.雨滴着色器

首先是雨滴纹理,RG通道将用作法线,B通道是时间偏移,这个遮罩蒙版会让每一滴水滴在稍不同的时间出现,Alpha通道也是蒙版,小黑点代表我想要的静态水滴,白色代表动态水滴

那么首先获取到法线。

接下来我要做的就是提取蒙版,首先从蒙版中获取动态和静态水滴,然后将它们相加并且与法线相乘。

现在这个材质上面都是雨滴,事实上雨滴只会出现在顶部。只需要获取顶点法线的z值,另外可以增加一个常量控制是否下雨。如果想增强水滴的大小,可以将获取法线的*2-1换成*4-2。最后可以修改一下粗糙度,让这些看起来更像水滴。可以在最后的蒙版的结果加上一个power,然后设置成0.1次幂,最后加上OneMinus节点。

最终效果:

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

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

相关文章

MySQL中的增查操作:探索数据的奥秘,开启数据之门

本节,我们继续深入了解MySQL,本章所讲的基础操作,针对的是表的增删查改! 一、Create 新增 1.1、语法 INSERT [INTO] table_name[(column [, column] ...)] VALUES(value_list) [, (value_list)] ... value_list: value, [, va…

WIFI(1)

WIFI(1) 目录 WIFI(1) 回顾 WIFI模块 -- 1、AP模式:(服务器)应用:主要是用来让用户设置自身的wifi密码 -- 2、STA模式:可以获取时间获取天气 应用: 代…

暴力破解案例

暴力破解 1 概述 暴力破解,是一种针对密码的破译方法,将密码进行逐个推算直到找出真正的密码为止。 2 爆破HTTP协议 第一步:实验性发送请求成功 import requests url "http://192.172.0.100:8080/woniusales/user/login"data {"use…

CUDA - nvprof 性能刨析

nvprof 是一个可执行文件&#xff0c;使用everything搜索可以看到它在&#xff1a; 执行命令&#xff1a; nvprof exe_name 如何在windows 下使用&#xff0c;可以参看: windows下使用nvcc和nvprof。 示例 #include <cuda_runtime.h> #include <device_launch_par…

YOLOv8实战水果识别【数据集+YOLOv8模型+源码+PyQt5界面】

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对水果数据集进行训练和优化&#xff0c;该数据集包含丰富的水果图像样本&#xf…

Merlion笔记(二):单变量时间预测

1 简单示例 我们首先导入Merlion的TimeSeries类和M4数据集的数据加载器。然后&#xff0c;我们可以将该数据集中的特定时间序列划分为训练集和测试集。 from merlion.utils import TimeSeries from ts_datasets.forecast import M4time_series, metadata M4(subset"Hou…

ClickHouse入库时间与实际相差8小时问题

原因一&#xff1a;服务端未修改默认时区 解决方案&#xff1a; 1、找 ClickHouse 配置文件 config.xml&#xff0c;通常位于 /etc/clickhouse-server/ 目录。 2、编辑 config.xml 文件&#xff0c;找到 标签。如果标签不存在&#xff0c;需要手动添加。 3、修改 标签的内容为 …

docker部署dvwa靶场

一、简述前情 最近差不多又是网安专业的同学搭建靶场的时候了&#xff0c;DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是安全入门者们最为熟知的练习靶场&#xff0c;它能够帮助小白对常见的安全问题进行理解&#xff0c;并且随着理解问题的深入自主调整靶场…

Redis-02 数据持久化

redis持久化即将数据从内存写入磁盘&#xff0c;Redis提供了两种持久化的方式&#xff1a;RDB和AOF。 1.RDB RDB持久化&#xff1a;Redis可以将内存中的数据定期快照保存到磁盘上的一个二进制文件中。RDB持久化是一种比较紧凑的文件格式&#xff0c;适用于备份和灾难恢复。通过…

vue3中监视 Reactive对象中的属性

watch 的第一个参数可以是不同形式的“数据源”&#xff1a;它可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组 一、框架&#xff1a; <template><div class"divBox"><h2>姓名&#xff1a;{{ person.…

【深圳大学/大学物理实验2】超声探伤实验 实验前预习题答案参考

一、单选题 共 6 小题 共 31 分 1. (5分)电偶极矩的单位是&#xff08; &#xff09; 学生答案&#xff1a;B √ A. B. C. D. 2. (5分)本实验中产生超声波的方法是&#xff08; &#xff09; 学生答案&#xff1a;D √ A. 热电效应 B. 光电效应 C. 电磁效应 D. 压电效…

【专题】关系数据库标准语言SQL

1. SQL语言介绍 SQL(Structured Query Language)是结构化查询语言&#xff0c;它是一种在关系数据库中定义和操纵数据的标准语言&#xff0c;是用户与数据库之间进行交流的接口。 1.1 SQL数据库的体系结构 使用SQL关系数据库的特点&#xff1a; SQL用户可以是应用程序&#xf…

闯关leetcode——100. Same Tree

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/same-tree/description/ 内容 Given the roots of two binary trees p and q, write a function to check if they are the same or not. Two binary trees are considered the same if they are…

PHP简单登录系统

目录 用户数据文件 (users.php) HTML 登录表单 (login.html) PHP 登录处理脚本 (login_process.php) 欢迎页面 (welcome.php) 注销脚本 (logout.php) 效果展示 用户名和密码错误时 用户名和密码正确时 用户数据文件 (users.php) 用于保存用户信息&#xff0c;用户名和他…

【PUSCH的时域资源分配】

DCI format 0_0/0_1用于调度PDSCH传输&#xff0c;每种格式都包含了时域和频域资源的分配字段。 和PDSCH一样&#xff0c;PUSCH也支持Type A和Type B两种映射类型&#xff0c;但是有效的S和L组合不同。 同样&#xff0c;当UE通过DCI调度PUSCH时&#xff0c;DCI的时域资源分配…

日语学习柯桥外语培训jlpt备考「意地」是什么意思?

「意地」 N1单词 意地&#xff08;いじ&#xff09; 词性&#xff1a;名词 含义&#xff1a;心术&#xff0c;用心&#xff1b;固执&#xff0c;倔强&#xff1b;志气&#xff0c;气魄&#xff1b;嘴馋&#xff0c;贪婪 例句&#xff1a; ▲自分が始めたことだから意地でもや…

长三角智驾花絮

杜轩第一次去说服清洁工&#xff0c;收养狗儿&#xff0c;结果清洁工说有人收养了狗&#xff0c;结果狗引起交通事故主人赔钱。第二次尝试说服大妈收养狗儿&#xff0c;大妈给狗儿一脚&#xff0c;说狗儿把她厕所搞脏了。第三次看路上的美女&#xff0c;去说服美女收养&#xf…

UE5运行时动态加载场景角色动画任意搭配-全流程代码(四)

UE5运行时动态加载场景、角色、角色动画、相机动画任意搭配,Android、iOS也可以跑,横竖屏兼容,手机竖屏: 1、场景切换UWorld处理 在通过OpenLevel进行场景切换的时候,UWorld会发生变化,需要我们获取正确的UWorld。 1、在GameInstance监听Level加载 void UMyGameInsta…

nemo-guardrails简单应用

环境&#xff1a;openEuler、python 3.11.6、nemoguardrails 0.10.1、Azure openAi 背景&#xff1a;工作需要&#xff0c;进行调研期间&#xff0c;发现问题太多&#xff0c;且国内网站好多没说明具体问题 时间&#xff1a;20241014 说明&#xff1a;搭建过程中主要是下载h…

ARMA3 STATUS_ACCESS _VIOLATION退出解决方法测试

方法1 [SOLVED] 0xc0000005 status_access_violation ARMA 3 (youtube.com) 启动器-参数-平台 改32位。 没卵用。 方法2 ArmA 3 "STATUS_ACCESS_VIOLATION" FIX!! [2018] (youtube.com) steam-ARMA3-属性-通用-启动选项&#xff1a;粘贴路径&#xff0c;后面加-…