Zh/Func detail: Difference between revisions
< Zh
Jump to navigation
Jump to search
1416006136 (talk | contribs) (Created page with "{{lang|Func detail}} {{:User:1416006136/Signature|time=1|signature=~~~~}} {{toc-right}} {{base brush:zh-cn|func_detail|internal=true}}它会创建一个不会影响visibili...") |
m (obsolete language category) |
||
(12 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{lang|Func detail}} | <!-- When this page is updated to {{langsp}} or {{langsp}} instead of {{lang}}, please move {{this is a}} to the base page, as it is automatically translated. -->{{lang|Func detail}}{{:User:1416006136/Signature|autosignature=[[User:1416006136|大康]] ([[User talk:1416006136|talk]]) 19:54, 11 September 2022 (PDT)}} | ||
{{:User:1416006136/Signature| | |||
{{toc-right}} | {{toc-right}} | ||
{{ | {{this is a|brush entity|internal=1|suf=:zh-cn|name=func_detail}}它会创建一个不会影响{{L|visibility|可见性}}或导致其他固体{{L|chop|被斩断}}(chop)的固体。所有不构成世界“骨干”(并且不与真正的实体联系)的固体都应该是细节。 | ||
Valve 在<code>sourcesdk_content\hl2\mapsrc\sdk_func_detail.vmf</code>中提供了一个示例地图。你还可以加载 HL2 地图源文件并使用其自动 | Valve 在<code>sourcesdk_content\hl2\mapsrc\sdk_func_detail.vmf</code>中提供了一个示例地图。你还可以加载 HL2 地图源文件并使用其自动{{L|visgroup|可见组}}隐藏细节固体,以查看 Valve 在何处使用它们。 | ||
{{tip | {{tip|或者,使用{{L|console command|控制台命令}}<code>r_drawfuncdetail</code>在任何地图运行时隐藏细节固体。}} | ||
== 效果 == | == 效果 == | ||
创建细节固体实体的目的是避免为仅地图的细节创建不必要的 | 创建细节固体实体的目的是避免为仅地图的细节创建不必要的{{L|visleaf|可见性分支区域}}(visleaf)数量,实体的名称因此而来。 VBSP 将允许可见性分支区域覆盖细节,从而最大限度地减少可见性分支区域和编译时间。 | ||
[[File:World-vs-detail.png|border|center]] | [[File:World-vs-detail.png|border|center]] | ||
Line 19: | Line 18: | ||
== 注意事项 == | == 注意事项 == | ||
* 细节固体不能用于 | * 细节固体不能用于{{L|seal|密封}}地图或 Areaportal 区域。 | ||
* 因为细节固体不 | * 因为细节固体不{{L|chop|切割}}世界固体,所以如果另一个表面的{{L|lightmap|光照贴图}}比例大于细节固体的宽/高,那么光线可以从它们下面渗出。如果遇到这种情况,请手动将底层固体一分为二(使用 {{key|Shift|X}})。 | ||
** 这种效果可能会导致具有大量表面接触的细节固体变得低效,因为它们下方的表面也在被渲染! | ** 这种效果可能会导致具有大量表面接触的细节固体变得低效,因为它们下方的表面也在被渲染! | ||
** 然而,细节固体对''彼此''互相''切割''。 | ** 然而,细节固体对''彼此''互相''切割''。 | ||
* 众所周知,非常薄(大约 2 个单位厚)的细节固体上的表面会在一定距离处消失。作为一种解决方法,请改用 | * 众所周知,非常薄(大约 2 个单位厚)的细节固体上的表面会在一定距离处消失。作为一种解决方法,请改用 {{L|func_brush}}。 | ||
* 应用了半透明材质或 | * 应用了半透明材质或{{L|displacement|置换表层}}的世界固体将被视为细节,并且无法密封区域。 | ||
**带有半透明材料的世界固体仍然会切割可见性分支区域,但没有效果(译注:可能是说visleaf的作用)。 | **带有半透明材料的世界固体仍然会切割可见性分支区域,但没有效果(译注:可能是说visleaf的作用)。 | ||
* 在某些情况下,细节固体会将面与其他细节固体合并,有时还会与世界固体合并,这会导致它们创建可见性分支区域。 | * 在某些情况下,细节固体会将面与其他细节固体合并,有时还会与世界固体合并,这会导致它们创建可见性分支区域。 | ||
* 在正常情况下,任何时候细节固体接触世界固体时, | * 在正常情况下,任何时候细节固体接触世界固体时,{{L|VBSP}}都会注意到连接点并对其进行优化。此连接交替称为 T 形接头(T-junction)和 Water Index,并且 VBSP 尝试修复的 T 形接头数量有限制 (65,535)。过度使用与世界几何体接触的细节固体可能会导致 VBSP 中止编译并出现错误。使用<code>-notjunc</code>选项将以可能的视觉不一致为代价跳过此优化。 | ||
{{note | {{note|由于未知原因,水导致 T 形接头数量猛增。删除/重塑水体可以克服这个问题。}} | ||
== 应该转为细节的内容 == | == 应该转为细节的内容 == | ||
[[ | [[File:C17plaza-worldbrush.jpg|350px|thumb|right|移除细节固体后,{{L|:Image:City17 terminalsquare.jpg|17 号城市火车站广场}}所剩无几。Valve 也错过了一些世界固体......]] | ||
任何不会明显阻挡玩家视线的固体都应该是细节。具体例子包括: | 任何不会明显阻挡玩家视线的固体都应该是细节。具体例子包括: | ||
Line 48: | Line 47: | ||
{{KV DXLevelChoice:zh-cn}} | {{KV DXLevelChoice:zh-cn}} | ||
{{ACategory|Optimization Brush Entities}} | |||
== 另见 == | == 另见 == | ||
* | * {{L|Optimization (level design)|优化(关卡设计)}} |
Latest revision as of 04:15, 22 August 2024
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
是一个内部的固体实体 ,可在所有的 起源 游戏中使用。它会创建一个不会影响可见性 或导致其他固体被斩断 (chop)的固体。所有不构成世界“骨干”(并且不与真正的实体联系)的固体都应该是细节。
Valve 在sourcesdk_content\hl2\mapsrc\sdk_func_detail.vmf
中提供了一个示例地图。你还可以加载 HL2 地图源文件并使用其自动可见组 隐藏细节固体,以查看 Valve 在何处使用它们。

r_drawfuncdetail
在任何地图运行时隐藏细节固体。效果
创建细节固体实体的目的是避免为仅地图的细节创建不必要的可见性分支区域 (visleaf)数量,实体的名称因此而来。 VBSP 将允许可见性分支区域覆盖细节,从而最大限度地减少可见性分支区域和编译时间。
上面是一个世界固体(左圆柱)和一个细节固体(右圆柱)。蓝线是可见性分支区域边界。世界固体将地图切成九个形状奇特的部分,导致编译时间更长,性能略低,而细节固体没有改变任何东西。
注意事项
- 细节固体不能用于密封 地图或 Areaportal 区域。
- 因为细节固体不切割 世界固体,所以如果另一个表面的光照贴图 比例大于细节固体的宽/高,那么光线可以从它们下面渗出。如果遇到这种情况,请手动将底层固体一分为二(使用 ⇧ Shift+X)。
- 这种效果可能会导致具有大量表面接触的细节固体变得低效,因为它们下方的表面也在被渲染!
- 然而,细节固体对彼此互相切割。
- 众所周知,非常薄(大约 2 个单位厚)的细节固体上的表面会在一定距离处消失。作为一种解决方法,请改用 func_brush 。
- 应用了半透明材质或置换表层 的世界固体将被视为细节,并且无法密封区域。
- 带有半透明材料的世界固体仍然会切割可见性分支区域,但没有效果(译注:可能是说visleaf的作用)。
- 在某些情况下,细节固体会将面与其他细节固体合并,有时还会与世界固体合并,这会导致它们创建可见性分支区域。
- 在正常情况下,任何时候细节固体接触世界固体时,VBSP 都会注意到连接点并对其进行优化。此连接交替称为 T 形接头(T-junction)和 Water Index,并且 VBSP 尝试修复的 T 形接头数量有限制 (65,535)。过度使用与世界几何体接触的细节固体可能会导致 VBSP 中止编译并出现错误。使用
-notjunc
选项将以可能的视觉不一致为代价跳过此优化。

应该转为细节的内容
任何不会明显阻挡玩家视线的固体都应该是细节。具体例子包括:
- 支柱、底座和支架
- 独立的墙
- 悬空走道
- 台阶(在下面创建一个平滑的楔形世界固体)
- 小型建筑物
- 旋转固体
- 非常小或薄的刷子
键值
DXLevelChoice:
- 最低DX水平 (mindxlevel) <choices>
- 如果引擎在给定的DirectX Versions
范围之外运行,该实体将不存在。从
求生之路开始,被SystemLevelChoice取代。
警告:如果使用这些,当用户切换他们的DirectX设置时,该对象可能会中断。