AirsoftGoGo 发表于 2017-7-22 01:31:23

用SceneCapture2d来做镜子和监控效果

经常看到有人仅仅需要一个简单的镜子反射效果 ,却动用平面反射组件(planar reflection)也许是因为看起来比较好懂,其实是完全没有必要的,这个组件是完全模拟真实反射,但也是非常消耗性能,如果你仅仅需要反射一部分场景,则完全可以用SceneCapture2d场景捕获来做。

这个SceneCapture2d原理是在场景中放置一个摄像机,把这个摄像机看到的画面每帧输出到一个渲染目标上,你可以把该渲染目标应用到一个材质上,就可以在场景任意地方显示出这个摄像机看到的内容,适合于用做监控摄像画面。但是同样可以做简单的平面镜反射效果。具体就是拖一个SceneCapture2d组件到场景,设置一下它的位置,这里摄像机看到的内容就是你想要在镜子中显示的内容。

然后创建一个渲染目标,右键新建render target 2d,取名为rt_xxx(随意)


然后在场景中选中刚刚拖进的SceneCapture2d组件,在属性中为Texture Target指定为我们创建的渲染目标rt_xxx


然后创建一个材质,给这个材质绑定一个纹理到BaseColor节点上,纹理就设置为我们的渲染目标rt_xxx,将这个材质应用到你场景中需要反射(镜子)的地方就可以实现效果了!

注意这个反射并不是静态的,而是每帧都会刷新。但是因为仅仅捕获部分场景,相对消耗较小。


dududu_2004 发表于 2017-7-22 07:54:34

这个方法在UDK上也适用

kaladars 发表于 2017-7-22 11:13:27

那水面的反射是不是用立方体渲染目标的截图来做比较好

AirsoftGoGo 发表于 2017-7-22 11:47:40

kaladars 发表于 2017-7-22 11:13
那水面的反射是不是用立方体渲染目标的截图来做比较好

是的,立方体捕获的是整个场景,但是消耗是2d捕获的6倍

kaladars 发表于 2017-7-22 11:50:58

AirsoftGoGo 发表于 2017-7-22 11:47
是的,立方体捕获的是整个场景,但是消耗是2d捕获的6倍

直接用立方体渲染目标生成截图就可以降低消耗,但就只能捕获固定场景了

AirsoftGoGo 发表于 2017-7-22 11:57:38

kaladars 发表于 2017-7-22 11:50
直接用立方体渲染目标生成截图就可以降低消耗,但就只能捕获固定场景了 ...

这样等于是完全静态的了,那就没有消耗

仁义礼智信 发表于 2017-7-22 14:26:46

在一个项目看过、但不知其做法,非常感谢楼主的分享

unrealplay 发表于 2017-7-22 20:41:36

感谢楼主的分享

yuemingxishan 发表于 2017-7-22 23:26:17

这个做镜子很好,但实在不明白以渲染著称的UE4为什么普通的反射材质连unity都不如。。。为什么,为什么,

cg_bull 发表于 2017-7-23 00:59:17

yuemingxishan 发表于 2017-7-22 23:26
这个做镜子很好,但实在不明白以渲染著称的UE4为什么普通的反射材质连unity都不如。。。为什么,为什么, ...

Unity是全开放模式,自定义Shading 自定义渲染。实现镜子比UE4轻松很多。。。
页: [1] 2 3
查看完整版本: 用SceneCapture2d来做镜子和监控效果