UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误

提问

UE5报错如图。解析原因

回答

你遇到的这个错误提示是:

"Out of video memory trying to allocate a rendering resource. Make sure your video card has the minimum required memory, try lowering the resolution and/or closing other applications that are running. Exiting..."

这是 Unreal Engine 5 中非常常见的一个显存不足错误。下面是详细解析和解决建议:


🎯 错误原因解析

该错误表示 你的GPU显存已经耗尽,无法再为新的渲染资源分配空间 。在UE5中,由于使用了NaniteLumen等高端渲染技术,显存消耗非常大,常见的原因包括:

🔍 常见触发原因

  1. 场景中有大量高面数模型(尤其是开启Nanite时)。
  2. 使用了高分辨率纹理(如4K、8K贴图,或者多个材质重叠)。
  3. 实时光照 + Lumen GI同时开启。
  4. Editor运行时加载了太多资源(如多个Level、海量Instance)。
  5. GPU显存较小(< 6GB尤其容易出错)。
  6. 显卡驱动版本过旧或不兼容UE5

🛠️ 解决方案

✅ 推荐优先检查以下几项:

1. 关闭其他占用显卡资源的程序
  • 如Chrome、视频播放器、OBS、Photoshop等。
  • 任务管理器 > 性能 > GPU中查看显存使用情况。
2. 降低项目中资源的开销
  • 检查并禁用部分Lumen设置(尤其是反射和GI)。
  • 光照烘焙为静态,减少实时渲染压力。
  • 替换高分辨率纹理为2K或以下的版本。
  • 尽量避免场景中有大量高面数模型同时显示。
  • 只加载当前需要的Level(使用World Partition的流式加载功能)。
3. 显卡驱动更新
4. 使用控制台命令限制显存使用

可以在命令行中尝试:

复制代码
r.Streaming.PoolSize=1500

(数值1500表示显存池大小为1500MB,可以根据你GPU显存适当调大或调小)

5. 降低编辑器设置(Editor Preferences)
  • Engine Scalability Settings 中把设置改为 Low 或 Medium
  • 关闭Real-time 视图(在Viewport左上角下拉菜单中)。

🧪 临时解决方案:命令行启动参数(减少显存需求)

在启动项目时添加以下参数可以减少加载:

bash 复制代码
-projectfiles -nosplash -nocachedprovider -NoVerifyGC

🧠 建议升级硬件情况(如频繁出现此问题)

项目 建议最低配置
GPU NVIDIA RTX 3060 或更高(至少 12GB 显存)
RAM 32GB 内存
VRAM 8GB 显存或更高(最好12GB+)

如果你方便的话,可以告诉我:

  • 使用的显卡型号?
  • 当前项目的内容复杂度(是否启用Nanite/Lumen,模型数量等)?
  • 是否是运行编辑器时报错,还是打包/运行游戏时报错?

我可以根据你的具体情况再给出优化建议。

继续提问

我是和simulink联合仿真的。为什么我在play期间很长时间都不会出现这个问题,但是只要在结束Play以后(即便play时间很短),结束以后不久就必定报这个错误?好像和结束这个操作是有关系的。为什么不结束就不出现显存不足,一旦结束过个一分钟大概就必定报显存不足?

回答

你这个现象非常关键,说明:

显存不足并不是在Play过程中发生的,而是"退出Play"之后显存释放不当/异常累积导致的。

这是一个在 Unreal Engine 与外部系统(如Simulink、ROS、MATLAB等)联合仿真 中常见的 资源管理或内存泄露问题


🎯 问题核心分析

你提到的行为描述非常具体,我们逐条分析:

✅ 现象回顾

  • Play期间不报错(即使时间较长)。
  • 结束Play后 不久(大约一分钟)100%出现"Out of Video Memory"
  • 每次只要运行并退出Play,就必定触发,和Play时长无关。
  • 和你使用Simulink联合仿真有关。

🔎 可能的根本原因

🧠 1. Simulink插件或通信模块未正确释放GPU资源

  • 如果你使用Simulink通过某种接口(如UDP、ROS、共享内存或自定义C++插件)与UE5通信:

    • Play期间会分配资源用于数据收发、图形渲染、纹理映射等;
    • 退出Play时UE5尝试释放这些资源,但可能因为插件没有实现正确的析构或清理逻辑,导致资源悬挂在GPU侧
    • 然后过几十秒,垃圾回收触发或资源使用继续增加 → 显存爆掉。

