Zh/$envmap: Difference between revisions
No edit summary |
No edit summary |
||
Line 72: | Line 72: | ||
== 附加参数 == | == 附加参数 == | ||
; <code>$envmapmask < | ; <code>$envmapmask <材质></code> | ||
: 查阅 <code>[[$envmapmask]]</code>. 一个决定每个[[texel|纹理元素]]反射率的[[VTF]]文件. | : 查阅 <code>[[$envmapmask]]</code>. 一个决定每个[[texel|纹理元素]]反射率的[[VTF]]文件. | ||
; <code>$envmaptint "[红色[[float|浮点]]> <绿色浮点> <蓝色浮点>]"</code> | ; <code>$envmaptint "[红色[[float|浮点]]> <绿色浮点> <蓝色浮点>]"</code> | ||
:控制反射率的[[RGB|红,绿,蓝]]颜色波长.任何正数皆可被使用.默认数值为 <code>"[1 1 1]"</code>,意思是100%强度. {{note|你''必须''使用引号,因为这是波段的特征值.}} {{tip|这条命令常被使用于在没有使用<code>$envmapmask</code>的情况下调整镜面反射的亮度.}} | :控制反射率的[[RGB|红,绿,蓝]]颜色波长.任何正数皆可被使用.默认数值为 <code>"[1 1 1]"</code>,意思是100%强度. {{note|你''必须''使用引号,因为这是波段的特征值.}} {{tip|这条命令常被使用于在没有使用<code>$envmapmask</code>的情况下调整镜面反射的亮度.}} | ||
; <code>$envmapcontrast <[[normal]]></code> | ; <code>$envmapcontrast <[[normal|正常]]></code> | ||
: | : 控制反射的[[Wikipedia:Contrast (vision)|对比度]].0为自然对比度,而1是颜色使用高对比,以减少和增加相对较深的地区。 (即 color*color). | ||
: {{tip| | : {{tip|使用高对比度能从相当程度上减少黑暗区域,并增加 "热点".}}{{note|当[[Phong|漫反射]]启用时本命令无效.}} | ||
; <code>$envmapsaturation < | ; <code>$envmapsaturation <正常></code> | ||
: | : 控制反射的颜色饱和度. 0为灰色调,而1是自然饱和度.{{note|当[[Phong|漫反射]]启用时本命令无效.}} | ||
; <code>$envmapframe <[[int]]></code> | ; <code>$envmapframe <[[int|整数]]></code> | ||
: | : 启动动态反射的帧数. | ||
; <code>$envmapmode < | ; <code>$envmapmode <整数?></code> | ||
: | : 可忽视 MATERIAL_VAR_ENVMAPMODE = (1 << 25), // 已作废 | ||
; <code>$basetexturenoenvmap <[[bool]]></code> | ; <code>$basetexturenoenvmap <[[bool|布尔数学体系(即on/off)]]></code> | ||
; <code>$basetexture2noenvmap < | ; <code>$basetexture2noenvmap <布尔数学体系(即on/off)></code> | ||
: Probably used for materials with two [[albedo]]s, to make one or the other matte. | : Probably used for materials with two [[albedo]]s, to make one or the other matte. 需要 DirectX 9; 还可查阅 <code>[[$basetexture]]</code> 以及 <code>[[$basetexture2]]</code>. | ||
;<code>$envmapoptional <choices></code> | ;<code>$envmapoptional <choices></code> | ||
: | : 使最老的DX版本也能绘制渲染. 可以选项以下: | ||
:*<code>80</code> (DirectX 8) | :*<code>80</code> (DirectX 8) | ||
:*<code>81</code> (DirectX 8.1) | :*<code>81</code> (DirectX 8.1) | ||
:*<code>90</code> (DirectX 9) | :*<code>90</code> (DirectX 9) | ||
:*<code>95</code> ( | :*<code>95</code> (使用Shader Model3的DirectX 9) | ||
; <code>$envmapsphere <bool></code> | ; <code>$envmapsphere <bool></code> | ||
: Determines whether the material's envmap should be a spheremap (deprecated) instead of a cubemap. Set this to 1 to use a spheremap. | : Determines whether the material's envmap should be a spheremap (deprecated) instead of a cubemap. Set this to 1 to use a spheremap. |
Revision as of 23:37, 12 September 2015
$envmap
VMT可以在光滑的表面产生镜面反射.镜面反射由"环境反射" (特别是(反射球));反射将由最近的env_cubemap实体决定.反射不是动态(实时)的!
另一种引擎支持的反射为漫反射.
语法/结构
$envmap env_cubemap
"env_cubemap"是一个常用的实体, 当地图编译时,它将通知VBSP选择最近的env_cubemap实体. 你也可以使用一个已被手动渲染好的静态反射图像充当 反射。

创建一个自定义静态反射材质
有些时候,在有的模型中或其他情况下都会用到自定义的反射材质,所以要学会如何创建一个自定义反射材质
在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
一旦你准备好了所有方向的图片,你便可以将他们放入VTFEDIT中,并选择"Environmetal Map"
http://i1.tietuku.com/421b61f2f977ef35.jpg
然后将他们保存为.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格式.
http://i.imgur.com/pa7lnGk.jpg
创建一个和你的材质名相同的文本(示范:envmap001a.txt). 若你要渲染HDR,请输入以下,否则请留空:
pfm 1
pfmscale 1
nocompress 1
将这些文件放入materialsrc(文件夹)并拖拽.txt文件到vtex.exe中,然后你便能得到一个正常工作的反射贴图! HDR环境贴图的名字将会像envmap001a.hdr.vtf这样, 并依赖其工作.
附加参数
$envmapmask <材质>
- 查阅
$envmapmask
. 一个决定每个纹理元素反射率的VTF文件. $envmaptint "[红色浮点> <绿色浮点> <蓝色浮点>]"
- 控制反射率的红,绿,蓝颜色波长.任何正数皆可被使用.默认数值为
"[1 1 1]"
,意思是100%强度.注意:你必须使用引号,因为这是波段的特征值.
提示:这条命令常被使用于在没有使用
$envmapmask
的情况下调整镜面反射的亮度. $envmapcontrast <正常>
- 控制反射的对比度.0为自然对比度,而1是颜色使用高对比,以减少和增加相对较深的地区。 (即 color*color).
提示:使用高对比度能从相当程度上减少黑暗区域,并增加 "热点".
注意:当漫反射启用时本命令无效.
$envmapsaturation <正常>
- 控制反射的颜色饱和度. 0为灰色调,而1是自然饱和度.
注意:当漫反射启用时本命令无效.
$envmapframe <整数>
- 启动动态反射的帧数.
$envmapmode <整数?>
- 可忽视 MATERIAL_VAR_ENVMAPMODE = (1 << 25), // 已作废
$basetexturenoenvmap <布尔数学体系(即on/off)>
$basetexture2noenvmap <布尔数学体系(即on/off)>
- Probably used for materials with two albedos, to make one or the other matte. 需要 DirectX 9; 还可查阅
$basetexture
以及$basetexture2
. $envmapoptional <choices>
- 使最老的DX版本也能绘制渲染. 可以选项以下:
80
(DirectX 8)81
(DirectX 8.1)90
(DirectX 9)95
(使用Shader Model3的DirectX 9)
$envmapsphere <bool>
- Determines whether the material's envmap should be a spheremap (deprecated) instead of a cubemap. Set this to 1 to use a spheremap.
$envmapfresnel <float>
(Left 4 Dead 2 and Source Filmmaker only)- Adds a fresnel effect to the reflection. Surfaces facing the viewer are less reflective than surfaces facing sideways. Dependent on Phong fresnel ranges. Effect becomes multiplied with values higher than 1.0.
$envmapanisotropy <bool>
Template:CSGO add$envmapanisotropyscale <float>
Template:CSGO add- Warps the reflection, "pushing" the top downward.
$envmaplightmapscale
Template:CSGO add- Allows the surface's lightmap to be used as an additional mask on the reflections. A value between 0 and 1 determines the degree to which it is masked; values above 1 are permitted but seem to start actually inverting the effect.
控制台命令
buildcubemaps
- 为材质创建反射.如何创建失败,则会直接反射天空或显示错误材质,错误在EP1中是白色的,在其他游戏为花格.
r_showenvcubemap <bool>
- 一个展示所有动态物体在高强度反射下的状态的命令。通常会在物体起点创造一个镜像(?对此句翻译尚有疑问)(It was used to create the image at the start of this article.)
相关信息
- $envmapmask (反射遮罩)
- $phong (漫反射)
- Cubemap