当前位置:   article > 正文

【UE】蓝图制作小地图(捕获高分辨率地图篇)_ue5 将地图保存为图片

ue5 将地图保存为图片

前言

        从这开始,我会用两个篇幅来实现一种小地图的功能。制作小地图的方法有很多,这种方法仅仅作为一种思路供大家参考。

        首先我们需要一张俯视角的地图来作为小地图,想要实现这种效果,我们可以在角色的头顶绑定一个摄像机来时时捕获垂直向下的画面,也可以等比例的截取一张俯瞰图来作为小地图,这里我们使用第二种方法。

                                        

        但这种方法有个问题,就是截取的图片中包含的细节较为有限。如果地图尺寸不大,地图上的细节并不会丢失太多。但如果是开放世界地图这种尺寸巨大(201600.0×201600.0)的地图,即使使用编辑器自带的高分辨率截图,在放大之后依然很糊。

1.制作高分辨率地图原理

        原理是利用多张低分辨率的局部地图进行拼凑,最后形成一张超高分辨率的地图。比如将地图均分为1600块,每一块的分辨率为256×256,最后拼凑成的地图分辨率就为10240×10240。这样地图的分辨率越高保留细节也就越多,同理如果地图均分为2500块,最终分辨率就为12800×12800。

缩放后甚至能看到地面上的角色

2.制作地图摄像机

2.1 创建SceneCapture2D蓝图

       SceneCapture2D蓝图自带一个CaptureComponent2D,能够将捕获到的画面输出到渲染目标上。

        更改摄像机为正交。

        创建渲染目标,更改CaptureSource属性,将渲染目标中的分辨率改为256×256(更高或更低也可以),这将作为地图每一个小区块的分辨率。

2.2 设计地图摄像机逻辑

        首先我们要知道地图的原始尺寸期望的分辨率,为了后续方便这里默认地图是正方形。因为前面我们将每一个小区块的分辨率设置为256×256,所以这里我们将每一行(列)的小区块数量作为输入参数。

        计算两个小区块间的距离,作为正交摄像机的正交宽度。

        使摄像机从起点开始,每次移动后就将当前捕获到的画面存储到硬盘中,然后移动到下一个点位。当摄像机走到终点,中途的每一个小区块的画面都会被存储至硬盘的指定路径。

        只要将地图摄像机生成在(Max X,Min Y,Z)的位置,摄像机就会自动捕获每一个区块。这样当摄像机走到终点后我们就得到了一张地图的全部小区块,只要将它们拼凑起来就能形成一张完整的地图。

3.合并地图

3.1 创建小区块地图UI

3.2 创建小地图UI

        这里我采用UniformGridPanel来容纳小区块地图。

        在地图拍摄完成后执行开始加载小地图,之后会按照我们前面存储的序号读取图片,按照顺序填充进UniformGridPanel中,在填充完成后就可以组成一张完整的小地图。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/107435
推荐阅读
相关标签
  

闽ICP备14008679号