Creating a Material
本简体中文页面由 Gloria 汉化。
本篇教程将一步步教你如何创建全新的材质(Material) ,包括材质纹理(Texture) 的创建。
创建纹理
只要满足以下条件,任何图片文件都能作为纹理使用:它的尺寸(高度和宽度)必须是2的乘方,2、4、8、16、32、64、128、256、512、1024、2048...以此类推。如果不清楚该用哪一种尺寸,可以参考现有的同类型纹理。高分辨图片会降低性能,但在近距离下更清晰。
不同类型的物体有不同标准的分辨率(例如人物模型的纹理分辨率非常高)。如果感到困惑,可以使用GCFScape 从 source materials.gcf
中提取纹理,看看Valve是怎么做的。
转换纹理
为了给起源引擎使用,纹理必须先转换为 Valve Texture Format 格式。Valve提供的工具是VTEX 。它是个命令行 工具,使用起来相当不便,因此推荐使用第三方工具VTFEdit :它提供了图形用户界面,能让你无需重新编译就能修改纹理属性,支持大多数图片格式,也不需要每个纹理都创建一遍脚本文件。当然有些情况下还是不得不用回VTEX工具...但也仅限于那部分情况。此外,在使用带透明通道的纹理时,它会建议你先转为TIFF格式保存,因为PNG的透明度容易导致问题。
(部分图片软件如Photoshop、GIMP和Paint.NET在安装了VTF插件后,能直接保存为VTF格式文件。但本篇教程不做讲解,因为并非每个人都使用上述工具。)
如何将自定义图片导入VTFEdit:菜单 File > Import
或者快捷键 Ctrl+I,选择图片后将会弹出“导入”对话框:
通用设置
设置是最关键的。以下是其中三个:
- Normal format/普通模式
- 不透明纹理使用的色彩/压缩格式。
- Alpha format/透明通道模式
- 带透明通道的纹理使用的色彩/压缩格式。
- Texture type/纹理类型
- 在导入了多张图片时使用,具体类型取决于它是(animation frames(动画帧)/cubemap faces(立方体贴图表面)/depth slices(深度切片))。
如果你制作的是普通、简单的纹理,上面的选项无需修改。但如果制作的是高清的细节图片,则需要选择无损的压缩模式.
Mipmap设置
Mipmaps 是当纹理距离镜头相当远时,自动切换成的低清版纹理。它的使用减少的不必要的图片缩放,增加了性能与图片显示质量。纹理细节层次 需要Mipmap才能正常使用。
下列图片展示了VTFEdit中各类不同的mipmap过滤器:
法线贴图设置
这些(打错标签的)设置能够让你从输入的图片中生成一张法线贴图 。你可能希望使用图片编辑器制作一张更好的法线贴图,但提供的自动选项能够快速生成法线贴图,可以在它的基础上进行修改。
配置与保存
点击OK按钮后,导入的图片转换完成(文件过大时会有较大的延迟),并生成一个VTF文件。接下来要做的只剩下在左侧的选项列表中对纹理进行配置了。Valve Texture Format#Image_flags中有每个选项的说明。
最后,在你的游戏本体或MOD中的 \materials
文件夹下保存纹理文件。
创建材质
起源引擎无法直接使用纹理文件。所有的纹理都需要通过 材质 文件访问。
材质是可以用任何文本编辑器处理的脚本文件。但推荐使用Notepad++,并安装社区制作的语法高亮 插件。 要让材质能够被检测到,它必须被保存在游戏本体或MOD中的 \materials
文件夹下,后缀名是.vmt
语法
材质文件的格式如下:
<渲染器(shader) > { <参数> <取值> ... }
LightmappedGeneric { $basetexture coast\shingle_01 $surfaceprop gravel }
有很多渲染器 可以选择,但大多数材质使用的是 LightmappedGeneric
(用于笔刷 ) 或是 VertexLitGeneric
(用于模型 )。第三常用的渲染器是 UnlitGeneric
,用于 UI 材质或用于少见的工具纹理 。
参数
- 在渲染器参数列表 中,查看完整的渲染器参数列表文档
选择了渲染器后,下一步需要配置参数(也叫命令)。材质文件中有数百个可选的参数,因此本文只介绍其中常见的几个。它们在绝大多数的渲染器中是通用的。如下: