ps:全局照明效果对于动态物体也是有办法的。Unity提供了一套Light Probe的技术,可以将光照信息保存在这些预先布置好的灯光探头中,动态物体从这些探头中获得光照信息。当然,效果不会很精细。这种技术后面再做论述。
全局照明(global illumination) = 直接光照(direct lighting) + 间接光照(indirect lighting) + 环境光(ambient light)
Unity对于indirect lighting的定义为:自光源发射,至少击中场景表面两次,最终到达摄像机的光线。
PS:在Unity中,ambient light对于动态物体或未经烘焙的物体而言,是作为直接光照并实时参与计算的。对于静态物体而言,ambient light所有成分都被视为间接光照并参与到烘焙中。
典型应用一:灯光的间接光部分被烘焙到lightmap中,烘焙完成后,该光源还能继续参与实时光照计算,以提供材质的法线高光效果。 典型应用二:将灯光对静态物体产生的阴影烘焙到单独的lightmap中,这种lightmap叫做ShadowMask,在运行时,根据ShadowMask,对动态物体产生的实时阴影能够与烘焙阴影更好地混合。
注意:Mixed Light的Shadow Type设置若为No Shadow,该光源只有间接光部分参与烘焙,并可以为所有物体提供实时光照。这与文档描述的不符,疑似Unity的一个Bug,是一个要注意的问题。所以,要么所有Mixed Light都开启阴影选项,要么就都设置成Baked模式,只留一个平行光作为Mixed模式,并注意开启阴影选项。
PS:ShadowMap叫做阴影贴图,Unity是实现实时阴影过程中生成的一张贴图。注意与ShadowMask做区分。
需要注意:Realtime GI仍然需要一个类似于上面提到的烘焙(baked)的预计算(precomputed)阶段,仍然限于静态对象。但是,它不仅在构建时预计算光线的反弹,而且还会预先计算所有静态物体间光线反射可能经过的路径,并对这些信息进行编码以供在运行时使用。所以对于所有的静态对象来说,预计算(precomputed)阶段解决的问题是“如果任何光照射到这个表面,它会在哪里弹跳?”然后Unity会保存这个信息,指出光线可以传播哪些路径以备后用。最后的照明是在运行时通过将现有的实际灯光输入到先前计算的光传播路径中完成的。更多内容见技术细节。
您需要 登录 才可以下载或查看,没有账号?立即注册
使用道具 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )
GMT+8, 2024-11-24 05:27 , Processed in 0.137946 second(s), 27 queries .
Powered by Discuz! X3.5 Licensed
© 2001-2024 Discuz! Team.