Zh/Lighting: Difference between revisions
< Zh
Jump to navigation
Jump to search
m (Change links to Chinese) |
m (obsolete language category) |
||
(9 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{lang|Lighting|title=灯光}} | {{lang|Lighting|title=灯光}} | ||
{{Abstract Mapping:zh-cn}} | {{Abstract Mapping:zh-cn}} | ||
== 向导 == | == 向导 == | ||
[[ | [[File:Proper lighting example.png|right|thumb|一个拥有充足光线的房间的例子]] | ||
* | * {{L|Adding Light|添加灯光}} - 一个关于如何设置一个基础的{{L|light}}实体的新手教程。 | ||
* | * {{L|Intermediate Lighting|中级照明}} - 一个关于如何更详细地处理光源的教程。 | ||
* | * {{L|Advanced Lighting|高级照明}} | ||
* | * {{L|Constant-Linear-Quadratic Falloff|恒流线性二次衰减}} - 一个易于阅读的老CLQ光衰减系统的解释。 | ||
* | * {{L|HDR}} - 高动态范围照明。 | ||
== 类型 == | == 类型 == | ||
=== 静态光源 === | === 静态光源 === | ||
{{tip | {{tip|静态光源被编译为{{L|Lightmap|光照贴图}},它照亮{{L|brush|固体}}和{{L|model|模型}},以及{{L|Cubemaps}}, 提供静态{{L|reflection|反射}}。 | ||
它对渲染器来说是 | 它对渲染器来说是{{L|free|空闲}}的,因为附加的静态光在一开始就已经被处理了。}} | ||
; | ;{{L|light}}:一个静态的,全方位的点光源。(例如一个裸灯泡或火焰。) | ||
; | ;{{L|light_spot}}:一个静态的,单向点光源。(如火炬或手电筒),圆锥形光束角度不能超过90°。 | ||
; | ;{{L|light_environment}}:提供两种光源: | ||
:*一种是从天空盒所有面漫反射出来的'环境'光(表示来自云里的反射光以及一般的大气层) | :*一种是从天空盒所有面漫反射出来的'环境'光(表示来自云里的反射光以及一般的大气层) | ||
:*一种是只投向一个方向的定向'亮度'光(相当于太阳光或月光) | :*一种是只投向一个方向的定向'亮度'光(相当于太阳光或月光) | ||
:都是从使用它的地图的[[Tool textures#skybox|toolsskybox]]材质发射出来的。参见 | :都是从使用它的地图的[[Tool textures#skybox|toolsskybox]]材质发射出来的。参见{{L|Skybox|天空盒}}。 | ||
; | ;{{L|env_particlelight}}:点亮由{{L|env_smokestack}}产生的颗粒。颗粒并没有受正常照明。使用(不超过)这些中的2个,使得(仅限这个实体){{L|env_smokestack}}颗粒出现以反映环境照明。 | ||
; | ;{{L|Glowing Textures|发光贴图}} | ||
: | :{{L|Brush|固体}}应用表面发光的材质(在<code>game_dir/lights.rad</code>中定义)会在一个180°的椎体里投射体积光。 | ||
=== 静态光接收器 === | === 静态光接收器 === | ||
; | ;{{L|Brush|固体}} | ||
:这个 | :这个{{L|Hammer Face Edit Dialog|Hammer面编辑对话框}}工具'{{L|Lightmap Scale|光照贴图规模}}'可以用来控制如何锐化或柔化固体表面的光照贴图 - 在高对比度区域之间效果最明显,比如阴影。请注意,增加额外的光源不会显著影响性能,减少光照规模(如提高分辨率),将会直接增加地图文件的大小和内存使用。 | ||
; | ;{{L|prop_static}} | ||
:不同于其它模型实体,prop_static是静态发光的:一个光照值存储给每一个 | :不同于其它模型实体,prop_static是静态发光的:一个光照值存储给每一个{{L|vertex|顶点}},以及模型的{{L|collision mesh|碰撞网络}} (或者,可选的{{L|reference mesh|参考网络}}),被用来计算光照贴图阴影。 | ||
:有以下选项: | :有以下选项: | ||
:*<code>disableshadows</code> - 不要投射光照贴图阴影 | :*<code>disableshadows</code> - 不要投射光照贴图阴影 | ||
Line 41: | Line 40: | ||
=== 动态光源 === | === 动态光源 === | ||
{{tip | {{tip|动态光源是在运行中计算的,所以渲染起来很"{{L|expensive|费劲}}"}} | ||
[[ | [[File:Shadowmap.jpg|thumb|180px|{{L|env_projectedtexture}}过道的照明。]] | ||
; | ;{{L|light_dynamic}}::一个简单的,单向的,可移动的,可开关和可调整的动态光。 | ||
; | ;{{L|point_spotlight}}:一个在它射中的表面产生动态的聚光灯效果的动态光源。 | ||
; | ;{{L|npc_spotlight}}:一个聚光灯{{L|NPC}},类似于point_spotlight,但是拥有追踪目标的能力。 | ||
; | ;{{L|env_projectedtexture}}:一个拥有贴图的灯而不是纯色的动态光,而且还有逼真的动态阴影。影响所有的表面,它可以接受照明,而且可以用于{{L|Episode Two|第二章}}里玩家的手电。 | ||
=== 动态阴影 === | === 动态阴影 === | ||
{{tip | {{tip|动态阴影只能由世界的{{L|model|模型}}投射出来(NPC,物理道具等),并且只能投射到{{L|brush|固体}}表面(来自静态和动态光源)。它们是在运行时计算,所以它们相当粗糙并且渲染起来相对比较{{L|showbudget|费劲}}。}} | ||
{{warning | {{warning|这些都不是真正的阴影,它们是从远处的投射者投来的程序(在代码中生成的)贴图。在Left 4 Dead(求生之路),Portal 2(传送门2)以及Alien Swarm(异型丛生),阴影的方向是在每个实体的基础上计算出来的,取决于距离实体最近的光。但不在Source2006/2007模组里,除非你应用{{L|Dynamic RTT shadow angles in Source 2007|Source2007里的动态DTT阴影角}}到你的模组。}} | ||
{{warning | {{warning|动态阴影有时候会射穿墙或地板,暴露玩家或物体的位置。如果你遇到这种情况,使用{{L|info_no_dynamic_shadow}}来解决这个问题。}} | ||
{{ | {{Note|只有当没有在{{L|QC}}里定义shadowlod的情况下,阴影才会由视觉网络"投射"出来。阴影的LOD只有低细节的网络,用于生成阴影。这些不适用于阴影地图制作(手电,{{L|env_projectedtexture}}。) }} | ||
{{ | {{Note|当它们重叠的时候,动态阴影不要互相或者与光源贴图融合。这可能会产生不良的“倍增”的效果,例如一个放置在物理道具桌子上的物理道具。你可以在动态实体上启用或禁用阴影来解决这个问题。}} | ||
{{ | {{Note|动态阴影支持半透明。如果你的模型有不同程度的不透明度,它可以表现在阴影上。[http://img4.imageshack.us/img4/3627/parttrans.png 在这里可以看得到]。}} | ||
; | ;{{L|shadow_control}}:一个点实体,用于控制动态阴影预测地图,包括最大距离投射,方向投射,以及锐利度/散漫度。 | ||
; | ;{{L|info_no_dynamic_shadow}}:一个点实体,用来列出哪些{{L|Brush|固体}}表面不接收动态阴影。 | ||
; | ;{{L|prop_physics}}实体:拥有一个"shadowcastdist"键值,来设置这个物体投射多远的动态阴影。 | ||
; | ;{{L|prop_dynamic}}实体:拥有一个"disableshadows"键值,以及"enableshadows"和"disableshadows"输入来控制动态阴影投射。 | ||
;NPC实体:拥有prop_dynamic阴影控制,再加上一个"disablereceiveshadows" {{TODO|to prevent...?}} | ;NPC实体:拥有prop_dynamic阴影控制,再加上一个"disablereceiveshadows" {{TODO|to prevent...?}} | ||
Line 73: | Line 72: | ||
[[Wikipedia:Tyndall effect|丁达尔效应]]是因为光在透明介质中通过悬浮颗粒(胶体)产生的散射而形成的。比如大雾里的车大灯。 | [[Wikipedia:Tyndall effect|丁达尔效应]]是因为光在透明介质中通过悬浮颗粒(胶体)产生的散射而形成的。比如大雾里的车大灯。 | ||
* [[Wikipedia:Halo_(optical_phenomenon)|光晕]](发光动画)效果: | * [[Wikipedia:Halo_(optical_phenomenon)|光晕]](发光动画)效果: | ||
:* | :*{{L|env_sprite}} - 一个实体,用于创建全方位的光晕或眩光效果。 | ||
:* | :*{{L|env_lightglow}} - 一个不对称的发光体(对于高对比度的区域)。 | ||
:* | :*{{L|env_sun}} - 添加一个高亮的haloed给{{L|Skybox|天空盒}},来表示太阳或月亮的位置。 | ||
* [[Wikipedia:Light beam|光束]](体积光)效果: | * [[Wikipedia:Light beam|光束]](体积光)效果: | ||
:*固体贴图:<code>models/effects/vol_light001</code> | :*固体贴图:<code>models/effects/vol_light001</code> | ||
:*固体贴图:<code>models/effects/vol_light002</code> | :*固体贴图:<code>models/effects/vol_light002</code> | ||
:*模型<code>models/Effects/vol_light.mdl</code> - 用于 | :*模型<code>models/Effects/vol_light.mdl</code> - 用于{{L|prop_static}}。 | ||
* 参见 | * 参见{{L|Render Modes|渲染模式}},特别是[[Render Modes#World Space Glow (9)|世界空间发光]]''。 | ||
== 公开的值 == | == 公开的值 == | ||
;汽车大灯 | ;汽车大灯 | ||
亮度(Brightness)<code>231 223 192</code> {{ | 亮度(Brightness)<code>231 223 192</code> {{Note|从L4D2 SDK中获取的}} | ||
;17号城的白天 | ;17号城的白天 | ||
:亮度<code>237 218 143 800</code> | :亮度<code>237 218 143 800</code> | ||
Line 100: | Line 99: | ||
:亮度<code>159 237 215</code> | :亮度<code>159 237 215</code> | ||
:环境N/A | :环境N/A | ||
欲知跟 | 欲知跟{{L|skybox|天空盒}}材质相搭配的值,请查看{{L|Sky List|天空列表}}。 | ||
== 注意 == | == 注意 == | ||
*命名一个光源会使其更加"昂贵"(需要消耗更多资源)。仅当你需要的时候才命名光源。多个光源共享一个名字比起使用不同的名字要"便宜"得多。 | *命名一个光源会使其更加"昂贵"(需要消耗更多资源)。仅当你需要的时候才命名光源。多个光源共享一个名字比起使用不同的名字要"便宜"得多。 | ||
* | *{{L|light_dynamic}}非常"昂贵",而且在某些系统上甚至不会出现。 | ||
*基础的光源实体不会伴随着可见的物体出现(如灯泡)。为此,你需要一个道具。请查看 | *基础的光源实体不会伴随着可见的物体出现(如灯泡)。为此,你需要一个道具。请查看{{L|HL2 Light Props|HL2光源道具}}获取列表。 | ||
*基础光源实体不会伴随着"光晕"出现,即便你希望在大雾或朦胧的区域看到它们。要实现这一点,无论是编译还是运行地图都要启用 | *基础光源实体不会伴随着"光晕"出现,即便你希望在大雾或朦胧的区域看到它们。要实现这一点,无论是编译还是运行地图都要启用{{L|HDR}},或者添加一个{{L|point_spotlight}}(除非需要否则设置动态光照为"关")或者{{L|env_lightglow}}实体。 | ||
*除非你运行 | *除非你运行{{L|vrad}}(或等价的)否则地图将不会发光 。除非地图{{L|leak|无泄漏}},否则Vrad无法正确运行,也无法计算出真实的光照反射。 | ||
*一些贴图提供它们自己的光,可以使用模组目录里的<code> | *一些贴图提供它们自己的光,可以使用模组目录里的<code>{{L|lights.rad}}</code>,或者使用<code>sourcesdk/bin</code>里的那个就可以做到。 | ||
*移动基于物体的固体,它们的发光方式也不会改变。它们的光照只会根据它们在Hammer里的位置来计算。(比如,一个在黑暗房间里的固体,将其带到高亮房间里,它也不会变亮。) | *移动基于物体的固体,它们的发光方式也不会改变。它们的光照只会根据它们在Hammer里的位置来计算。(比如,一个在黑暗房间里的固体,将其带到高亮房间里,它也不会变亮。) | ||
== | == {{L|Console command|控制台命令}} == | ||
[[ | [[File:Mat fullbright 2.jpg|thumb|<code>mat_fullbright 2</code>. 白色高亮的物理道具看起来像是bug;其实当它们在运动的时候算是正常的。]] | ||
;<code>mat_fullbright <0-2></code> | ;<code>mat_fullbright <0-2></code> | ||
Line 121: | Line 120: | ||
== 参见 == | == 参见 == | ||
* | * {{L|HL2 Light Props|HL2光照道具}} | ||
* | * {{L|Color theory (level design)|色彩理论(关卡设计)}} | ||
* [[List_of_entities#Light_entities|光源实体]] - 一个光源实体的列表。 | * [[List_of_entities#Light_entities|光源实体]] - 一个光源实体的列表。 | ||
* | * {{L|Intermediate_Lighting|中级照明}} | ||
* | * {{L|Advanced_Lighting|高级照明}} | ||
* | * {{L|Window lighting|窗口照明}} - 教你如何模拟太阳光折射穿过窗口。 | ||
== 外部链接 == | == 外部链接 == | ||
Line 139: | Line 138: | ||
--> | --> | ||
{{ACategory|Level Design}} | |||
{{ACategory|Hubs}} | |||
{{ACategory|Lighting}} | |||
[[Category:Chinese]] | [[Category:Chinese]] |
Latest revision as of 04:18, 22 August 2024
概括性的地图制作系列 讨论你的想法——帮助我们写你需要的文章和想法 |
---|
弹药 | 生物 | 蚁狮 | 光束和激光 | 线缆与绳索 | 动态的天空与云雾 | 色彩理论 | 战斗 | 联合军 | 压缩(起源 1) | 门 | 尘土、雾、烟 | 升降机 | 关卡转换 | 环境光效、太阳、天气、室外 | 爆炸 | 火焰 | 植被 | 玻璃和窗户 | 猎头蟹 | 生命值 | 梯子 | 光效 | 优化 | 物理 | 视网膜扫描仪 | 声效和音乐 | 特效 | 地形 | 火车 | 炮塔 | 水 | 武器 | 僵尸 |
向导
- 添加灯光 - 一个关于如何设置一个基础的light 实体的新手教程。
- 中级照明 - 一个关于如何更详细地处理光源的教程。
- 高级照明
- 恒流线性二次衰减 - 一个易于阅读的老CLQ光衰减系统的解释。
- HDR - 高动态范围照明。
类型
静态光源
- light :一个静态的,全方位的点光源。(例如一个裸灯泡或火焰。)
- light_spot :一个静态的,单向点光源。(如火炬或手电筒),圆锥形光束角度不能超过90°。
- light_environment :提供两种光源:
-
- 一种是从天空盒所有面漫反射出来的'环境'光(表示来自云里的反射光以及一般的大气层)
- 一种是只投向一个方向的定向'亮度'光(相当于太阳光或月光)
- 都是从使用它的地图的toolsskybox材质发射出来的。参见天空盒 。
- env_particlelight :点亮由env_smokestack 产生的颗粒。颗粒并没有受正常照明。使用(不超过)这些中的2个,使得(仅限这个实体)env_smokestack 颗粒出现以反映环境照明。
- 发光贴图
- 固体 应用表面发光的材质(在
game_dir/lights.rad
中定义)会在一个180°的椎体里投射体积光。
静态光接收器
- 固体
- 这个Hammer面编辑对话框 工具'光照贴图规模 '可以用来控制如何锐化或柔化固体表面的光照贴图 - 在高对比度区域之间效果最明显,比如阴影。请注意,增加额外的光源不会显著影响性能,减少光照规模(如提高分辨率),将会直接增加地图文件的大小和内存使用。
- prop_static
- 不同于其它模型实体,prop_static是静态发光的:一个光照值存储给每一个顶点 ,以及模型的碰撞网络 (或者,可选的参考网络 ),被用来计算光照贴图阴影。
- 有以下选项:
disableshadows
- 不要投射光照贴图阴影disablevertexlighting
- 只为实体模型存储一个光照值。disableselfshadowing
- 防止实体从自身投射阴影。ignorenormals
- 忽略法线的顶点数据来计算照明。这对叶子之类的东西非常有用,还有其他薄法线网络。
动态光源


env_projectedtexture 过道的照明。
- light_dynamic
- :一个简单的,单向的,可移动的,可开关和可调整的动态光。
- point_spotlight :一个在它射中的表面产生动态的聚光灯效果的动态光源。
- npc_spotlight :一个聚光灯NPC ,类似于point_spotlight,但是拥有追踪目标的能力。
- env_projectedtexture
- 一个拥有贴图的灯而不是纯色的动态光,而且还有逼真的动态阴影。影响所有的表面,它可以接受照明,而且可以用于第二章 里玩家的手电。
动态阴影





- shadow_control :一个点实体,用于控制动态阴影预测地图,包括最大距离投射,方向投射,以及锐利度/散漫度。
- info_no_dynamic_shadow :一个点实体,用来列出哪些固体 表面不接收动态阴影。
- prop_physics 实体:拥有一个"shadowcastdist"键值,来设置这个物体投射多远的动态阴影。
- prop_dynamic 实体:拥有一个"disableshadows"键值,以及"enableshadows"和"disableshadows"输入来控制动态阴影投射。
- NPC实体:拥有prop_dynamic阴影控制,再加上一个"disablereceiveshadows" 待完善: to prevent...?
丁达尔效应
丁达尔效应是因为光在透明介质中通过悬浮颗粒(胶体)产生的散射而形成的。比如大雾里的车大灯。
- 光晕(发光动画)效果:
- env_sprite - 一个实体,用于创建全方位的光晕或眩光效果。
- env_lightglow - 一个不对称的发光体(对于高对比度的区域)。
- env_sun - 添加一个高亮的haloed给天空盒 ,来表示太阳或月亮的位置。
- 光束(体积光)效果:
- 固体贴图:
models/effects/vol_light001
- 固体贴图:
models/effects/vol_light002
- 模型
models/Effects/vol_light.mdl
- 用于prop_static 。
- 固体贴图:
公开的值
- 汽车大灯
亮度(Brightness)231 223 192

- 17号城的白天
- 亮度
237 218 143 800
- 环境(Ambience)
190 201 220 100
- 莱温霍姆的夜晚
- 亮度
175 230 239 50
- 环境
43 45 57 5
- 联合军的灯
- 亮度
147 226 240 3000
- 环境N/A
- 钨灯泡
- 亮度
254 216 146
- 环境N/A
- 荧光灯
- 亮度
159 237 215
- 环境N/A
注意
- 命名一个光源会使其更加"昂贵"(需要消耗更多资源)。仅当你需要的时候才命名光源。多个光源共享一个名字比起使用不同的名字要"便宜"得多。
- light_dynamic 非常"昂贵",而且在某些系统上甚至不会出现。
- 基础的光源实体不会伴随着可见的物体出现(如灯泡)。为此,你需要一个道具。请查看HL2光源道具 获取列表。
- 基础光源实体不会伴随着"光晕"出现,即便你希望在大雾或朦胧的区域看到它们。要实现这一点,无论是编译还是运行地图都要启用HDR ,或者添加一个point_spotlight (除非需要否则设置动态光照为"关")或者env_lightglow 实体。
- 除非你运行vrad (或等价的)否则地图将不会发光 。除非地图无泄漏 ,否则Vrad无法正确运行,也无法计算出真实的光照反射。
- 一些贴图提供它们自己的光,可以使用模组目录里的
lights.rad
,或者使用sourcesdk/bin
里的那个就可以做到。 - 移动基于物体的固体,它们的发光方式也不会改变。它们的光照只会根据它们在Hammer里的位置来计算。(比如,一个在黑暗房间里的固体,将其带到高亮房间里,它也不会变亮。)
控制台命令
mat_fullbright <0-2>
0
是正常的照明。1
是全亮的灯光,一切都是100%地发光。2
在橙盒里已经有了说明,并且是"仅照明"。它使用纯无色替换了所有贴图图像,让你看到究竟是什么在发光,其位置和方式。
参见
外部链接
- Lighting Tutorial - Covers entities & variables with examples
- Quadratic/Linear/Constant in Lights