固体

From Valve Developer Community
Jump to: navigation, search
English (en)Deutsch (de)español (es)português (pt)português do Brasil (pt-br)русский (ru)українська (uk)中文 (zh)
... Icon-Important.png

本页面由大康翻译。


固体 (brush) 是使用 Hammer's Block Tool 创建的凸面 3D 形状。关卡设计师使用固体来定义世界的形状(定义可见性)并创建固体实体

编译地图时,VBSP 将接触 visleaf 的笔刷面转换为多边形组。生成的“固体模型”存储在 BSP 文件中,并且可以由实体(例如世界或你的固体实体)声明。原始固体保留在 BSP 中,尽管这样做的好处尚不清楚。

模型相比,固体:

编译

  1. 对于每个单独的固体模型,只编译接触到 visleaf 的面。此过程的一些结果如下所示:

    固体及其编译后的相同物体

  2. 如果固体面的某些部分接触到 visleaf 而其他部分不接触,则会将面切分以去除隐藏区域。

这些规则有两个例外:

  • 尽管它们在 Hammer 中是离散的实体,但 func_detail 在编译过程中都会合并为一个。你不需要 nodraw 隐藏“细节与细节(连接)”的面 [但你需要 nodraw 世界与细节(连接)的面和细节与世界(连接)的面]。
  • 应用了 translucent 材质的面永远不会被切碎。不要将它们应用于内部或隐藏的表面,除非你真的打算这样做。

——————
① (detail-to-detail)
② (world-to-detail)
③ (detail-to-world)

限制

VBSP 强制执行以下限制:

  • 8192 个固体 (Garry's Mod中是16384个)
  • 单个固体最大 128 个面
  • 总共 32768 个面(BSP 平面限制的一半,每个面使用两个平面)

triggers 甚至 hint brush 这样的不可见笔刷都计入限制。像 NODRAW 这样的面不计入限制。使用 NODRAW 纹理化的面在编译过程中会被移除,因此仅保留其碰撞、边界和在世界中的位置。请注意,编译器可能会拆分面部,将它们进一步计数到极限。

Tip.pngTip:可以在更改或删除这些限制的情况下编译 VBSP 的自定义版本,但引擎的行为是未定义的。

另见