在 UE4.27 中,由于材质编辑器没有 “Parameter Texture” 节点,需通过 “Texture Object Parameter(纹理对象参数)” 节点 来创建 “MediaTexture” 参数,最终实现 “视频纹理→材质→Image 控件” 的渲染链路。以下是 适配 UE4.27 的完整操作步骤 + 原理拆解 + 验证方法,确保材质能正确接收代码传递的视频数据:
一、核心逻辑回顾
代码中会通过 MediaMaterialInstance->SetTextureParameterValue(FName("MediaTexture"), MediaTexture)
,将 “视频帧对应的媒体纹理(UMediaTexture)” 传递给材质的 “MediaTexture” 参数。因此,材质必须:
- 包含一个 名为 “MediaTexture” 的纹理参数(用于接收代码传递的纹理);
- 通过 “纹理采样” 节点读取该参数的视频数据;
- 将采样后的视频画面输出到 UI 显示通道(自发光通道)。
二、UE4.27 适配:创建含 “MediaTexture” 参数的材质(分 5 步)
第一步:新建 “视频专用基础材质”
-
在内容浏览器空白处 右键点击 → 依次选择「Materials & Textures」→「Material」,创建一个新材质,命名为
M_VideoDisplay
(名称自定义,建议带 “Video” 标识,方便后续查找)。- 注意:不要创建 “Material Instance(材质实例)”,必须是 “基础材质(Material)”,因为参数需要在基础材质中定义。
-
双击打开
M_VideoDisplay
的 材质编辑器,先配置材质基础属性(确保适配 UMG UI):- 在材质编辑器右侧「Details(细节)面板」中,找到「Material Domain(材质域)」→ 选择 User Interface(必须选这个,否则材质无法用于 UMG 的 Image 控件);
- 找到「Blend Mode(混合模式)」→ 选择 Opaque(不透明)(如