RenderTarget(渲染目标)默认只能使用SceneCapture2d(场景捕获2d)相机传输画面,查过资料以后发现可以使用官方的Composure插件来实现把CineCamera(电影相机)的画面传给RenderTarget。然后使用RenderTarget创建的材质将画面放入场景或UI中。

使用新建第三人称模板演示

ue4 PostProcessVolume限制范围 ue4 composure使用_2d

启用Composure插件并重启 

ue4 PostProcessVolume限制范围 ue4 composure使用_右键_02

打开Window→Composure Compositing

ue4 PostProcessVolume限制范围 ue4 composure使用_右键_03

  右键空白处,点击Create New Comp

ue4 PostProcessVolume限制范围 ue4 composure使用_右键_04

 点击Empty Comp Shot

ue4 PostProcessVolume限制范围 ue4 composure使用_右键_05

 右键创建的0010_comp,点击Add Layer Element

ue4 PostProcessVolume限制范围 ue4 composure使用_ui_06

 弹出的窗口选CG Layer

ue4 PostProcessVolume限制范围 ue4 composure使用_tv_07

 可以看到场景中也有了刚才添加的东西

ue4 PostProcessVolume限制范围 ue4 composure使用_ui_08

 

选中场景中的0010_comp,Composure→Input→Target Camera Actor里为None。选择一个需要的相机。(如果知道SceneCapture2d相机的用法的话这里的相机就相当于一个SceneCapture2d相机。)

ue4 PostProcessVolume限制范围 ue4 composure使用_tv_09

 这里我在场景中新建一个cine camera并选择。

ue4 PostProcessVolume限制范围 ue4 composure使用_2d_10

 选中场景中刚才新建的cg层,可以看到浏览里已经有了画面。CameraSource显示的是继承。自动继承了父级0010_comp选中的摄像机。画面有点模糊的话,自行调整一下cine camera的焦距。

ue4 PostProcessVolume限制范围 ue4 composure使用_ue4_11

 到这一步输入已经完成,接下来将画面输出到RenderTarget。

点击场景中的0010_comp,会发现画面还是空的

ue4 PostProcessVolume限制范围 ue4 composure使用_右键_12

 展开Composure→Transform/Compositing Passes,添加Transform Passes

ue4 PostProcessVolume限制范围 ue4 composure使用_ui_13

 添加后默认为Compositing Element Material Pass,如果不是,在下拉菜单里选中此项

ue4 PostProcessVolume限制范围 ue4 composure使用_ue4_14

 展开添加的TransformPass,可以看到需要一个材质。

ue4 PostProcessVolume限制范围 ue4 composure使用_2d_15

 新建一个材质球并赋给Material项。

ue4 PostProcessVolume限制范围 ue4 composure使用_ue4_16

 双击新建的材质球进入编辑界面,左下角Material→Material Domain选择PostProcess

ue4 PostProcessVolume限制范围 ue4 composure使用_右键_17

 右键空白处,新建TextureSampleParameter2D纹理采样器

ue4 PostProcessVolume限制范围 ue4 composure使用_右键_18

 

ue4 PostProcessVolume限制范围 ue4 composure使用_ui_19

 使纹理采样器名字与cg层保持一致

ue4 PostProcessVolume限制范围 ue4 composure使用_2d_20

 连接至EmissiveColor,应用并保存。

ue4 PostProcessVolume限制范围 ue4 composure使用_右键_21

 回到场景,可以发现0010_comp已经有画面了

ue4 PostProcessVolume限制范围 ue4 composure使用_ue4_22

 展开Composure→Output,添加Output项。OutputPass选择RenderTargetCompositingOutput

ue4 PostProcessVolume限制范围 ue4 composure使用_2d_23

ue4 PostProcessVolume限制范围 ue4 composure使用_ue4_24

  展开OutputPass可以看到需要一个RenderTarget

ue4 PostProcessVolume限制范围 ue4 composure使用_ui_25

 新建一个RenderTarget并使用RenderTarget创建一个材质

ue4 PostProcessVolume限制范围 ue4 composure使用_tv_26

ue4 PostProcessVolume限制范围 ue4 composure使用_ue4_27

 

ue4 PostProcessVolume限制范围 ue4 composure使用_tv_28

  把新建的RenderTarget赋给OutputPass里的RenderTarget

ue4 PostProcessVolume限制范围 ue4 composure使用_2d_29

 最后在场景中新建一个plane(平面),把用RenderTarget新建的材质赋给平面,可以看到已经可以实时同步显示CineCamera的画面了。

ue4 PostProcessVolume限制范围 ue4 composure使用_2d_30

 也可以根据需要把材质域改为UserInterface,放进ui中使用。

用这个方法可以成功的把CineCamera的画面传给RenderTarget。

测试时使用4.26和4.27版本。实际测试中发现色温和滤镜变化后,画面不会同步显示。