【UE4】Bounds 详解

本文使用 UE 4.26 ActionRPG 示例项目,对 Bounds 进行学习和总结。

一、Bounds 是什么 / 有什么用

在这里插入图片描述

  任何的游戏引擎,最终呈现出在屏幕上的效果,都是经过和很多变换和计算从三维世界空间,转成屏幕像素空间才能够被玩家看到的,这个过程中,摄像机的位置,FOV,物体的位置,透明度,深度值等等信息,都能影响物体在最终屏幕上的位置和大小,如果每个物体的每个点都要计算,计算量太过庞大,所以每个物体先进行可见性剔除,对于完全不可见的物体,就可以在流程中很早地舍弃掉,减少很多计算。
  Bounds 就是用于进行可见性剔除的,对于 Bounds 都不在摄像机的视锥体范围内的物体,直接就不画了。
  UE 中 Bounds 全都是 AABB(Axis-Aligned Bounding Box)的,即轴平行包围盒,类型是 FBoxSphereBounds。不管是实时计算的,还是固定(Fixed)的,都会因为旋转而变化,使得始终与世界的 XYZ 轴平行。
在这里插入图片描述

  上图中可以看到,蓝色的长方体线框就是实际用于计算的 AABB Bounds,黄色的球形线框是用于显示这个物体是否被剔除的,如果看不到黄色线框,物体就被剔除了。所以可以看到,在镜头转动至看不到蓝色线框的时候,黄色线框也就消失了,物体的 Mesh 也就不绘制了。关于 Bounds,最重要的就是上边这个 GIF 了(武器没有消失是因为和主角是单独的两个 Actor,用不同的 Bounds 计算剔除)。

二、Bounds 的一些设置和代码

2.1 Bounds 的显示命令

  • 预览模式下
    在这里插入图片描述

  • 运行时
      Play之后,在命令行窗口输入 Show Bounds 即可显示所有 Bounds。

  一个 Actor 如果没有 Mesh,空的 Actor,是没有 Bounds 的,一个带有 Mesh 的默认 Character(Mesh 是空的),也是没有 bounds 的。
在这里插入图片描述

  可以看到在没有运行时,选中 Actor,是有蓝色框和黄色框的,但是实际运行起来是看不到的,这个因为预览时默认是有一个 Sphere 的,所以有 Bounds。
  如果给 MeshComponent 添加一个 SkeletalMesh,比如一把剑,Bounds 就有了:
在这里插入图片描述
  这里也可以看出来,Bounds 和真正可见的部分,不一定是吻合的,大部分情况下 Bounds 是能完全包住可见部分的,这样就没问题(如果Bounds 太大,会导致不管在场景中怎么转摄像机,都不能剔除这个物体,增加无用计算量);但是如果 Bounds 小了,就会出现,我认为能看到的东西,转了一点点镜头突然就看不到了的情况,这个在 ( 三、Bounds 相关的一些问题)中记录。

2.2 Bounds 的设置

  主要记录 SkeletalMeshComponent 上的配置,以及 Component 上的配置(这些参数都是运行时可调的!可以很方便地看到效果!!):
在这里插入图片描述

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值