虚幻引擎之动态贴花

UE5中2D精灵实现动态光影与阴影的3种核心方案 在实时渲染中,动态光照与阴影是提升场景沉浸感的关键技术。其原理基于渲染管线对物体材质域、法线信息和深度缓冲区的处理,通过计算光线与表面的交互来模拟真实光影效果。这项技术的核心价值在于打破2D与3D资产的视觉壁垒,实现视觉风格的统一。在游戏开发、影视动画、混合现实等应用场景中,让2D元素(如精灵、UI)融入3D光照环境是常见的工程挑战。本文聚焦于虚幻引擎5(UE5),深入探讨通过改造材质着色模型、使用定制轮廓网格体以及动态投影器技术,解决2D资产无法投射或接收阴影的问题,其中涉及对材质域、法线贴图和阴影贴图等 阅读详情

UE4之动态贴花

目录

  1. 声明依赖

  2. 测试环境

  3. 事件1:从文件到材质【C++】

  4. 事件1:从文件到材质【蓝图】

  5. 事件2:从组件到投影【C++】

  6. 事件2:从组件到投影【蓝图】

  7. 效果

本文关于如何让用户从电脑中选择图片,自动制作成UE4贴花,并贴到地面上,整个理想的流程如下:


声明依赖

在manifest文件[name].build.cs中覆盖以下代码,声明项目中需要调用的功能。

PublicDependencyModuleNames.AddRange(new string[] { 
    "Core", 
    "CoreUObject", 
    "Engine", 
    "InputCore" , 
    "ImageWrapper", 
    "SlateCore", 
    "DesktopPlatform" 
 });
  • Core:核心标准库,包括数学库和容器类

  • CoreUObject:虚幻根对象,C++反射功能

  • Engine:引擎框架,包括actors和components

  • InputCore:输入设备驱动,包括键盘鼠标

  • ImageWrapper:图片相关的工具

  • DesktopPlatform:桌面UI界面



测试环境

搞一块地板用来贴贴花,一面墙用来辨识方向,设置基本的GameMode来操作玩家:WASD+QE+鼠标移动;鼠标左键投影贴画,鼠标右键选择图片。再创建一个widget提示用户这些操作。


事件1:从文件到材质【C++】

详细API接口:https://docs.unrealengine.com/en-US/API/Developer/DesktopPlatform/IDesktopPlatform/OpenFileDialog/index.html

// 截取自 getFile.cpp 文件


void UgetFile::getFileDialog( const FString& DefaultPath, const FString& FileTypes, TArray& OutFileNames, const bool multiple, const FString& DialogTitle)
{
    if (GEngine)
    {
        if (GEngine->GameViewport)
        {
            void* ParentWindowHandle = GEngine->GameViewport->GetWindow()->GetNativeWindow()->GetOSWindowHandle();
            IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();
            if (DesktopPlatform)
            {
                uint32 SelectionFlag = multiple? 1:0;
                DesktopPlatform->OpenFileDialog(ParentWindowHandle, DialogTitle, DefaultPath, FString(""), FileTypes, SelectionFlag, OutFileNames);
            }
        }
    }
}

事件1:从文件到材质【蓝图】


事件2:从组件到投影【C++】

详细API接口:https://docs.unrealengine.com/en-US/API/Runtime/ImageWrapper/IImageWrapper/index.html

// 截取自 getFile.cpp 文件


UTexture2D* UImageLoader::LoadTexture2D(const FString path, bool& IsValid, int32& OutWidth, int32& OutHeight)
{
    UTexture2D* Texture = nullptr;
    IsValid = false;
    if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*path))
    {
        return nullptr;
    }
    TArray CompressedData;
    if (!FFileHelper::LoadFileToArray(CompressedData, *path))
    {
        return nullptr;
    }
    TSharedPtr ImageWrapper = GetImageWrapperByExtention(path);
    if (ImageWrapper.IsValid() && ImageWrapper->SetCompressed(CompressedData.GetData(), CompressedData.Num()))
    {
        TArray UncompressedRGBA;
        if (ImageWrapper->GetRaw(ERGBFormat::RGBA, 8, UncompressedRGBA))
        {
            Texture = UTexture2D::CreateTransient(ImageWrapper->GetWidth(), ImageWrapper->GetHeight(), PF_B8G8R8A8);
            if (Texture != nullptr)
            {
                IsValid = true;
                OutWidth = ImageWrapper->GetWidth();
                OutHeight = ImageWrapper->GetHeight();
                void* TextureData = Texture->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
                FMemory::Memcpy(TextureData, UncompressedRGBA.GetData(), UncompressedRGBA.Num());
                Texture->PlatformData->Mips[0].BulkData.Unlock();
                Texture->UpdateResource();
            }
        }
    }
    return Texture;
}

