Skip to main content

照明

照明类型:
  • 实时--每帧计算光照
  • 烘焙- 在编辑器的电脑上预先计算光照并生成光照贴图(包含光照和阴影的纹理),然后覆盖在这些对象上
  • 混合--静态物体使用烘焙光照,动态物体使用实时光照
灯光类型:
  • 定向--本质上就是太阳。每个场景不应超过 1 个。\它的光线是无限的,因此它的位置并不重要,但它的旋转却很重要。
  • 点状 - 从中心向各个方向投射光线。模拟灯泡。
  • 点 - 从中心向外投射锥形光线。模拟聚光灯。
  • 区域 - 从二维矩形或圆形向外投射光线。模拟天花板上的办公室照明。

理想情况下,所有灯光都应烘烤,不应使用实时灯光

VRChat中的实时灯光要么看起来很糟糕,要么会降低帧速率,或者通常两者兼而有之。

那么如何为动态对象打光呢?灯光探测器。这些探针会预先计算对象在该探针位置的照明效果。许多探针被放置在一个组中,当动态对象穿过该组时,它们会与探针混合并相应地点亮。

反射探测器

用于反射。它们就像照相机一样,从所放置的位置(6 个方向)拍摄 6 张照片,然后将这些数据组合成立方体地图(球形图像)。重叠的反射探头可进行混合。
切勿在 VR 中使用屏幕空间反射。

反射探针指南([gitlab.com/])</span Reflection Probe Box Projection([docs.unity3d.com/])</span

灯光设置

转到 Window>Rendering>Lighting Settings(窗口>渲染>灯光设置),弹出该窗口。

如果场景完全在室内,没有窗户,请关闭天空盒照明。
如果是室外场景,则打开天空盒照明,并在照明设置中设置定向光源。

单位像素

Texels 就像放置在物体上的像素,用于计算烘焙光照。对于许多 PC 世界来说,我认为每单位约 30 个像素足以兼顾质量和大小。
将灯光设置为柔和的阴影。

要实际查看灯光贴图的像素如何投射到几何体上,可以单击 "场景 "窗口顶部的下拉菜单(通常设置为 "阴影"),将其设置为 "烘焙灯光贴图"。

要更改网格的光贴图 UV,可以在模型设置中进行(点击 "项目 "窗口中的模型,更改 "模型 "选项卡底部的 "生成光贴图 UV "设置)。

虽然某些阴影较短的物体使用硬阴影可能更准确,但在较长的距离上,软阴影更准确,而且在较低的像素分辨率下看起来更好。Unity 并不包含 PCSS(百分比接近软阴影)等开箱即用的自适应阴影。 下次在阳光下,看看你的阴影。看看靠近原点(你的脚)的边缘是如何清晰的,而越往上越模糊!这就是 PCSS 等技术所模拟的效果。

不要过度使用像素!像素越多,光贴图的文件大小就越大!

https://unity3d.com/how-to/progressive-lightmapper-optimization-tips

在某些情况下,由于光映射 UV 重叠(常见于 probuilder 对象),您会希望使用更高的 texel 数。UV重叠([docs.unity3d.com/])</span

在您的关卡设计中,如果您的灯光是烘焙的,请避免在地板上或墙壁低处放置细节阴影;在这些阴影上行走的非静态模型将不会投射到这些细节阴影上。

灯光贴图分辨率

控制灯光贴图的最大分辨率。将其设置为只有一个光贴图,以获得最佳性能。

反弹

控制光线的反弹次数。[这些需要很长时间来烘烤] Most scenes shouldn't need more than 2.\例外情况是完全间接照明的场景。

Occlusion Culling/[docs.unity3d.com/]

将您的静态 GameObjects 设置为 static [这将把子参数、occlusion 和 occludee static 设置为 true] 。然后转到 Windows>Rendering>Occlusion Culling,并在上传您的世界之前点击 bake。

Unity 将不会呈现玩家看不到的头像;由于呈现头像对性能的影响最大,因此良好的 VRChat 关卡设计应下意识地引导玩家只关注与之交互的其他玩家,而不会在后台呈现一堆他们并不关心的性能不佳的头像。