UE特效案例 —— 火堆

2024-01-20 01:40
文章标签 特效 案例 ue 火堆

本文主要是介绍UE特效案例 —— 火堆,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一,环境配置

二,场景及相机设置

三,效果制作

模型材质效果制作

特效元素制作

1,火

2,火星

3,烟雾

4,热浪/折射

四,效果性能优化

查看材质复杂度 Shader Complexity

查看光照复杂度 Light Complexity

五,效果修改


一,环境配置

  • 创建默认地形Landscape,如给地形上材质需确定比例;
  • 添加环境主光源DirectionalLight,设置相应的强度和颜色;
  • 添加天光反射SkyLight,用于天空反射;
  • 添加指数级高度雾ExponentialHeightFog,设置雾密度Fog Density及散射颜色Fog Inscattering Color;
    • 设置Directional Inscattering Color为零;
    • 设置雾的起始距离Start Distance;
  • 设置曝光PostProcessVolume,设置Min/Max Brightness为1;
    • 与关闭Game Setting类似,但还需设置Exposure Compensation;

二,场景及相机设置

        在环境配置好,即可导入所需的模型Mesh,纹理贴图Textures,及可能用到的场Fields等;

  • 将主模型放置到关卡适当位置;
    • 根据贴图,给模型添加基本的材质球;
    • basecolor/metallic/specular/roughness/anisotropy取值范围都是0~1;
    • metallic为1,则specular不起作用;
    • 自发光可以无穷大;
  • 根据模型设置相机,以获得相应的画面;
    • 可在相机视口的Cinematic Vieport的模式下方便调整;
    • 避免误动,锁定相机(右击对象关闭Transform/Lock Actor Movement);
    • 可关闭右下角的相机小视图(Editor Preferences/Preview Selected Cameras);
  • 添加主光,以设置火堆大体的光照效果;
    • 可用点光源,设置相应的颜色的范围;
    • 可设置多个点光源,模拟不同方向和位置的光照;

 

三,效果制作

        环境及相机都设置后,接下来即是真正的效果制作了;效果包括模型本身材质效果、及主体的Cascade或Niagara效果;

模型材质效果制作

        木材燃烧时,燃烧的部分一般会有高热流动的效果;可通过材质纹理颜色及变化来模拟该效果;

特效元素制作

        火、火星、烟雾、热浪;

1,火

火材质制作

  • 透明无光照模式;
  • 火贴图为一张序列纹理贴图,使用SubUV纹理采样,可使子贴图平滑过渡;
  • 使用ParticleColor关联上自发光和透明度,可在粒子内控制;
  • 使用DepthFade处理交叉边缘硬切问题;

Cascade制作

  • 发射Sprite精灵粒子(即始终面向摄像机);
  • 附材质,附上设置好的火材质,根据火贴图设置SubUV(8*4),线性融合Linear Blend模式;添加Subimage Index模块来动态播放子序列(从0开始的);
  • 调发射位置,设置圆柱形cylinder发射位置,调整好布局,可分为火堆中间火,及底部周围火(向中心倾斜Initial Rotation);
  • 设值初始状态
    • 初始尺寸,默认PSA Square对齐,改为SPA Rectangle矩形模式(可分别设置长和宽),在相应调节Initial Size;
    • 初始生命,调节火焰的生命长短,可反应本身变化的快慢;
  • 调节生命周期内属性
    • Color over Life、Size by Life等,配合效果调节颜色、透明度、大小等;
    • 避免大小缩放的时候从中间缩放,可添加Pivot Offset调整缩放枢纽;

注:I键隐藏或显示编辑器背景,O键键隐藏或显示编辑器地面;可使用Screen Percentage调整视图清晰度;

2,火星

火星材质制作

  • 透明无光照模式;
  • 根据粒子速度ParticleSpeed,火星形态不一,低速偏圆形,高速偏长条形;
  • 火星飘动时有闪烁效果,使用Sin来实现,关联上Time*(1-ParticleRelativeTime),避免粒子闪烁一致,
  • 使用ParticleColor关联上自发光和透明度,可在粒子内控制;

