灯光
< Zh
概括性的地图制作系列 讨论你的想法——帮助我们写你需要的文章和想法 |
---|
弹药 | 生物 | 蚁狮 | 光束和激光 | 线缆和绳子 | 动态的天空与云雾 | 颜色理论 | 战斗 | 联合军 | 门 | 尘土、雾、烟 | 升降机 | 关卡转换 | 环境光效、太阳、天气、室外 | 爆炸 | 火焰 | 植被 | 玻璃和窗户 | 梯子 | 光效 | 优化 | 物理 | 视网膜扫描仪 | 声效和音乐 | 特效 | 地形 | 火车 | 机枪塔 | 水 | 僵尸 |
Contents
向导
- 添加灯光 - 一个关于如何设置一个基础的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
- 忽略法线的顶点数据来计算照明。这对叶子之类的东西非常有用,还有其他薄法线网络。
动态光源
提示:动态光源是在运行中计算的,所以渲染起来很"费劲 "
- light_dynamic
- :一个简单的,单向的,可移动的,可开关和可调整的动态光。
- point_spotlight :一个在它射中的表面产生动态的聚光灯效果的动态光源。
- npc_spotlight :一个聚光灯NPC ,类似于point_spotlight,但是拥有追踪目标的能力。
- env_projectedtexture
- 一个拥有贴图的灯而不是纯色的动态光,而且还有逼真的动态阴影。影响所有的表面,它可以接受照明,而且可以用于第二章 里玩家的手电。
动态阴影
警告:这些都不是真正的阴影,它们是从远处的投射者投来的程序(在代码中生成的)贴图。在Left 4 Dead(求生之路),Portal 2(传送门2)以及Alien Swarm(异型丛生),阴影的方向是在每个实体的基础上计算出来的,取决于距离实体最近的光。但不在Source2006/2007模组里,除非你应用Source2007里的动态DTT阴影角 到你的模组。
警告:动态阴影有时候会射穿墙或地板,暴露玩家或物体的位置。如果你遇到这种情况,使用info_no_dynamic_shadow 来解决这个问题。
注意:只有当没有在QC 里定义shadowlod的情况下,阴影才会由视觉网络"投射"出来。阴影的LOD只有低细节的网络,用于生成阴影。这些不适用于阴影地图制作(手电,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
注意:从L4D2 SDK中获取的
- 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