VMT

From Valve Developer Community
< Zh
Revision as of 05:50, 17 September 2025 by 458901357 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
English (en)Deutsch (de)Español (es)Français (fr)한국어 (ko)Русский (ru)中文 (zh)Translate (Translate)

本简体中文页面由 Kutaka0303 汉化。

待完善: 将与引擎无关的内容移至 材质(Material)(en)部分。
VMT ("Valve Material") 文件定义了二维表面所使用的 纹理(Texture)(en) 。 它包含了 起源 起源 引擎模拟表面的视觉、听觉和物理特性所需的所有信息。
如果材质缺失,将会出现著名的 Source 紫黑格子图案。白色线框不是材质缺失,而是 着色器(shader)(en)缺失。


材质的内容可归入以下某些或全部类别之中:

  1. 纹理(Texture)(en) 名称
  2. Physical surface(en) types(en)
  3. Shader(en) parameters(en)
  4. 材质编译标志(en)
  5. English 回退设置
  6. English 材质代理(Material Proxy)

一个简单的例子

LightmappedGeneric { $basetexture "coast/shingle_01" $surfaceprop gravel }

这是一种非常基础的 shingle beach 材质。

  1. 使用了 LightmappedGeneric 着色器,这意味着该材质用于带有 lightmap(en)的表面 (即 brush(en)es)。
  2. 左花括号 ({) 用于开启一组参数
  3. $basetexture(en) 参数被赋值为 coast\shingle_01,这便是纹理所在的位置。即为将要显示在屏幕上的内容。
  4. $surfaceprop(en) 为材质赋予砾石的物理特性。
  5. 右花括号 (}) 用于闭合一组参数

需要记住的是,这种材质只能用于 brush。例如,如果需要将其用于 model(en)s, 则需要使用 VertexLitGeneric(en) 着色器创建另一个版本。

大多数情况下,将材质从一种着色器切换到另一种着色器很简单,只需更改它们的第一行即可,因为它们之间共享大量参数。有些参数只适用于特定的着色器,比如 Phong(en) 效果,它仅适用于 VertexLitGeneric(en),但不幸的是,如果着色器不理解某个参数,不会出现任何严重错误,只是该参数不会产生任何效果。

Tip.png提示:如果需要在参数值中使用空格、制表符或花括号字符,则必须用 "引号" 将整个值括起来。你经常会看到所有内容都这样被括起来 —— 但其实没必要,这样做只是白费功夫。
Icon-Bug.png错误:有时[When?], VMT 中定义的第一个参数会加载失败。如果发生这种情况,可以使用诸如 $bug 之类的虚拟参数。

查找材质

SteamPipe

当 Valve 将所有 起源 起源 游戏更新到 SteamPipe(en)时,所有材质都从 GCF(en) 移至 VPK(en) 文件中。之前使用 GCF(en) 文件的第三方游戏(运行于 起源2004 - 起源2009) 的材质也被移至仓库 VPK(en) 文件中。 VPK 文件可与 GCFScape GCFScapeVPKEdit VPKEdit配合使用。

有关 SteamPipe 的更多信息,请点击查看 这里

非 SteamPipe 游戏

在非 SteamPipe(en)起源 起源 游戏中,材质存储在游戏或模组的 🖿materials\ 文件夹中。浏览材质的最佳方式是从 Hammer Hammer的纹理选择界面进行。

如果想要编辑或查看 Valve 的材质文件代码,首先需要使用 GCFScape GCFScape 从它们的 GCF(en) 包中提取出来。这些文件通常存储在名称中带有 "materials" 的 GCF 中。

另见