Cascade制作

  • 发射Sprite精灵粒子(即始终面向摄像机);
  • 附材质,附上设置好的火星材质;
  • 调发射位置,设置圆柱形cylinder发射位置,调整好布局;
  • 设值初始状态
    • 初始尺寸,默认PSA Square对齐,改为SPA Velocity模式(可沿速度方向),在相应调节Initial Size;
    • 初始生命,调节火星的生命长短,可反应本身变化的快慢;
    • 初始速度,设置初始的运动方向;
  • 调节生命周期内属性
    • 添加Acceleration、Orbit、Drag等,来调整生命周期内的运动;
    • Color over Life、Size by Life等,配合效果调节颜色、透明度、大小等;

注:离视图较远时,火星可能变糊或消失,勾选材质内的Responsive AA,即可改善;

3,烟雾

烟雾材质制作

  • 透明无光照模式;
  • 烟雾贴图为一张序列纹理贴图,使用SubUV纹理采样,可使子贴图平滑过渡;
  • 使用ParticleColor关联上自发光和透明度,可在粒子内控制;
  • 使用DepthFade处理交叉边缘硬切问题;

Cascade制作

  • 发射Sprite精灵粒子(即始终面向摄像机);
  • 附材质,附上设置好的烟雾材质,根据烟雾贴图设置SubUV(8*8),线性融合Linear Blend模式;添加Subimage Index模块来动态播放子序列(从0开始的);
  • 调发射位置,设置圆柱形cylinder发射位置,调整好布局,添加点旋转差异Initial Rotation;
  • 设值初始状态
    • 初始尺寸,默认PSA Square对齐,在相应调节Initial Size;
    • 初始生命,调节生命长短,可反应本身变化的快慢;
    • 初始速度,设置初始的运动方向;
  • 调节生命周期内属性
    • 添加Acceleration、Drag等,来调整生命周期内的运动;
    • Color over Life、Size by Life等,配合效果调节颜色、透明度、大小等;

4,热浪/折射

烟雾材质制作

  • 透明无光照模式;
  • 添加法线贴图,避免精灵粒子始终面对相机无入射角,无法形成折射;
  • 使用DynamicParameter,可在粒子内动态控制折射强度;
  • 添加RadialGradientExponential,避免精灵粒子边缘也折射;

Cascade制作

  • 发射Sprite精灵粒子(即始终面向摄像机);
  • 附材质,附上设置好的热浪材质;
  • 调发射位置,设置圆柱形cylinder发射位置,调整好布局;
  • 设值初始状态
    • 初始尺寸,默认PSA Square对齐,在相应调节Initial Size;
    • 初始生命,调节生命长短,可反应本身变化的快慢;
    • 初始速度,设置初始的运动方向;
  • 调节生命周期内属性
    • 添加Acceleration、Drag等,来调整生命周期内的运动;
    • 使用Dynamic模块来动态控制折射强度;

注:折射只可折射视口中的内容,视口外无法计算;对半透明物体默认不受折射影响,关闭Render After DOF即可折射;

四,效果性能优化

        制作完整个效果后,还需查看其时间的性能,复杂低性能的效果,可能影响实际使用;

查看材质复杂度 Shader Complexity

        性能消耗主要来源于许多重复透明对象的重复绘制

 

优化性能的方法

  • 减少透明对象的重复量;
  • 将CPU粒子改为GPU粒子,但会限制许多粒子模块和材质节点的使用;
    • Acceleration无法使用,可使用Const Acceleration替代;
    • Orbit无法使用,可使用场Field替代;
    • ParticleRelativeTime无法使用,可使用ParticleRandomValue替代;
    • Dynamic无法使用,可使用ParticeColor节点传递通道参数;
    • 可根据贴图,剪切空白部分,从而较低重复绘制;
    • GPU必须设置边界框,如边界框过小,当视口看不见边界框时,则粒子会整体消失;

查看光照复杂度 Light Complexity

        性能消耗主要来源于光照重复度;

 

优化性能的方法

  •  调整光照范围;
  • 关闭不必要的投射阴影cast shadow;

五,效果修改

  • 火星有点小,加大了火星;
  • 背景环境有点亮平;
  • 火堆的灯光有点白亮,范围也过大;另外添加了灯光闪烁修改;
  • 整体没有突出火堆,对比没有拉开;

  • 背景稍微加亮了些;
  • 另外添加了光晕;

注,参考学习来自点线CG

这篇关于UE特效案例 —— 火堆的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD