在unreal中的基于波叠加的波浪水面材质原理和制作

news2025/1/6 14:54:27

关于水的渲染模型

如何渲染出真实的水体和模拟,是图形学,游戏开发乃至仿真领域很有意思的一件事

记得小时候玩《Command & Conquer: Red Alert 3》,被当时的水面效果深深震撼,作为一款2008年出的游戏,现在想起它当时的水面还是依旧印象深刻

 2018年的《盗贼之海》的水就非常好看

 到现在的水体渲染已经从材质模拟到现在ue5的粒子模拟,可谓是进步十足,现在的主流水体渲染方案有几种,线性波形叠加方法,统计模型方法,波动粒子方法,基于物理的方法,预渲染方法等,各种五花八门的方法层出不穷,本文的方法主要是基于第一种方法

真实的波浪模型

波浪,意思是指具有自由表面的液体的局部质点受到扰动后,离开原来的平衡位置而作周期性起伏运动,并向四周传播的现象。

实际上海或者水的波浪是多个波浪叠加起来的产物

波的性质:必须是周期性或近似周期性的运动,也是可以后面我能用流动uv的原因

驻波(Standing wave)﹕外观波形并无明显之移动趋势,各点仅有水面上下起伏者

行进波(Progressive wave): 外观波形以特定速度行进者

波浪叠加﹕不同频率、不同方向传的波浪彼此可以是不相干的。实际在海面 上观看到的混乱波浪场便是由许多大小不等、方向与频率各异的波浪所叠加而成。叠加过程并不妨碍波浪场各组成份子(成份波)彼此的独立性。

 关于波的叠加

波共同特性 各种形式的波的共同特征是具有周期性。 受扰动物理量变化时具有时间周期性,即同一点的物理量在经过一个周期后完全恢复为原来的值;在空间传递时又具有空间周期性,即沿波的传播方向经过某一空间距离后会出现同一振动状态(例如质点的位移和速度)。

 

在同一介质中传递的两个波相遇时,重叠范围内会遵守波的叠加原理,当两波分开后,会维持各自原本的运动,称为波的独立性。

下面将利用波的独立性多个性质叠加实现波浪模拟

首先给一个波浪的基础颜色和法线贴图

 可以看见一个贴图已经好了,但是没有效果

对波浪的法线贴图做UV流动动画

关于Panner(平移)节点 

坐标(Coordinate):接收可以通过表达式来修改的基本 UV 纹理坐标。 
时间(Time):接收用来确定当前平移位置的值。这通常是用来提供常量平移效果的时间表达式,但是,也可以使用常量或标量参数来设置特定偏移,或者通过 Matinee 或蓝图来控制平移。
Speed X(速度 X) : 坐标沿水平或 X 轴方向移动的速度。
Speed Y(速度 Y) : 纹理坐标沿垂直或 Y 轴方向移动的速度。
Const Coordinate(常量坐标) : 仅在未连接坐标的情况下使用。
Fractional Part(小数部分) : 仅输出平移计算结果的小数部分,以提高精度。输出将大于或等于 0 并且小于 1。 

这时候给材质一个在X分量上的速度0.2,这时候就可以看到材质流动了

但是这时候法线波浪不明显,这时候就需要修改法线贴图的分量比例了 

处理法线贴图使波浪明显

法线贴图的的RGB分别代表法线的XYZ坐标

光线作用于法线的时候,物体的凹凸效果是通过XY的分量决定的,这里将RG(也就是法线向量的XY分量)提出来,乘一个系数Param,系数越大,波浪越明显

处理好的蓝图如下:

 将RG分量乘以系数,就直接给个20,可以发现波浪已经非常明显了

 但是单个贴图流动,总是重复的,太假了

利用多UV的向量叠加制造不重复真实的波浪效果

将三个贴图的法线贴图叠加,给予不同的速度(不同的波浪速度是不一样的)

这三张贴其实是不一样的(我用了个技巧,给他们的UV平铺不一样,大小不一样,就像三种波纹叠加了) 

 看看效果:

利用贴图法线XY分量的周期变化实现驻波 

用下面的材质,注意其中的Param要随着时间周期变化

 在actor蓝图中设立一个时间轴,值随着时间去变大然后变小,周期变化

 时间轴(其实这里用正弦或者余弦函数更仿真,这里只先讲清楚原理)

 实现效果: 

将行进波和驻波叠加

 最终效果:

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

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

相关文章

RK3399平台开发系列讲解(基础篇)POSIX 定时器

🚀返回专栏总目录 文章目录 一、clockid二、sigevent三、timerid四、flags五、 value & old_value六、POSIX 定时器的优势沉淀、分享、成长,让自己和他人都能有所收获!😄 📢为了克服传统定时器的局限性,POSIX 标准组织设计了新的计时器接口和规范,使它们能提供更…

Java安全学习之RMI

最近在看Phith0n师傅的知识星球的Java安全漫谈系列,随手记下笔记 RMI全称远程方法调用(Remote Method Invocation)。这是允许驻留在一个系统(JVM)中的对象调用在另一个JVM上运行的对象的一种机制,能够远程调用远程对象的方法。 RMI通信过程、原理 我们首…

SSM实战-外卖项目-06-用户地址簿功能、菜品展示、购物车、下单(一个业务涉及5张表)

文章目录外卖项目-第六天课程内容1. 用户地址簿功能1.1 需求分析1.2 数据模型1.3 导入功能代码1.4 功能测试 (其实需求分析里我就自己写了一份代码,而且测试过了,下面再测试了一遍)2. 菜品展示2.1 需求分析2.2 前端页面分析2.3 代…

关于二叉树访问顺序的选择题

