This article's documentation is for anything that uses the Source engine. Click here for more information.

func_detail

From Valve Developer Community
Jump to: navigation, search
English (en)中文 (zh)한국어 (ko)
... Icon-Important.png

The translator and the create time of this page is 大康 (talk) 19:54, 11 September 2022 (PDT). Anyone is welcome to add new content or fix errors.


func_detail is a internal brush entity available in all Source Source games.它会创建一个不会影响可见性或导致其他固体被斩断(chop)的固体。所有不构成世界“骨干”(并且不与真正的实体联系)的固体都应该是细节。

Valve 在sourcesdk_content\hl2\mapsrc\sdk_func_detail.vmf中提供了一个示例地图。你还可以加载 HL2 地图源文件并使用其自动可见组隐藏细节固体,以查看 Valve 在何处使用它们。

Tip.pngTip:或者,使用控制台命令r_drawfuncdetail在任何地图运行时隐藏细节固体。

效果

创建细节固体实体的目的是避免为仅地图的细节创建不必要的可见性分支区域(visleaf)数量,实体的名称因此而来。 VBSP 将允许可见性分支区域覆盖细节,从而最大限度地减少可见性分支区域和编译时间。

World-vs-detail.png

上面是一个世界固体(左圆柱)和一个细节固体(右圆柱)。蓝线是可见性分支区域边界。世界固体将地图切成九个形状奇特的部分,导致编译时间更长,性能略低,而细节固体没有改变任何东西。

注意事项

  • 细节固体不能用于密封地图或 Areaportal 区域。
  • 因为细节固体不切割世界固体,所以如果另一个表面的光照贴图比例大于细节固体的宽/高,那么光线可以从它们下面渗出。如果遇到这种情况,请手动将底层固体一分为二(使用 Shift+X)。
    • 这种效果可能会导致具有大量表面接触的细节固体变得低效,因为它们下方的表面也在被渲染!
    • 然而,细节固体对彼此互相切割
  • 众所周知,非常薄(大约 2 个单位厚)的细节固体上的表面会在一定距离处消失。作为一种解决方法,请改用 func_brush
  • 应用了半透明材质或置换表层的世界固体将被视为细节,并且无法密封区域。
    • 带有半透明材料的世界固体仍然会切割可见性分支区域,但没有效果(译注:可能是说visleaf的作用)。
  • 在某些情况下,细节固体会将面与其他细节固体合并,有时还会与世界固体合并,这会导致它们创建可见性分支区域。
  • 在正常情况下,任何时候细节固体接触世界固体时,VBSP都会注意到连接点并对其进行优化。此连接交替称为 T 形接头(T-junction)和 Water Index,并且 VBSP 尝试修复的 T 形接头数量有限制 (65,535)。过度使用与世界几何体接触的细节固体可能会导致 VBSP 中止编译并出现错误。使用-notjunc选项将以可能的视觉不一致为代价跳过此优化。
Note.pngNote:由于未知原因,水导致 T 形接头数量猛增。删除/重塑水体可以克服这个问题。

应该转为细节的内容

移除细节固体后,17 号城市火车站广场所剩无几。Valve 也错过了一些世界固体......

任何不会明显阻挡玩家视线的固体都应该是细节。具体例子包括:

  • 支柱、底座和支架
  • 独立的墙
  • 悬空走道
  • 台阶(在下面创建一个平滑的楔形世界固体)
  • 小型建筑物
  • 旋转固体
  • 非常小或薄的刷子

键值

DXLevelChoice:

最低DX水平 (mindxlevel) <choices>
如果引擎在给定的DirectX Versions English范围之外运行,该实体将不存在。从Left 4 Dead Left 4 Dead开始,被SystemLevelChoice取代。
Warning.pngWarning:如果使用这些,当用户切换他们的DirectX设置时,该对象可能会中断。
最大DX水平 (maxdxlevel) <choices>

另见