资讯动态

Unity光照系统实战:实时、烘焙与探针的工程取舍

发布时间:2026/10/27 20:18:37 来源:尧图企业网站定制
场景美术把工程丢过来说“灯你随便打一下能看就行”结果一进 Play 模式帧率从 120 掉到 45阴影边缘像锯齿一样抖烘焙跑到四十分钟出来地板上全是黑斑。这类问题我见得太多几乎都不是软件有 bug而是Unity 光照系统那三层结构没分清实时光、烘焙光、中间还有一个靠探针兜底的间接光。所谓光照系统拆开看就是同一份 Light 数据被分到三条评估路径上——直接光与间接光、实时与烘焙、阴影贴图与 shadowmask。这三条轴想明白很多“玄学”现象立刻变得可解释比如为什么灯明明很亮物体却是灰的为什么烘焙后镜面反射里还留着旧灯。它要解决的问题很具体用有限的光照贴图内存和每帧的阴影绘制预算换一个看起来可信的静态场景再把动态物体的光照用探针接上让角色走进去不会像贴纸一样飘着。适合正在做中小型项目的美术、独立开发者以及被性能优化反咬过一口的客户端同学。下面我按“设计取舍为什么这样—参数到底在动什么—一套室内场景怎么完整跑通—出问题怎么查”的顺序写能直接抄的参数我会写死涉及推导的地方把算式列出来。1. 光照系统整体设计与思路拆解1.1 三条轴实时、烘焙与混合到底在分什么先建立一个心智模型。一盏灯在 Unity 里对画面的贡献可以拆成四项直接漫反射、直接高光、间接漫反射、间接高光。实时光照Realtime四项全算每帧都算代价是每多一盏灯就多一次物体遍历和阴影绘制烘焙光照Baked是把前两项烤进光照贴图运行时零成本代价是静态物体不能动、动态物体吃不到混合Mixed则是光照贴图里存间接光直接光和阴影实时算动态物体能正常接受光照。选型的判断标准不是“效果好不好”而是“这个东西会不会动”。墙、地板、货架不动就该烘焙角色、可开关的门、被推来推去的箱子会动就得实时或者靠探针。我遇到过一种典型翻车整场景全实时的点光源四十多盏每盏都开阴影PC 上跑得动一到移动端每帧 thirty 多次额外绘制直接卡成 PPT。后来把这四十盏里三十五盏改成 Baked只留玩家手电和两盏应急灯 Realtime帧率立刻回来了画面几乎看不出差别——因为静态环境的光本来就不该每帧重算。这里有个容易忽略的点Light 组件上的Render Mode和 Lighting 设置里的Realtime Global Illumination是两个独立开关。前者决定这盏灯的直接光怎么算后者决定间接光要不要每帧更新。很多人把 Render Mode 改成 Baked 就以为万事大吉结果发现场景还是暗是因为环境光Environment Lighting的 Source 还挂在 Skybox 上而 Skybox 是实时环境光烘焙贴图的时候参与计算的方式完全不同。注意Baked 模式的灯在运行时改 Intensity 是不生效的因为它已经被“烧”进贴图里了。想让灯能调亮度必须用 Mixed并且 Lighting 面板里 Mixed Lighting 的模式要选对这个后面 3.3 会细讲。1.2 渲染管线不同光照方案的岔路口内置管线、URP、HDRP 三套东西在光照上的差异比很多人想象的大。内置管线历史最长Progressive Lightmapper 支持完整光照贴图、探针、反射探针这套老三样最稳但缺少现代的光照分层能力。URP 主打轻量默认只支持有限数量的逐像素灯Additional Lights 的 Per Object Limit超过数量的灯会退化成顶点光照或者干脆不参与所以你会看到“灯加了但是没效果”它引入了Light Layer可以按层控制哪盏灯照哪些物体做局部打光非常省。HDRP 走物理单位路线Intensity 用的是 Lumen 或 Lux曝光靠 Exposure 控制同一套参数搬到 URP 上数值要除以一个量级才对得上。我一般这样定移动端或者中低配目标选 URP静态环境全部烘焙动态物体靠 Light Probe逐像素灯控制在 4 盏以内PC 端高画质、需要大量实时反射和体积雾上 HDRP但要接受它更重的阴影和更长的编译时间内置管线现在只建议维护老项目新项目没必要再从它起步。还有一个容易被忽视的差异URP 里阴影级联Shadow Cascades的默认数量和距离比内置管线保守主方向光的阴影在远处会明显变糊很多人以为是分辨率问题其实是级联最后一段覆盖范围太大。这个换算下面 2.3 给公式。1.3 为什么静态物体要单独走一套烘焙链路有人问既然实时光能算全部为什么不干脆全实时省得烘焙那么麻烦。核心原因是间接光。一次反弹的间接光在实时里要么靠屏幕空间近似SSGI只能算屏幕内可见的部分物体一转出画面就没了要么靠探针体APV 这类体积方案需要预计算纯实时全量算间接光在消费级硬件上还远没有到能随便用的程度。烘焙的本质是把这个不可实时化的积分过程离线算完把结果压缩成几张纹理。代价也很明确贴图内存和烘焙时间。一张 1024×1024 的 LightmapRGBM 编码下大约占 4MB 显存含 mipmap 会更多一个中等室内场景十来个物体、每张 512 到 1024加起来几十兆很常见。烘焙时间则和纹素数量、反弹次数、Lightmap Parameters 里的质量档位正相关一个 200 平米的室内场景在普通配置的机器上跑 Progressive GPU 大概五到十五分钟跑 CPU 可能翻三倍。所以整个链路的设计意图是把“不会变”的信息尽可能前置计算把“会变”的部分压到最少。理解这一点后面所有参数选择都能自己推导不用死记。2. Light 组件核心参数拆解与实操要点2.1 四种灯型怎么选以及 Area Light 的坑Directional 是方向光模拟太阳位置无所谓只看旋转阴影投射范围覆盖整个场景Point 是点光向四周均匀发射靠 Range 控制衰减半径Spot 是聚光用 Inner/Outer Spot Angle 控制光锥做台灯、射灯、手电最合适Area 是面光源只在烘焙时有效实时下它什么也不算。新手最容易踩的是 Area Light。它看起来能做出非常漂亮的柔和阴影但只能用于 Baked而且它的阴影方向和普通灯不同——它是从面片向外“推”的。如果你把一盏 Area Light 设成 RealtimeUnity 不会报错只是这盏灯对画面毫无贡献你会盯着屏幕怀疑人生。我的建议是室内主光用 Area 烘天花板反弹重点照明用 Spot 烘动态补光用 Point。另一个细节是 Point 和 Spot 的Range。Range 不只是亮度衰减半径它还决定这盏灯是否被剔除——物体在 Range 之外完全不参与计算。所以想用“调小 Range 再调大 Intensity”来做局部高光效果会非常生硬因为衰减曲线在边界处是截断的。正确做法是保持 Range 略大于视觉上需要照亮的范围让衰减自然落到接近零。2.2 Intensity、色温与衰减曲线亮度不是越大越好内置管线和 URP 的 Intensity 是无量纲的相对值HDRP 是物理单位。以 URP 为例Directional 的 Intensity 在 1 左右是正午晴天0.3 到 0.5 是阴天或黄昏Point/Spot 的 Intensity 单位是 Candela室内一盏普通吸顶灯大概在 5 到 20 之间具体取决于 Range。这个数值范围如果搞错会出现“一盏灯把整个房间照爆另一盏完全看不见”的诡异现象。色温这块我强烈建议开Use Color Temperature用开尔文值而不是手调 RGB。2700K 是暖白住宅、餐厅4000K 是中性白办公6500K 是冷白阴天、工业。手动调 RGB 很容易把颜色调到色域外导致高光区域出现奇怪的偏色用色温至少保证白平衡是合理的。衰减方面URP 和 HDRP 里有Falloff或Range Attenuation的概念内置管线是一个固定的平方反比近似。这里有个实操经验做室内漫反射时把灯的 Range 设成房间对角线的 0.6 到 0.8 倍然后 Intensity 按实际需要调比“Range 拉满 Intensity 很小”更容易得到均匀的光。因为衰减曲线在近距离段变化剧烈Range 太大会让靠近墙面的区域特别亮中间反而暗。2.3 阴影距离与贴图分辨率的换算这是最值得算一算的地方。方向光的阴影贴图是一张固定分辨率的深度图覆盖范围由Shadow Distance决定所以有效精度是每纹素覆盖的实际尺寸 Shadow Distance ÷ Shadowmap Resolution × 2举例Shadow Distance 设为 50 米Shadowmap Resolution 是 2048那么每个纹素覆盖 50/2048×2 ≈ 4.9 厘米。这个精度下一个人物在 30 米外的影子边缘会明显发虚因为人宽 50 厘米只占十个纹素。如果 Shadow Distance 拉到 150 米同样 2048 分辨率每纹素就是 14.6 厘米近处角色的影子会碎成锯齿。解决方案就是级联Cascades把视野按距离切成几段每段单独一张贴图近处精度高。URP 默认两段建议改成四段Split 比例用默认的 0.1/0.3/0.6 左右。四段级联下50 米距离时第一段大约覆盖 5 米2048 分辨率每纹素 0.5 厘米近处非常锐利最后一段覆盖 30 米精度降到 3 厘米远处糊一点也看不出来。代价是绘制次数。四段级联意味着阴影 pass 要跑四次移动端上这就是实打实的开销。所以移动端我通常这样配目标平台Shadow Distance级联数阴影贴图分辨率阴影类型高端 PC80-12044096Soft主流 PC / 主机50-8042048-4096Soft移动端20-301-21024Hard低端移动 / VR15 以下1512Hard移动端用 Hard 阴影不是妥协是因为 Soft 阴影要靠额外的采样和模糊 pass在中低端 GPU 上开销会陡增而 30 米内的硬阴影在小屏幕上观感其实可以接受。提示Shadow Distance 应该略大于相机的远裁剪面中你真正在意阴影的部分而不是等于 Far Clip。很多项目 Far Clip 设 500Shadow Distance 也设 500结果近处阴影惨不忍睹。把 Shadow Distance 压到 50肉眼几乎看不出远处没阴影。3. 全局光照光照贴图、探针与反射探针3.1 烘焙流程与几个决定成败的参数把物体标成Contribute GI旧版本叫 Static是第一步然后打开 Lighting 面板烘焙。真正决定成品质量的是这几个参数Lightmap Resolution每个单位长度的纹素数是最关键的那个。给个参考值室内墙面和地面 10 到 20 texels/unit家具 20 到 40需要清晰阴影细节的物体可以到 60 以上。但要注意这个值是“每米”一个 10 米长的地面在 20 texels/unit 下需要 200×200 的纹素如果它被分配到一张 512 的贴图上就会很糊。Lightmap Size单张贴图尺寸默认 1024最大 4096。它的作用是把多个物体打包到同一张贴图里共享空间。贴图越大单个物体分到的纹素越多但显存和烘焙时间也线性上升。我一般先设 1024 跑一轮看哪些物体糊再单独调。Lightmap Padding是物体之间的间隔默认 2 个纹素。这个参数如果太小会出现物体边缘的接缝漏光调太大又浪费空间。8 到 16 是比较稳的值。Indirect Intensity和Albedo Boost是一对容易用错的组合。Indirect Intensity 控制间接光整体强度默认 1做室内想强调反弹光可以调到 1.5 到 2Albedo Boost 是人为提高材质反照率来增强反弹我一般不动它因为会破坏材质的物理一致性。真想控制反弹强度用 Indirect Intensity 就够了。Lightmap Parameters里的质量档位比如 Blur Radius、Anti-aliasing Samples直接决定烘焙时间。预览阶段用 Default-VeryLow出图前换 High。这里有个很省时间的做法先用 GPU Lightmapper 低质量跑一遍看大体效果确认布局没问题再上高质量出终稿。GPU 在这类计算上比 CPU 快数倍缺点是显存占用高大场景可能爆。3.2 Light Probe 与 Reflection Probe动态物体的两条命脉光照贴图只对静态物体有效角色走进烘焙好的房间如果没有探针他就会保持默认的环境光颜色看起来像剪了个人贴上去。Light Probe Group就是解决这个的在空间里撒点每个点采样一次烘焙结果运行时对动态物体做四面体插值。探针的密度和摆放有个经验法则沿着角色可能走动的路径每 2 到 3 米放一组转角、门口、明暗交界处必须加密。因为四面体插值是在四个探针之间线性混合跨越明暗边界时探针太少会出现明显的“跳变”角色走过门口光色突然一抖。我见过最省事的翻车是把整个场景用八个探针包成一个立方体结果角色走到哪都是同一种偏灰的环境色。Reflection Probe 负责镜面反射。默认场景里只有一个基于 Skybox 的全局探针室内场景如果不额外放探针光滑地板会反射天空非常假。做法是在房间中心放一个 Baked 类型的反射探针Type 选 BakedBox Projection 勾上然后把它的 Box Size 调到和房间一样大这样反射会按盒子边界正确投影而不是无限远。Box Projection 这个勾选项极其关键不勾的话反射平面会像贴在无穷远处走到墙边也不会变。金属和光滑材质的物体最好在关键位置再补几个小探针比如展示柜、镜子前。探针数量不是越多越好每个 Baked 反射探针都是一张 Cubemap1024 分辨率下大约 6 兆显存几十个就能吃掉一大块预算。3.3 Mixed 光照模式Shadowmask 那一栏到底选什么Mixed 灯有一个子选项在 Lighting 面板的 Mixed Lighting 里叫 Lighting Mode三选一Baked Indirect光照贴图只存间接光直接光和阴影实时算动态物体能收到阴影。适合大多数场景缺点是动态物体不能投射阴影到静态物体上因为直射阴影不烘焙。Shadowmask在上一档基础上额外存一张阴影贴图让静态物体上的阴影在运行时也能被“记住”同时动态物体可以投射阴影。代价是多一张 shadowmask 贴图。模式里还分 Distance Shadowmask 和 Shadowmask前者近距离实时、远距离用烘焙兼顾质量和性能是我最常用的档位。Subtractive直接光也烘焙进去运行时只有一盏方向光实时照动态物体其他灯对动态物体完全无效。性能最好效果最假只适合低端移动端。这里有个常见误解很多人以为选了 Shadowmask 就万事大吉结果发现动态物体上还是有烘焙阴影的“鬼影”。原因是场景里有物体没正确标记 Contribute GI或者 Lightmap 的 UV 设置有问题导致 shadowmask 采样错位。排查方法是在 Scene 视图的 Shaded 下拉里切到 Shadowmask直接看那张图有没有异常。4. 从零跑通一套室内场景光照4.1 场景准备比打灯更重要的一步我现在的习惯是进场景先不打灯先把准备工作做完这一步做扎实能省掉后面 80% 的返工。第一检查模型的UV2。烘焙需要第二套 UV如果模型是从外部导入的Import 设置里要勾Generate Lightmap UVs。这一步非常关键很多“烘焙出来一片黑”或者“接缝错位”的问题根源都在这里。如果模型是程序化生成的需要在建模软件里手动展 UV2或者用 Unity 的 UV 展开工具。第二设置Scale in Lightmap。这个参数按物体单独覆盖全局的分辨率。我的做法是默认 1重要物体主角周围的地面、墙面给 2 到 4背景远景给 0.5。这样能在总贴图预算内把纹素分配到刀刃上。第三把场景里所有不动的物体标记Contribute GI会动的取消勾选。注意标记后会触发一次 UV 展开大场景可能要等一会儿。标记完在 Scene 视图切到 Albedo 或者 UV Charts 模式检查有没有 UV 重叠或者拉伸——UV Charts 模式下每个色块代表一个 UV 岛色块糊成一片说明 UV 有问题。第四把地面、墙面这些大件设成Receive Shadows打开小装饰物可以关掉阴影接收以省一点开销。4.2 灯光布局与曝光校准布局我一般按“三层光”来搭。第一层是环境光用 Lighting 面板的 Environment LightingSource 从 Skybox 切到 Gradient 或者 Color。室内场景用 Skybox 往往偏蓝用 Gradient 手动调上下颜色更可控。环境光的 Intensity 我通常给 0.2 到 0.4主要作用是填死黑不要指望它照亮场景。第二层是主光用一到两盏 Area Light 贴在天花板位置模拟筒灯或者灯槽Render Mode 设 Baked。Area Light 的柔光效果是其它灯型做不出来的代价就是只能烘焙。第三层是重点照明用 Spot 打向需要突出的东西——吧台、展示架、床头。这里有个技巧Spot 的 Cookie 可以贴一张噪点或者光斑纹理模拟射灯的灯罩投射效果提升非常明显成本几乎为零。曝光这块如果用了 HDRPExposure 会接管一切手动调 Intensity 不如调 Exposure 直观URP 和内置管线没有物理曝光需要靠后处理的 Tonemapping 来找平。我的做法是先给一个接近灰卡的中性色材质把主光打到它在画面上看起来是中灰再以此为基准调整其它灯。有个很容易忽略的细节Auto Exposure 和 Bloom 会破坏烘焙的一致性。因为烘焙贴图是按固定亮度算的运行时曝光一变贴图看起来就过曝或者欠曝而且不同的相机会看到不同的结果。做烘焙场景时我倾向于关掉自动曝光用固定值保证所见即所得。4.3 烘焙参数配置与迭代跑第一轮烘焙我用的配置是Lightmapper 选 Progressive GPULightmap Resolution 给 10Lightmap Size 1024Lightmap Padding 8Indirect Intensity 1.5Bounces 2 到 3Direct Samples 和 Indirect Samples 都用中档Ambient Occlusion 打开给 0.5 左右。这一步的目的是看大体效果不要在意噪点因为采样低会有颗粒感正常。看完之后针对问题改如果地面糊单独给地面提 Scale in Lightmap如果整体太暗先加 Indirect Intensity 而不是加灯如果墙面有条纹状漏光先检查 UV 和 Padding。第二轮用高采样出终稿Direct Samples 和 Indirect Samples 拉高Blur Radius 适当加大让阴影更柔和。这一轮会慢很多我一般安排在下班前跑第二天来看结果。这里分享一个省时间的做法把烘焙的中间结果打包成 preset 存下来包括 Lightmap Parameters、Lighting Settings下次做类似场景直接套用。Unity 的 Lighting Settings 可以另存为 asset也可以在命令行里用Lightmapping.Bake()配合 preset做批量出图的自动化。给一段我常用的 Editor 脚本用来批量设置场景里所有静态物体的 Scale in Lightmap 并触发异步烘焙using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; public class LightmapBatchTool : EditorWindow { private float defaultScale 1f; [MenuItem(Tools/Lightmap Batch Tool)] public static void ShowWindow() { GetWindowLightmapBatchTool(Lightmap Batch); } private void OnGUI() { defaultScale EditorGUILayout.FloatField(Default Scale in Lightmap, defaultScale); if (GUILayout.Button(Apply Bake Async)) { ApplyScale(); Lightmapping.BakeAsync(); } } private void ApplyScale() { var renderers Object.FindObjectsOfTypeMeshRenderer(); foreach (var r in renderers) { var so new SerializedObject(r); var prop so.FindProperty(m_ScaleInLightmap); if (prop ! null GameObjectUtility.AreStaticEditorFlagsSet(r.gameObject, StaticEditorFlags.ContributeGI)) { prop.floatValue defaultScale; so.ApplyModifiedProperties(); } } EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); } }这段脚本的逻辑很直白遍历场景里所有 MeshRenderer只对标记了 ContributeGI 的对象改 Scale避免误改动态物体。注意AreStaticEditorFlagsSet要用UnityEditor命名空间放在 Editor 目录下编译。4.4 移动端的裁剪与取舍从 PC 项目往移动端移植光照往往是第一个崩的地方。我通常按这个顺序砍先把 Shadow Distance 从 60 砍到 25级联从四段砍到一段阴影类型从 Soft 改 Hard。这一刀下去阴影开销能降七成以上。然后检查每盏灯的 Render Mode所有不参与动态交互的灯一律 BakedRealtime 灯严格控制数量。再检查 URP Asset 里 Additional Lights 的 Per Object Limit从 8 降到 4模式从 Per Pixel 改成 Per Vertex 或者 Mixed超出的灯用 Light Layer 分成几组只让最近的几盏生效。光照贴图这边Size 从 2048 降到 1024 甚至 512Directional Mode 从 Directional 改 Non-Directional省一张贴图代价是丢失法线方向的间接光信息高光会稍微平一点。反射探针从 1024 降到 256数量砍到三五个。还有一个特别有效的做法把手机端的阴影完全关掉改用一张预先烘焙的 Blob 阴影贴图贴在角色脚下。视觉上损失很小性能收益巨大。这在低端机上几乎是必选项。5. 常见问题与排查技巧实录5.1 烘焙瑕疵黑斑、漏光、接缝地面出现不规则黑斑八成是 UV 重叠或者纹素不够。排查顺序Scene 视图切 UV Charts 看色块是否正常切 Irradiance 看光照分布再切 Baked 看贴图。如果 UV 正常但某个面特别脏通常是那个面的 Scale in Lightmap 太低局部提上去重烤。墙角漏光就是光从墙缝里“渗”出来。原因是两个物体的 UV 岛贴得太近或者 Lightmap Padding 太小采样时串色了。解决办法是 Padding 提到 16或者把墙做成一个整体的封闭网格而不是几块拼起来。接缝错位两块相邻的墙面亮度不一致或者明暗线对不上。根因是它们被分配到了不同的光照贴图插值边界不连续。做法是把相邻的静态物体放进同一个 Lightmap 组——在 Mesh Renderer 的 Lightmapping 设置里有个 Lightmap 参数可以指定或者干脆让它们用同一张贴图通过控制总纹素量在 1024 以内。还有一种“假漏光”阴影距离不够远处的静态物体上阴影消失了看起来像被照亮。判断方法是关掉所有实时阴影看是否还亮。5.2 阴影问题抖动、双层、悬浮阴影抖动Shadow Acne物体表面出现条纹状的明暗交替。这是深度比较的精度问题调Shadow Bias和Normal Bias能解决。Bias 太大导致阴影脱离物体peter-panning太小导致自阴影痤疮这两个参数就是在找一个平衡点。我的经验值Bias 给 0.05 到 0.1Normal Bias 给 0.3 到 0.5配合四段级联基本能压住。双层阴影同一道影子有两条边缘。这通常是因为灯的 Render Mode 是 Mixed 并且 Lighting Mode 是 Shadowmask同时实时阴影和烘焙阴影叠加了。解决方法是改用 Distance Shadowmask或者把 Shadow Strength 调低。阴影悬浮也就是 peter-panning影子跟物体分离。基本就是 Bias 或者 Normal Bias 太大往回收。角色脚下的阴影是一团黑色圆盘那是 Blob Shadow 和实时阴影叠加了检查有没有同时开两套。5.3 问题速查表现象最可能的原因优先排查动作烘焙后场景全黑没标 Contribute GI / UV2 缺失检查 Static 标记和 Generate Lightmap UVs光照贴图接缝可见相邻物体分到不同贴图 / Padding 小合并到同一贴图Padding 提到 16动态角色颜色发灰Light Probe 覆盖不足加密探针重烤场景光滑地面反射天空没放场景反射探针加 Baked 反射探针并勾 Box Projection移动端帧率骤降实时阴影 多盏逐像素灯砍 Shadow Distance灯改 Baked灯加了看不见效果超出 Per Object Limit / Range 太小检查 URP Asset调大 Range阴影边缘锯齿级联数不够 / 分辨率低升到 4 段级联2048 以上烘焙时间过长采样过高 / 贴图过大降采样跑预览终稿再升质量物体边缘有亮边漏光Albedo 太亮 Indirect Intensity 高降 Indirect Intensity检查 Padding阴影频繁闪烁相机 near clip 太小 / 深度精度调大 Near Clip检查级联分割6. 我在实际项目里固化下来的几条习惯第一次接触光照系统的同学最容易被文档里那一堆参数吓住其实真正影响结果的没有那么多。我现在的流程固定成这个样子先确认 UV2 和静态标记再用环境光把最暗处填到能看见然后只放一盏主光跑预览烘焙确认亮度和反弹合理再逐步加重点照明。每加一批灯就跑一次低质量烘焙不要攒到最后一次性出图——因为光照问题是会互相掩盖的一次改十处出了问题根本不知道是哪一处。另外把 Lighting Settings 和 Lightmap Parameters 存成项目里的 asset 并纳入版本管理这件事迟早要做。多人协作时不同人本地烘焙出来的结果不一致十有八九是这些设置没同步。最后分享一个小技巧在场景里放一个正面朝向相机、材质为纯白的球把它临时设成 Contribute GI每次烘焙完扫一眼这个球是不是干净的中灰。它比任何参数面板都直观地告诉你间接光照是否失衡——如果球的下半部分突然发绿说明地面材质把绿色反弹上去了这在铺了草地的室外场景里特别常见值不值得修就看你的容忍度了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