Reflection Probe相关
天空盒的信息不可能包含所有的场景对象,在许多情况下,对象从天空搜集反射信息时可能会被遮蔽,像是室内对象或是在类似桥或是隧道等建筑物里的对象,为了要准确反射这些对象,必须用反射探头针对这些对象取样,这种探头从他们的位置对周围取样并把结果写到方体贴图,可以让周围经过的物体得到环境的反射影像。可以透过GameObject->Light->Reflection Probe来新增一个反射探头,反射探头的位置会决定方体贴图取样的内容,以及反射所看起来的样子,基于效能考虑反射探头越少越好,反射探头并非用来让物理得到精确结果,而是让游戏世界有更好的反射,大多数情况下几个安排妥当的反射探头就很足够了。
Reflection Probe种类
- Baked:在编辑器里存储一个生成的反射cubemap。可以点inspector窗口下面的bake按钮或者light窗口下边的bake按钮进行烘焙生成反射cubemap。跟烘焙lightmap差不多,如果light窗口Auto勾选上了,会自动更新cubemap。baked探头只能显示标记为Reflection Probe Static的物体。一旦烘焙完后,cube map就不会变化,所以不会受移动物体实时变化的影响。消耗比实时的小很多。可以更进一步,通过culling mask和clipping plane属性(像摄像机一样)将不想要的物体屏蔽出reflection probe。
- Realtime:在运行时实时生成cubemap,也就是说反射不局限于静态物体,而且在场景中会实时更新。然而,需要花费大量的处理时间刷新光探头,unity允许你通过脚本触发刷新。同时,有选项控制刷新,这样就可以好几帧刷新一次。也可以通过culling mask和clipping plane控制哪些物体加入反射cubemap。
- Custom:这种也可以在场景中烘焙,像Baked探头一样,但是你可以设置一个自定义的反射cubemap,自定义的也不会实时更新。但有动态物体选项,勾选上后,允许没有标记为Reflection Probe Static的物体加入反射cubemap中。
Reflection Probe的使用
- 首先我们在场景中添加两个游戏对象,一个Sphere,一个Cube。