🎯 所以Play期间反而不会立即爆,因为资源是被使用中的;一旦"释放"出问题,才会出错。


🧠 2. Actor或组件在退出Play后未被正确销毁

  • UE5中的某些Actor、Component(比如自定义用于显示Simulink数据的Mesh或Texture):

    • EndPlay时应被销毁。
    • 如果有Tick、RenderTarget或MaterialInstance仍在后台运行,它们会持续使用显存

🧠 3. Render Target / Material / Texture 没被手动释放

  • 比如你用来显示Simulink数据的动态纹理(UTextureRenderTarget2DUpdateResource()等):

    • 如果没有调用 ReleaseResource(),或未设置 MarkPendingKill(),它们不会被清除。
    • 退出Play后,这些未释放的资源依然占用GPU显存。

🧠 4. 循环定时器或线程未被Kill

  • 有些插件或Blueprint可能在Play模式中注册了Timer、线程或Event Dispatcher。
  • 如果这些没有被正确ClearTimer(),会在退出Play后后台继续运行,引发延迟性资源堆积。

✅ 针对性解决建议

✔ 检查Event EndPlay

确保你在Actor、Component等蓝图中实现了 Event EndPlay,清理所有动态资源:

blueprint 复制代码
Event EndPlay
→ Clear Timer by Handle
→ Release Texture Resources
→ Destroy Components
→ Set References to None

✔ 如果使用 C++ 插件:

检查你的 BeginPlay() / EndPlay() 生命周期中是否有类似下面的管理:

cpp 复制代码
MyTexture->ConditionalBeginDestroy();
MyRenderTarget->ReleaseResource();
MyComponent->DestroyComponent();

并且在 Tick() 和通信回调中加逻辑:判断是否在编辑器模式下还在运行。


✔ 调试建议:使用UE内置显存分析工具

打开以下命令窗口(Editor中按 ~ 进入控制台):

复制代码
stat RHI
stat GPU

退出Play后观察显存是否逐渐增加?是否某个资源未销毁?

还可以使用:

复制代码
rhi.DumpMemory

输出当前内存占用状态,查找泄露点。


✔ Editor设置修改

为了避免UE5自动保留资源,你可以尝试:

  • Project Settings > Garbage Collection 中设置更短的回收时间;
  • 启用 gc.DumpPoolStats 查看资源池占用情况。

🔧 如果你方便透露更多信息,我可以更具体帮助你排查:

  • 使用的Simulink接口(是否自定义插件?基于ROS还是UDP?)?
  • Play模式是否会使用RenderTarget / 动态材质?
  • 是否在Play模式中有Blueprint或C++不断创建纹理或Mesh?
  • 是否能复现该现象于空项目中?

✅ 临时规避方法

如果你短期内需要绕开这个问题:

  • 尽量避免多次Play → Stop,改为使用 Simulate 模式
  • 或者重启Editor以强制释放显存;
  • 设置 r.Streaming.PoolSize=512 限制最大显存池,避免暴涨。

如果你能提供你的资源创建 / Simulink接口逻辑的相关截图(Blueprint或代码),我可以帮你查找是否有遗漏的释放逻辑。这个问题虽然表面是显存,但本质是资源未释放或泄露。我们可以一步步定位!

相关推荐
青牛科技-Allen5 小时前
GC3910S:一款高性能双通道直流电机驱动芯片
stm32·单片机·嵌入式硬件·机器人·医疗器械·水泵、
freexyn6 小时前
Matlab自学笔记六十一:快速上手解方程
数据结构·笔记·matlab
物联网软硬件开发-轨物科技8 小时前
【轨物洞见】光伏机器人与组件、支架智能化协同白皮书
机器人
ytttr8738 小时前
matlab通过Q学习算法解决房间路径规划问题
学习·算法·matlab
PNP机器人11 小时前
探索具身智能新高度——机器人在数据收集与学习策略中的优势和机会
机器人
NYKJ.Co11 小时前
开疆智能CCLinkIE转CANopen网关连接GBS20机器人配置案例
机器人·canopen·cclinkie
zandy101111 小时前
衡石科技chatbot分析手册--钉钉数据问答机器人配置
科技·机器人·钉钉·chatbot·衡石科技
梦子要转行13 小时前
matlab/Simulink-全套50个汽车性能建模与仿真源码模型9
开发语言·matlab·汽车
Zevalin爱灰灰15 小时前
MATLAB GUI界面设计 第六章——常用库中的其它组件
开发语言·ui·matlab
ue星空16 小时前
UE5音频技术
ue5