第一题: 从题目中我们可以得出这是棵完全二叉树(最后一列不满,且连续),层次顺序。 我们可以推出树的形状: 我们现根据层次遍历的性质画出出栈的图: ABCDEFGH 最开始是A所以第一个位置为A&…

STC单片机波特率初值计算以及通用串口配置程序

STC单片机波特率初值计算以及通用串口配置程序🔖这里以STC15手册上的数据展开。🔰串口模式一:可变波特率8位数据方式。以为最为常用的配置模式。🌿定时器1模式0:16位定时器计数器🌿定时器1模式2:8位定时器计数器 ✨当然…

linux高级存储功能

高级存储功能 1、Stratis管理分层存储 通过Stratis,便捷的使用精简配置(thin provisioning),快照(snapshots)和基于池(pool-based)的管理和监控的等高级存储功能。 (1&a…

加拿大亚马逊FBA海运收费标准有哪些

众所周知,加拿大亚马逊的海运物流费用一般有头程运费、尾端派送费和仓储费等其他费用。那么,加拿大亚马逊FBA海运收费标准有哪些呢?接下来一起来了解下加拿大亚马逊FBA海运收费标准和费用。加拿大亚马逊FBA海运收费标准有哪些? 加拿大亚马逊FBA海运收费…

《Java8实战》第6章 用流收集数据

collect 是一个归约操作,就像 reduce 一样可以接受各种做法作为参数,将流中的元素累积成一个汇总结果。具体的做法是通过定义新的Collector 接口来定义的,因此区分 Collection、Collector 和 collect 是很重要的。用 collect 和收集器能够做什…

PADS-微处理器、USB转UART芯片、MINI-USB PCB封装设计

目录 1 微处理器PCB封装设计 2 USB转UART芯片PCB封装设计 3 MINI-USB PCB封装设计 4 添加验证 详细步骤不再文字说明,直接截取关键步骤截图 1 微处理器PCB封装设计 查看芯片手册 器件高度 器件高度1.6 管脚中心点间距0.5,管脚焊盘长1.2、宽0.3&…

[ 云计算 | Azure ] Chapter 04 | 核心体系结构之数据中心、区域与区域对、可用区和地理区域

本章节主要内容进行讲解:Azure云计算的核心体系结构组件中的:Azure物理基础设施(Physical infrastructure),区域(Regions)和区域对(Region Pairs)、地理数据中心&#xf…

一文解决ethtool 原理介绍和解决网卡丢包排查思路

前言 之前记录过处理因为 LVS 网卡流量负载过高导致软中断发生丢包的问题,RPS 和 RFS 网卡多队列性能调优实践[1],对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路,如果你是想了解…

UE 简单插件制作

本文主要是提供几个写UE插件的实例,借此来了解在UE里使用C创建自定义插件的做法: 写一个使场景变暗的简单插件写一个自定义窗口,展示项目里所有的动画资产 写一个使场景变暗的简单插件 参考:Unreal Engine 5 - Writing Plugins …

统信UOS专业版系统安装教程 - 手动分区安装UOS系统

全文导读:本文主要介绍了安装UOS系统过程中使用手动分区安装方法,一般没有特殊要求建议使用全盘安装UOS系统。 准备环境 制作好统信UOS专业版启动U盘 一台CPU频率≥2GHz、内存≥4GB、硬盘≥64GB的电脑 安装步骤 一、制作UOS 系统启动盘 制作UOS 系…

自动驾驶TPM技术杂谈 ———— CCRT验收标准(评分标准)

文章目录介绍评价方法指标体系算分方法一级指标二级指标三级指标四级指标五级指标行车辅助能力得分说明跟车能力得分说明前车静止识别与响应得分说明前车低速识别与响应得分说明前车减速识别与响应得分说明前车切入识别与响应得分说明前车切出识别与响应得分说明跟随前车起停得…

数据结构小知识------时间与空间复杂度

本章思维导图: 一,时间复杂度 1.1时间复杂度的概念 🌐:什么是时间复杂度呢?时间复杂度其实就是一个程序运行时它的指令运行的次数。 在这里,程序默认每条指令的运行时间是一样的。所以时间复杂度就可以理解…

【云原生进阶之容器】第六章容器网络6.4.2--Flannel的安装与部署

1 flannel的安装与部署 见链接一篇文章带你了解Flannel - Flannel - 操作系统 - 深度开源 1.1 部署环境规划 1.2 安装部署 #tar -xf flannel-v0.13.0.tar.gz #mv /apps/svr/flannel-v0.13.0 #ln –svfn /apps/svr/flannel-v0.13.0 /apps/svr/flannel 1.2.1 调整Flannel配置…

设计模式(超详细)

设计模式 原则 什么是SOLID原则? S单一职责SRP Single-Responsibility Principle 一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合,高内聚在面向对象原则的引申,将职责定义为引起变化的原因,以提高内聚性减少引起变化的原因。 比如…

项目资源管理流程:五步专业指南

项目资源管理是描述大多数项目经理的一项关键职能的方式——收集完成工作所需的团队成员、设备和其他材料(也称为资源)。 以下是项目资源管理的步骤清单: 步骤1:资源规划 为了确定完成项目的资源需求,你首先需要了…

SpringCloud-Gateway实现网关

网关作为流量的入口,常用的功能包括路由转发、权限校验、限流等Spring Cloud 是Spring官方推出的第二代网关框架,由WebFluxNettyReactor实现的响应式的API网关,它不能在传统的servlet容器工作,也不能构建war包。基于Filter的方式提…

个人开发者如何选择阿里云服务器配置CPU内存带宽?

阿里云服务器个人用怎么选择?云服务器吧建议选择ECS共享型s6,不限制CPU性能,选择1核2G或2核4G都可以,云服务器s6处理器采用2.5 GHz主频的Intel Xeon Platinum 8269CY(Cascade Lake),睿频3.2 GHz…