边界框

From Valve Developer Community
< Zh
Revision as of 04:12, 29 June 2025 by WoShiGeNiCheng (talk | contribs) (Created page with "{{LanguageBar|Bounding box|title=边界框}} {{ACategory|QPhysics}} 400x300px|right|thumbnail|"mins"和"maxs"示意图 '''边界框'''(轴对齐边界框AABB和定向边界框OBB)是自动生成的隐形框体,用于定义实体的粗略尺寸。其主要作用是在实体可见时执行{{L|QPhysics}}碰撞检测(通常在更复杂的检测之前进行)。 如图所示,边界框由两个坐标点构成: * ''"mins"''(最...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
English (en)Español (es)中文 (zh)Translate (Translate)
"mins"和"maxs"示意图

边界框(轴对齐边界框AABB和定向边界框OBB)是自动生成的隐形框体,用于定义实体的粗略尺寸。其主要作用是在实体可见时执行QPhysics(en)碰撞检测(通常在更复杂的检测之前进行)。

如图所示,边界框由两个坐标点构成:

  • "mins"(最小偏移) - 始终为负值
  • "maxs"(最大偏移) - 始终为正值

两者的偏移量之和即为边界框的实际尺寸。

边界框的应用场景包括:

如需手动覆盖边界框,可通过以下方式实现:

  • 建模师使用$bbox QC命令
  • 地图制作者在solid设为2时使用mins/maxs键值
  • 程序员调用UTIL_SetSize()(en)CBaseEntity::SetSize()
Note.png注意:超出边界框的实体部分将无法通过QPhysics碰撞检测(包括命中框)

旋转特性

边界框始终与世界坐标轴对齐,不会旋转。这种设计主要考虑玩家碰撞检测需求:在狭窄走廊中,如果边界框随角色旋转会导致无法转身。轴对齐框的计算成本也更低。

对于近似方形的物体影响不大,但长条形物体需改用VPhysics(en)系统。例如《Day of Defeat: Source(en)》中匍匐玩家的长条形边界框只能通过"压缩"处理,导致头部和脚部始终暴露在外。

物体对齐边界框

此类边界框会随实体旋转,与VPhysics(en)系统存在关联。

待完善: 是否需要补充更多描述?若无则合并至前文

行业术语

Source引擎社区未完全采用行业标准术语,但开发中可能涉及:

  • AABB(轴对齐边界框) - 不旋转的3D体积
  • OBB(定向边界框) - 可旋转的3D体积

Source中边界框通常指AABB,因其相交检测更简单。当需要旋转时,会重新计算边界框而非直接旋转。

调试工具

使用ent_bbox显示的npc_metropolice边界框

相关控制台命令:

  • ent_bbox - 可视化实体边界框
  • ent_absbox - 可视化AABB边界框
  • picker - 显示准星所指实体的边界框详情

程序员相关函数:

  • UTIL_EntitiesInBox - 查找给定边界框内的所有实体
  • NDebugOverlay::Box - 绘制指定范围的边界框(Squirrel/Lua中可能提供DebugDrawBox()

另见

基础概念

实用资源