事件2:从组件到投影【蓝图】



效果

游戏界面:

弹窗界面:

<完>


虚幻引擎系列推荐:

UE5 TPS游戏武器开火特效:C++实现与网络同步优化 在游戏开发中,视觉反馈系统是提升玩家沉浸感的核心技术之一,它通过即时、多感官的响应将操作与游戏世界紧密连接。其原理在于将逻辑与表现分离,C++负责底层逻辑与网络同步,而粒子、音效等资源则通过数据驱动实现高效调用。这一设计在多人TPS游戏中尤为重要,它能显著提升射击手感和游戏品质。通过模块化分解,如枪口闪光、弹壳抛出和命中效果,并结合可靠的网络同步策略,开发者可以构建出既炫酷又高性能的特效系统。本文以UE5引擎为例,深入探讨了如何利用C++与Niagara系统实现武器开火特效,并优化网络带宽与性能,为打造3A 阅读详情

相关推荐

UE4_贴花_贴花基础知识二

在本示例中,你将了解贴花如何在多个表面上进行投射。请注意,如果表面朝向与投射方向较为平行,贴花投射时必然会产生一些拉伸。另外,请记住,贴花可以在包括骨骼网格体在内的静态和动态网格体上进行投射。展示如何使用类别下的属性关闭特定网格体上的贴花。请注意,你需要点击该类别的展开箭头才能看到此属性。

Growthofnotes的博客 876

UE4 制作贴花效果

