Zh/$envmap

From Valve Developer Community
< Zh
Revision as of 02:52, 31 July 2019 by FloraC (talk | contribs) (Various wording and formatting cleanup; some sync to English version)
Jump to navigation Jump to search

Template:Otherlang2

镜面反射

$envmap 是一个所有起源引擎游戏都可以使用的材质着色器参数。可以在光滑的表面产生镜面反射。镜面反射是通过定义一张「环境反射图」(具体而言是反射球)来实现的;反射通常由最近的env_cubemap实体决定。反射不是动态的。

起源引擎所支持的另一种反射为冯氏反射.

语法

$envmap env_cubemap

「env_cubemap」最为常用。当地图编译时,它将通知VBSP选择最近的env_cubemap实体。你也可以使用一个手动创建的静态反射图像充当反射。

Template:Note:zh-cn

创建一个自定义静态反射材质

有些情况下会用到自定义的反射材质,一些V社的模型中也有所使用。

在VTFLib中的使用方法

为了使材质正常工作,你需要六个面的独立的纹理,且方向要正确,才可正常在引擎中显示。所以有些面要进行顺/逆时针旋转。在定向前每个面都要进行水平镜像。

这里是所需要的方向

注释

  • FT=正面
  • BK=背面
  • RT=右
  • LF-左
  • UP=上
  • DN=下

  • CW = 顺时针
  • CCW = 逆时针

  • 00_00_00 示范. (customcubemap_00_00_00.tga)
  • 00_01_00 示范. (customcubemap_00_01_00.tga)
  • 00_02_00 示范. (customcubemap_00_02_00.tga)

http://i1.tietuku.com/8bdf7cc939de44cc.png Template:Todo:zh-cn

一旦你准备好了所有方向的图片,你便可以将他们放入VTFEDIT中,并选择"Environmetal Map"

http://i1.tietuku.com/421b61f2f977ef35.jpg Template:Todo:zh-cn

然后将他们保存为VTF格式,并在你的VMT文件中输入以下内容:

"$Envmap"             "models/cra0kalo/ct_swat/eyeglint_cubemap"    // Reflection environment map static

在VTEX中的使用方法

Vtex会自动反射并纠正贴图面的方向,你只需要提供正确的材质名称。每个文件名大概像这样:envmap001a*.tga, 你应将*替换为 BK, FT, LF, RT, UP, 或 DN。如果你在游戏中截取到了反射截图,那么本步骤就完成了,但为了使他们能在Vtex上正常工作,你必须使用HDRshop(但在此之前你应该将材质格式转换为BMP,因为HDRshop只能识别这种格式)并将他们转换为PFM格式。

Template:Todo:zh-cn

http://i.imgur.com/pa7lnGk.jpg

创建一个和你的材质名相同的文本(示范:envmap001a.txt)。若你要渲染HDR,请输入以下内容,否则请留空:

pfm 1
pfmscale 1
nocompress 1

将这些文件放入materialsrc(文件夹)并拖拽TXT文件到vtex.exe中,然后你便能得到一个正常工作的反射贴图。HDR环境贴图的名字将会像envmap001a.hdr.vtf这样, 并依赖其工作。

参数与效果

$envmapmask $envmaptint Template:Note:zh-cn Template:Tip:zh-cn $envmapcontrast Template:Tip:zh-cn Template:Note:zh-cn $envmapsaturation Template:Note:zh-cn $envmapframe $envmapmode $basetexturenoenvmap $basetexture2noenvmap $envmapoptional $envmapsphere $envmapfresnel Template:Note:zh-cn

$envmaplightscale $envmapanisotropy $envmapanisotropyscale

控制台命令

buildcubemaps

为材质创建反射。如何不运行这一命令,则会直接反射天空或显示错误材质,在EP1中为白色,在多人游戏中为紫黑格子。

r_showenvcubemap <布尔值>

一个展示所有动态物体在高强度反射下的状态的命令。本文开头的图片就是使用这一命令得到的。

参见