![ed9e31c3dcc7f74466791df1b1a42142.png](https://i-blog.csdnimg.cn/blog_migrate/aed9ceb33a82606c1152c81d71dd51c8.jpeg)
游戏开发中的捕获需求
在游戏开发过程中,对角色的预览,和某些情况下生成头像是比较常见的需求。有些引擎,可以创建一个额外的场景和相机,然后将需要的内容放置到合适的位置,然后可以获得想要的图像。在UE4中不是这样,没法创建其他的场景,我们需要使用CaptureSceneComponent2D,字面意思看出来这是个场景捕获的组件,它就是用来捕获我们想要的场景内容到2D图像上。
CaptureSceneComponent2D如何使用
这个组件的使用相当简单,首先我们新建一个第三人称的示例工程,使用以下基本步骤:
- 创建RenderTarget2D,捕获组件捕获的内容需要渲染到这个纹理上。选择AddNew->Materials & Textures -> RenderTarget来创建,并命名为 RT_Preview。
![eff78756ddb9418b793048a41f71dd80.png](https://i-blog.csdnimg.cn/blog_migrate/37e700fc4768f9973c18857ec8baa276.jpeg)
- 在场景中放入SceneCapture2D,调整位置和朝向,对着角色
![0ff03fc0950a3a4afcd464c83f326515.png](https://i-blog.csdnimg.cn/blog_migrate/70fba1b0f0884688b5802d926c274f70.jpeg)
![9c150316cd6480ccaa0537e080b097d1.png](https://i-blog.csdnimg.cn/blog_migrate/773f6a9fc6ec77e95db54bda91c788d2.png)
- 选中场景中的SceneCapture2D对象,查看Details面板,找到TextureTarget项,然后选择刚刚创建的RT_Preview,选择之后立刻就会发现其中的小预览图就变成场景中的样子。
![e5774e983070cd2a4244eb8fe4100557.png](https://i-blog.csdnimg.cn/blog_migrate/42d74e5b8b0b356d7fc8b8205502635f.jpeg)
对,就是这么简单,这个时候我们已经得到了一张捕获的纹理。那么这个纹理如何使用呢?可以跟普通的贴图一样使用,不过稍微有一点点区别,这个稍后再说。
使用RenderTarget2D
为了使用刚刚捕获的图像,我们可以建立一个界面来展示它。
- 创建一个界面蓝图,并放上一个图像控件,并设置图像控件Brush中的图片为之前的RT_Preview,然后在关卡蓝图里面,设置一个按键响应,把这个界面给展示出来。这里选择F键。
![2147c494a325101c498a4e6b64aab09a.png](https://i-blog.csdnimg.cn/blog_migrate/1ad2c20a6e4c1a51c4f72ea1b7ef8301.png)
![996f89c682271d09d8c6bc9cbd9cd060.png](https://i-blog.csdnimg.cn/blog_migrate/a98f702f892a739ee636086d0d9e3102.jpeg)
2. 运行游戏之后,按F键,发现界面上啥也没有。原来RenderTarget纹理的透明度比较特别(具体是怎样还没有研究),我们回到场景,再次选中SceneCapture2D对象,在Details面板找到Catpture Source
选项,然后选择如下。再次运行我们就可以看到界面中的图像。
![5a98a313e014fcfcd8069361fbe84891.png](https://i-blog.csdnimg.cn/blog_migrate/ccf6bcc415348bd754f45d69db8cd4e7.png)
![d60bc8642adb9d8e416fbbfb180c2eb3.png](https://i-blog.csdnimg.cn/blog_migrate/808008cbee051684770b235d91ad4ece.jpeg)
只捕获想要获取的对象
从上面的截图可以看出来,角色背后的蓝天及场景中的其他内容都被捕获了。在实际应用中,这些部分一般来说是不需要的。那么如何设置只捕获特定内容呢?