贴花功能可以动态制作模型材质效果,常用在血液、弹孔、油漆等。效果如下图所示: 1.创建材质球设置如下: 2.直接拖拽到场景中 调整位置、大小 根据Decal的大小,可实现双面显示效果。 3.设置灯光后渲染 设置ProjectSetting下参数:Dbuffer、Z pass 重启UE4,修改材质球参数(根据材质球使用的贴图进行选择相应Shading Mod...

Deveuper的博客 2万+

Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务

因此,当使用外部容器时,如此处的 Tomcat 来部署项目,AbstractAutoServiceRegistration 就不能监听到容器启动事件了,也就不会尝试向服务注册中心注册当前这个微服务,那么注册就失败了,并且也就没有异常信息了。自定义获取获取外部容器端口的方法, 然后监听应用启动事件,当应用被启动时,获取外部容器启动的端口号,然后将这个 port 设置到 NacosAutoServiceReigistration 中。在启动类同级目录,复制下面代码即可(不需要修改,直接构建war即可)

ttyy1112的专栏 2519

射影几何变换的基本原理

贴花的几何变换目录前情提要几何变换:平移/旋转/缩放平移:以“我”为起点的射线追踪旋转:法线贴花、暴露翻滚角缩放:线性增长的相对速率蓝图入口细节优化演示前情提要在上一篇文章中我完成了整...

全栈空间 1766

ECU-TEST新手入门:从软件申请到第一个测试包创建的完整保姆级流程

本文详细介绍了ECU-TEST软件从申请试用、安装配置到创建第一个测试包的完整流程。针对新手用户,提供分步指导,包括界面认知、测试组件添加、变量定义及执行结果分析,帮助快速掌握汽车电子测试工具的基本操作。特别说明试用授权的两种获取方式和安装注意事项。

weixin_30606461的博客 481

三维跨孔电磁波CT数据可视化框架搭建

利用matlab实现对跨孔电磁波CT实测数据反演,并搭建了三维CT数据可视化框架,可装填实测CT反演数据。

Neverlevsun的博客 1169

UE4 动态修改材质 控制颜色和贴图

首先在Construction当中创建动态材质,然后将动态材质赋值给角色,在Event Graph当中通过按键来控制贴图或者颜色的修改。 1、修改颜色 根据角色Mesh上的第一个Material,来创建动态材质,创建之后保存此动态实例,最后更改Mesh的材质在EventGraph当中,通过按键F来动态修改Material的颜色,颜色值随机 2、修改贴图 修改之前的材质面板中一些内容,删除颜色节点,按

Fighter 6万+

STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控

本文详细介绍了如何使用STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控。从硬件选型、连接调试到乐联网平台配置和STM32程序开发,提供了完整的实现步骤和常见问题解决方案,适合物联网入门开发者参考。

weixin_30823001的博客 80

谈谈游戏影视中的贴花decals技术

贴花是游戏引擎当中常用的一类贴图技术,通常是把图片绘制到另一个物体的表面,游戏当中我们常常看到的污迹,弹孔,脚印,墙面涂鸦等等这些都归功与decals神奇效果。 这类技术有很多种,有的纯粹是面片加透明贴图,有的是分层材质,所以说贴花技术不只是单纯的一种技术,它可以是一种材质,也可以是模型,或者是两者效果的混合,有很多种表现方式 一般运用于游戏当中decal的技术是屏幕空间的延迟贴花,具有很...

shenmifangke的专栏 3449

夜间灯光遥感数据介绍及下载汇总

夜间灯光遥感数据介绍及下载汇总

qq_43874102的博客 1万+

STM32F103ZET6【标准库函数开发】------04五个串口配置实战:从零到一构建多串口通信系统

本文详细介绍了STM32F103ZET6标准库函数开发中五个串口(USART/UART)的配置实战,从硬件引脚识别、时钟树配置到多串口系统整合技巧。通过具体代码示例和调试经验,帮助开发者快速构建稳定的多串口通信系统,适用于工业控制、物联网网关等应用场景。

weixin_29188997的博客 346

UE4 材质笔记之水洼(贴花)

本笔记是基于《材质完全学习教程》一书中的讲解。此书适合UE4美术和初级程序学习,属于应用层讲解的书籍,也会涉及到部分图形学原理的讲解。 由于其中的讲解极其细致,这里的笔记尽量不复制粘贴,旨在积累材质素材的同时,将关键巧妙的节点运用进行记录。 本笔记不适合学习参考,仅适用于有一定基础进行照抄,需要学习请参考原书。 本次笔记实现的是水洼材质,参考书194到222页的内容。

xcinkey的博客 3509

lammps模拟技巧:高熵合金势函数设置三种方法

大家好,我是小马老师。 本文继续介绍lammps模拟中的势函数设置方法。 在前面的文章中,介绍过高熵合金的建模:高熵合金建模 高熵合金包含的原子数较多,势函数的设置相对复杂,在平时一对一的咨询中,这种问题也相对较多。 下面介绍三种高熵合金势函数设置方法。 1.下载专用势函数 下面的网站包含了大多数原子的势函数: https://www.ctcms.nist.gov/potentials/ 如需下载包含Fe原子的势函数,直接点Fe: 出现势函数列表: 比如Al-Co-Cr-Fe-Ni就是高熵合金AlCoC

lammps_jiayou的博客 8962

UE4风化和老化的影响

查看原文请点击: 原文链接 现在常见的游戏有动态的风化和老化的影响:雨,雪,灰尘,铁锈,污染……大部分时间这些影响驱动的程序员因为他们需要像访问自定义阴影图或全屏幕空间后处理执行特定的代码。离开dontnod我工作的一个特征允许艺术家自己办理这种效果之前。当时我们需要很多的影响和我想让艺术家原型一样多的理念为他们。这篇文章将提供此功能的解释,将实现细节的虚幻引擎4下。它的目标是与一个

痞子龙3D编程 4839

自私兽群优化器(SHO)详解:从生物本能到智能优化

自私兽群优化器(SHO)是一种受动物群体自私行为启发的智能优化算法。该算法模拟动物在捕食威胁下的两种行为:聚集行为(全局搜索)和自私行为(局部搜索),将优化问题的解空间映射为生存环境,候选解视为猎物个体。SHO通过安全性评估将猎物分为安全、危险和高危三类,分别采用不同的位置更新策略,并引入捕食者角色增加选择压力。相比传统优化算法,SHO具有无需梯度信息、自适应平衡探索与开发、参数简单等优势,特别适合高维复杂和多模态优化问题。算法通过马尔可夫链理论保证收敛性,已在工程设计和数据挖掘等领域展现出良好性能。

qq_42212808的博客 198

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

使用Megascans,Blender和Substance 3D画家创建渔人旅馆(p2)

今天云渲染小编接着Polina Tarakanova分享的Fisherman's Inn项目上篇分享,下篇主要是纹理和材料、组装场景、照明等方面的分享。

Renderbus瑞云渲染的博客 794

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

虚幻引擎 4.9

本发布版本包含了129个重大修改,这些修改由虚幻引擎的令人赞叹的社区开发者提交而来。感谢这些开发者对虚幻引擎4.9的贡献:   Andrew Zhilin (zoon), Artem V. Navrotskiy (bozaro), Artyom Sovetnikov, Ben Rog-Wilhelm(zorbathut), Ben Wiklund (bwiklund), Black Phoeni

痞子龙3D编程 9575

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

虚幻引擎4控制台变量和命令

虚幻引擎4控制台变量和命令 原文链接:https://digilander.libero.it/ZioYuri78/   名称 帮帮我 r.AccelPredrawBatchTime 当显示加载屏幕或类似的时候覆盖r.PredrawBatchTime的值以在玩家不会注意时执行更多工作,或者0来使用r.PredrawBatchTime。默认为0。 r.AccelTarget...

weixin_36369675的博客 1万+

UE延迟贴花全解析:材质创建、混合模式与性能优化

在游戏场景渲染中,贴花技术能够以极低成本为表面增加细节,让水泥墙上的裂纹、地面血迹与弹孔等效果更加逼真。延迟贴花基于延迟渲染管线,利用投影盒将贴图信息写入GBuffer,从而实现与表面紧密贴合且受光照影响的视觉效果。材质创建时需正确设置材质域与混合模式,Stain适合污渍、AlphaComposite适合实体破损;合理使用Decal Response可以控制数据写入通道以降低开销。贴花Actor的投影盒方向与大小、Fade参数和Sort Order决定了显示正确性与时序表现。实际开发中,为弹孔、脚印等动态贴

weixin_34198881的博客 326

贴花拖尾材质 也可绑定到角色动画 用粒子驱动

再添加到角色脚上 角色添加一个箭头 生成绑定到箭头上旋转位置都要绑定 大小设置一个变量。

蓝图大法 247

UE3 Light Functions (光照函数)

Light Functions (光照函数) Light Functions (光照函数) 概述Decals(贴花) vs 光照函数可以使用哪些材质表达式? Texture 2D(二维贴图)Texture Cube(立方体贴图) 如何旋转我的立方体贴图光照函数? 注意 可以使用哪种类型的光源?虚幻编辑器光照函数指南 创建光照函数给光

痞子龙3D编程 3663

UE5 两种方式解决Decal Actor贴花拉伸问题

在使用Decal Actor组件放置贴花时,常会遇到拉伸(竖纹)问题。以下是两种常见的解决方法

UE4引擎技术分享 374

UE延迟贴花系统实战指南:从材质参数到性能优化

在游戏场景中,贴花(Decal)是一种在物体表面叠加投影质感的技术,它无需修改模型结构即可实现弹孔、污渍、裂缝等细节,极大提升画面真实感。其底层依赖延迟渲染中的G-Buffer,通过覆写颜色、法线、粗糙度等属性来与场景融合,既支持静态装饰也支持动态玩法反馈,但若使用不当则容易导致性能下降或渲染异常。从材质域与混合模式的选择,到法线响应、深度响应、自定义深度遮罩等核心参数设置,再到投影盒摆放、曲面贴合和排序优先级等实操细节,合理的贴花管线能兼顾视觉质量与运行效率。本文结合真实项目经验,系统梳理UE延迟贴花的制

weixin_32570803的博客 256

UE5 Niagara实战:用蓝图捕获粒子碰撞事件,做个交互式雨滴效果

本文详细介绍了如何在UE5中使用Niagara粒子系统和蓝图联动,实现雨滴碰撞触发交互式效果。通过配置粒子数据导出到蓝图,捕获碰撞事件并生成涟漪贴花、播放音效等高级交互,提升游戏环境的沉浸感。文章包含从基础粒子系统构建到高级效果优化的完整步骤,适合开发者快速掌握UE5 Niagara与蓝图的实战应用。

weixin_33717117的博客 616

UE4 UDecalComponent 贴花材质紧贴 Mesh 的配置与验证

UE4 UDecalComponent 贴花紧贴 Mesh 需把材质域设为 Deferred Decal、调大 DecalSize 的 X 值,并用射线命中法线设置旋转。本文给出可复制的材质与 C++ 配置、移动验证步骤及 401、local proxy failed 等报错排查表,配合 TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 的模型通道可快速定位渲染与调用问题。

weixin_42601608的博客 4

【美术向】90天入门UE引擎开发--学习日记(60/100)

游戏美术

weixin_42229060的博客 5743
上一篇: 【转】chromium垄断背后的阳谋论
下一篇: 射影几何变换的基本原理
xosg
xosg 领域专家: 网络协议与安全技术领域 领域专家: 网络协议与安全技术领域
博客等级 码龄9年 1986粉丝 864原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xosg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值