用SceneCapture2d来做镜子和监控效果

[复制链接]
查看10270 | 回复21 | 2017-7-22 01:31:23 | 显示全部楼层 |阅读模式
经常看到有人仅仅需要一个简单的镜子反射效果 ,却动用平面反射组件(planar reflection)也许是因为看起来比较好懂,其实是完全没有必要的,这个组件是完全模拟真实反射,但也是非常消耗性能,如果你仅仅需要反射一部分场景,则完全可以用SceneCapture2d场景捕获来做。
QQ图片20170722011434.png
这个SceneCapture2d原理是在场景中放置一个摄像机,把这个摄像机看到的画面每帧输出到一个渲染目标上,你可以把该渲染目标应用到一个材质上,就可以在场景任意地方显示出这个摄像机看到的内容,适合于用做监控摄像画面。但是同样可以做简单的平面镜反射效果。具体就是拖一个SceneCapture2d组件到场景,设置一下它的位置,这里摄像机看到的内容就是你想要在镜子中显示的内容。

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

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

然后创建一个材质,给这个材质绑定一个纹理到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轻松很多。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

11

主题

21

回帖

226

积分

初阶编码师

积分
226