ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Unity3D立体效果实战指南:摄像机光照材质与性能优化

Unity3D立体效果实战指南:摄像机光照材质与性能优化 简介围绕Unity3D分屏式3D立体效果制作的RAR压缩包面向Unity开发者、VR/AR应用设计者以及希望在游戏或模拟项目中还原人眼双目视差的工程师资源聚焦分屏渲染与立体投影两条主线从左右眼相机配置、画面分割到3D投影转换均有涉及。内容以相机系统为核心覆盖平级双相机的创建与位置偏移模拟约65mm瞳距、视锥体同步调整、屏幕左右分区渲染、行列交错或红蓝等3D输出格式适配以及后期色彩校正与深度增强还提及Unity Stereo Rendering Pipeline等高级渲染路径对立体渲染性能与画质的优化作用。包体为RAR压缩格式共包含24个文件大小仅6.63MB文件构成以8个动态链接库DLL、4个配置文件、可执行程序及Unity默认资源为主另有少量辅助文档与着色器资源可作为分屏立体效果的可运行示例或二次开发模板。已有1614人学习下载通过压缩包可直观体验双屏/并排式立体输出也可参照其中相机参数与渲染设置快速复现分屏3D效果减少从零调试的弯路。1. unity3d立体效果不等于堆模型先把“立体感”拆成四个可调变量“unity3d立体效果”这个标题落到干活层面就是一句话怎么把一个三维场景调出让人信服的体积感、纵深感还要保证帧数撑得住。很多新手把模型拖进 Hierarchy、再打一盏平行光就以为画面“立体”了实际跑起来才发现白模发灰、阴影死黑、材质像塑料跟官网 Demo 差了十万八千里。这篇笔记写给要做产品展示、数字孪生、工业仿真预览的一线开发把摄像机、光照、材质、模型导入和性能调优串成一条能复现的链路。适合两类人刚接触 Unity、想搞明白立体感从哪来的新手以及被立体效果反复折磨的老手想知道到底是哪个参数在拖后腿。2. 先立骨架用摄像机与光照把场景推出纵深2.1 摄像机不对别的全是白搭FOV、物理曝光与视角高度立体感的第一层不是模型面数而是“眼睛”怎么看待这个场景。Unity 摄像机默认的 Field of View 是 60°这个值本身没有对错但如果你做的是第一人称漫游和产品展示建议先把它拉到 55° 到 70° 这个区间。FOV 调得太大画面会像鱼眼镜头中间物体被拉远边缘直线全部弯曲纵深感被彻底破坏FOV 调得太小画面又像长焦监控前后物体被“压”在一个平面上立体感直接被压缩没了。第二个容易被忽略的是 Physical Camera物理摄像机。URP 和 HDRP 里勾上 Physical Camera 后摄像机开始模拟真实镜头的 ISO、快门速度和光圈 F-Stop。不少人在默认设置下调了一下午灯光切到物理摄像机模式画面瞬间过曝或欠曝于是干脆放弃物理相机继续用默认的“虚拟镜头”。我一般会建议项目从第一天就打开 Physical Camera因为你最终要面对的环境千差万别白天室外、室内展厅、夜间屏显都需要曝光逻辑而不是靠瞎猜亮度值硬调。视角高度也很影响立体感。人眼在地面上方约 1.6 米做室内漫游和展馆预览时把摄像机放在这个高度画面里的墙面倾斜角度、桌角透视才符合人的日常经验。相机放得太低地面占据了半个屏幕空间被压缩放得太高又变成了俯瞰的“上帝视角”体积感虽在但代入感全无。下面这个脚本是我在数字孪生项目里常用的摄像机辅助工具让玩家用滚轮平滑调节 FOV展会现场可以随时微调视角而不需要重启程序using UnityEngine; public class CameraZoomFov : MonoBehaviour { [SerializeField] private Camera _cam; [SerializeField] private float _minFov 30f; [SerializeField] private float _maxFov 70f; [SerializeField] private float _smoothSpeed 8f; private float _targetFov; private void Awake() { if (_cam null) _cam Camera.main; _targetFov _cam.fieldOfView; } private void Update() { float scroll Input.GetAxis(Mouse ScrollWheel); if (Mathf.Abs(scroll) 0.001f) { _targetFov - scroll * 10f; _targetFov Mathf.Clamp(_targetFov, _minFov, _maxFov); } _cam.fieldOfView Mathf.Lerp(_cam.fieldOfView, _targetFov, Time.deltaTime * _smoothSpeed); } }脚本逻辑不复杂滚轮向上滑动放大视角向下滑动缩小视角目标 FOV 被 Clamp 在 30° 到 70° 之间再用 Lerp 做平滑过渡避免视角数值突变带来的眩晕感。三个成员变量里_minFov 和 _maxFov 是上下边界主要用来防止用户把视角拖成明显的畸变_smoothSpeed 是插值速度8 左右手感比较跟手如果希望镜头反应更干脆可以调到 12但太高会显得机械。这个脚本在触摸屏设备上同样适用只需要把滚轮输入换成双指捏合的距离增量。2.2 布光不是一盏灯就完事主光、补光与阴影参数场景里只有一盏默认平行光画面几乎是必然发“平”的。立体感的本质其实是亮度梯度一个物体顶面亮、侧面暗、底边带一点点环境反射大脑才能判断它的几何转折。一盏灯只能提供一个方向的高光环境光又把所有暗部均匀抬亮轮廓自然就糊了。布光这件事一半像物理一半像玄学但至少有一个可以复用的三层结构。主光Key Light用平行光Directional Light决定整个画面的阴影方向。角度上我习惯把它放在 30° 到 60° 的俯角之间这个区间阴影在物体下方拖出合适的长度既能体现体积又不会遮挡太多细节。补光Fill Light一般用点光源或区域光放在相机同侧亮度控制在主光的 20% 到 40%它的存在只是让正对相机的暗部不至於死黑而不是重新照亮全场景。轮廓光Rim Light放在被摄物体的背面亮度不需要高但能让物体边缘多一条亮边把前景和后景“撕”开这是让立体感立刻提升的常用手段。下表是我自己常用的灯光参考配置适合一般的产品展示和室内场景颜色和强度还需要根据项目的天空盒微调灯光角色光源类型参考位置参考强度阴影设置主光Directional Light俯角 30°–60°面向主体0.8–1.2Soft Shadows补光Point Light相机侧前方稍高于相机0.2–0.4关闭阴影轮廓光Point Light 或 Spot Light主体背后面向相机0.3–0.5关闭阴影环境光Lighting 窗口 Environment用 Skybox避免纯色均匀填充取决于天空盒曝光不适用补光和轮廓光的阴影一般建议关掉否则阴影交叉会制造出很脏的杂色块。主光的 Shadow Distance 也要注意URP 里默认只有 10 米意味着 10 米外的物体全部没有阴影远处物件悬浮在画面上立体感瞬间崩塌。我一般会把它调到 50 米到 100 米具体看场景规模但这个值越大阴影贴图占用越高需要跟性能做平衡。2.3 室内与夜晚为什么总是一团黑自动曝光和反射探针把白天室外的光照参数原封不动搬到室内画面十有八九会黑成一片。很多人以为是灯光强度不够把平行光从 1 拉到 3结果画面反而过曝这就是没搞懂自动曝光的逻辑。Unity 里如果开启了 Adaptive Exposure自适应曝光相机会统计画面平均亮度并强行拉回中性灰室内大部分墙面是暗色时系统会拼命提亮窗外的亮部就会白成一片反过来画面里亮色太多系统又会压低曝光暗部直接死黑。这个自动调节在室内外混合的场景里是最难控制的效果也最像“呼吸感”——画面亮暗忽闪忽闪。解法很直接在 Volume 面板里找到 Exposure把 Mode 从 Automatic 改成 Fixed然后手动给 EV 值。参考范围上白天室外场景 EV 一般在 10 到 13室内灯光展厅在 6 到 9夜晚场景可能跌到 3 到 5。固定曝光后整个场景的明暗关系完全由灯光决定调完灯效所见即所得虽然少了自动适应但对展示类项目来说可控性远比自动调整重要。另一个让室内立体感打折的原因是反射探针缺失。很多金属材质和光滑瓷砖材质在高光参数调高之后仍然显得灰蒙蒙就是因为它们反射的是默认的环境 Cubemap而不是周围场景的真实色彩。在关键区域放上 Reflection Probe把 Type 设为 Baked然后在 Lighting 窗口触发一次烘焙材质表面就会出现墙面、地板和灯带的反射关系。这一步不做材质调得再细也像是贴了一张没有光泽的纸。烘焙时反射探针的分辨率也不需要拉满128 到 256 的 Cubemap 在多数室内场景已经足够256 以上主要是镜面要求很高时才考虑。提示固定曝光和反射探针这两项是我检查立体效果时最先排查的两处。很多场景“发灰”“发闷”不是材质不对而是曝光还在自动模式、场景里一个反射探针都没放。3. 材质与着色器立体感的“皮肤”怎么调才真实3.1 PBR 参数不能靠手感金属度、光滑度与贴图三件套模型是骨骼材质是皮肤。Unity 里最常接触的是 PBR 材质URP 对应 Lit内置管线对应 Standard。调 PBR 参数时最容易出现的幻觉是“把 Smoothness 拉高就显得高级”于是墙面被拉到 0.9最后看起来像一块湿漉漉的塑料薄膜。非金属墙面正确的光滑度一般在 0.2 到 0.4只有瓷砖、烤漆金属、光滑石材才值得上 0.7 以上。Metallic 参数也一样0 是纯非金属1 是纯金属金属表面的反射会带颜色倾向非金属的反射则是白色且低强度的。把这两个值当成“好看程度”来调是材质变假的主要根源。真正在立体感上起决定性作用的反而不是那几个数值而是贴图。纯色材质没有微表面细节光照上去是完美光滑的数学曲面所以看起来“假”。我建议产品展示项目至少给每个主要材质准备三张贴图Base Color基础色、Normal Map法线贴图和 Ambient Occlusion环境光遮蔽。法线贴图负责在平面上制造砖缝、拉丝纹理和轻微凹凸AO 贴图则给转角、接缝和凹陷区域预埋阴影让光线照过去时凹处自然比凸处暗。一张合适的 AO 贴图能给整个场景的立体感提升一个档次而且几乎不消耗运行时性能。下面这个表给出了几类常见材质的建议参数配合贴图使用更容易接近真实效果材质类型Base Color 参考MetallicSmoothness建议贴图组合水泥墙面偏灰的中性色00.2–0.4Normal AO磨砂金属带微色相变化的灰0.8–1.00.3–0.5Normal AO烤漆金属高饱和或深色0.90.7–0.85Normal AO 遮罩地面瓷砖浅色或花纹00.7–0.8Normal AO自发光屏幕暗色面板 发光区00.3Emission 贴图3.2 URP 管线切换的兼容性为什么色彩会变、白模突然变粉用内置管线BIRP做的好好的场景切到 URP 后出现粉红色材质这是最典型的管线翻车现场。原因其实简单URP 只认识自己那套 Lit/Simple Lit Shader旧项目里的 Standard、Legacy Diffuse 甚至自定义 Shader 不兼容Unity 会在导入时做一次自动替换但替换有漏网之鱼比如粒子系统的默认材质、第三方素材带的特效 Shader就会直接失效变成粉紫色。解决这个问题的前提是项目一开始就确定管线而不是中途切换。如果已经在 URP 项目里遇到我一般用两条腿走路一是打开 Project Settings找到 Graphics 里的可编程渲染管线设置确认每个质量等级都挂了 Universal Render Pipeline Asset二是在项目里搜索所有失效的材质球把 Shader 手动改成 URP/Lit改完再逐一检查 Alpha Clip 和 Double Side 是否和原来一致。经常被漏掉的是模型导入时自动生成的材质它们可能还挂在旧 Shader 上需要到 Model 导入面板里重新关联。URP 下还有一个小坑同一张贴图在标准和 URP 里的颜色空间表现不同。线性空间下如果贴图没有正确标记 sRGB画面会整体偏灰。遇到这种情况去 Player Settings 里确认 Color Space 是 Linear并检查贴图导入设置中 Texture Type 是 Default 时 SRGB 是否正确勾选。很多时候“颜色变了”不是调色问题而是贴图的颜色空间标签不对。3.3 运行时高亮不实例化材质MaterialPropertyBlock 的正确姿势数字孪生和产品展示里经常要在运行时让某个设备高亮、变色或闪烁。新手最常见的错误是直接拿到 Renderer 的材质调用_material.color Color.yellow结果其他使用同一材质球的物体也跟着变黄。原因在于 Unity 的材质分“共享材质”和“实例材质”直接改材质属性引擎会为了当前物体复制一份材质实例再修改实例看起来“别的物体也变了”是因为有些物体的 Renderer 共享的是同一个实例或者你加的代码访问到了共享材质。用代码给单个物体高亮的推荐做法是 MaterialPropertyBlock它的核心好处是不实例化材质而是把参数作为覆盖写到渲染命令里。下面是一个最小实现using UnityEngine; [RequireComponent(typeof(Renderer))] public class HighlightController : MonoBehaviour { private Renderer _renderer; private MaterialPropertyBlock _propBlock; [SerializeField] private Color _highlightColor Color.yellow; [SerializeField] private string _colorProperty _BaseColor; private void Awake() { _renderer GetComponentRenderer(); _propBlock new MaterialPropertyBlock(); } public void SetHighlight(bool active) { _propBlock.Clear(); if (active) { _propBlock.SetColor(_colorProperty, _highlightColor); } _renderer.SetPropertyBlock(_propBlock); } }这段代码的核心是SetPropertyBlock它不会生成新的材质实例而是把高亮颜色作为覆盖属性传给 GPU。脚本注释里写清楚传入的 Shader 属性名URP 的 Lit 默认基础色属性是_BaseColor内置管线的 Standard 则是_Color这个名称不一致是排错时最容易忽略的。另一个参数是高亮颜色如果项目使用线性颜色空间眼睛看到的高亮色会比设置值偏亮需要在 Color 字段里手动降低一点强度。MaterialPropertyBlock 也有限制它不能覆盖所有需要重构关键字的材质开关例如想从 Opaque 切到 Cutout或者切换 Shader就要走材质实例。所以我的习惯是临时状态下标优先用 PropertyBlock长期状态切换才考虑实例化材质。4. 把 SolidWorks 模型导入 Unity 做成立体素材FBX 链路、单位与装配体重建4.1 格式选择为什么是 FBX 而不是 STL以及 SolidWorks 导出设置做工业设备展示和数字孪生手里拿到的十有八九是机械工程师给的 SolidWorks 模型。直接把 SLDPRT 或 SLDASM 拖进 Unity 是不可能的必须先在 SolidWorks 里导出通用格式。不少人图省事导出 STL拖进来后发现模型是一个“实心石膏像”——没有装配体层级没有零件名称材质全部丢失连颜色都看不见。STL 本质上是三角网格描述格式只记录表面几何适合 3D 打印不适合实时渲染。正确做法是导出 FBX。FBX 能保留装配体结构、零件命名、材质引用和简单的颜色信息后续在 Unity 里还能按零件名做高亮和动画。SolidWorks 里操作路径是“文件 → 另存为 → FBX”导出选项里建议选择“实体”而不是“曲面”因为 Unity 里实体网格更稳定曲面容易产生双面渲染问题。如果 SolidWorks 插件的版本允许导出前还要检查“按实体导出”和“坐标系单位”两个选项坐标系设置直接决定模型进入 Unity 后的朝向。4.2 导入面板四件套Scale Factor、轴转换、材质搜索和网格压缩FBX 导入 Unity 后第一个翻车点一定是尺寸。SolidWorks 默认单位是毫米Unity 空间单位是米直接按默认设置导入一台 2 米高的设备会变成 2000 米高的巨物摄像机在模型里穿行画面全是灰色的内部三角面。解决的入口在 Inspector 的 Model 页签把 Scale Factor 改成 0.01这相当于把毫米换算成米。要注意这个 Scale Factor 有时会跟文件里的单位设置重复生效如果改完还是偏大再检查 Model 页签里的 File Scale 和 Scene Units。第二件必须处理的事是坐标轴。SolidWorks 的模型通常习惯 Z 轴向上Unity 是 Y 轴向上。如果导入后发现模型躺着可以在 Model 页签的 Conversion 里调整轴转换Unity 一般会识别并自动转换个别情况需要手动勾选 Bake Axis Conversion。第三个设置是 Material SearchFBX 导入时会试图在项目里找到同名材质我一般把 Search Location 设为 Recursive Up并确保贴图目录跟模型目录在同一个资源文件夹下否则材质会丢失变成灰模。网格压缩则看项目需求。移动端和 WebGL 项目建议打开 Mesh Compression设置为 High能明显减小包体但做工业展示时需要细节压缩过高会造成法线变形、倒角变尖因此 PC 端展示我一般设成 Medium并配合后面要讲的 LOD 做性能兜底。这些参数设置完毕后点击 Apply不出意外你就得到了一个正立、等比例、带零件层级结构的产品模型。4.3 装配体进来后乱成一团用编辑器脚本统一层级与枢轴即使模型正了、尺寸对了还有一个很常见的痛SolidWorks 导出的装配体带了好几层空节点零件原点散落在世界各个角落想整体平移模型时发现只能挪动根节点想给某个零件做旋转动画时枢轴又不在零件中心。处理这种模型我一般不在场景里手拖而是写一个编辑器脚本把根节点下的所有变换统一到世界原点下方并把每个零件的枢轴归一到包围盒中心。下面是一个简化的 Editor 工具脚本放在 Assets/Editor 文件夹下即可效果是选中一个模型根节点后一键将所有子物体做“摊平”处理方便后续按零件操作using UnityEngine; using UnityEditor; public class CadHierarchyFixer : EditorWindow { [MenuItem(Tools/CAD Hierarchy Fixer)] public static void OpenWindow() { GetWindowCadHierarchyFixer(CAD Fixer); } private void OnGUI() { if (GUILayout.Button(Rebase Selected Root)) { if (Selection.activeGameObject ! null) { Rebase(Selection.activeGameObject.transform); } } } private void Rebase(Transform root) { Vector3 worldCenter GetWorldCenter(root); foreach (Transform child in root) { child.SetParent(null); child.position - worldCenter; child.SetParent(root, true); } root.position Vector3.zero; } private Vector3 GetWorldCenter(Transform root) { Bounds bounds new Bounds(root.position, Vector3.zero); foreach (MeshRenderer renderer in root.GetComponentsInChildrenMeshRenderer()) { bounds.Encapsulate(renderer.bounds); } return bounds.center; } }这段脚本的用途是把装配体整体的包围盒中心算出来再把所有子物体平移到以世界原点为中心的坐标系里。参数上Rebase 函数里的SetParent(null)是临时解除父子关系确保子物体平移时不会受到根节点位置的影响SetParent(root, true)的第二个参数 true 表示保持世界位置再重新挂回根节点。脚本执行后根节点归零零件的世界坐标不再有奇怪的大偏移后面对齐到地面、旋转动画都会方便很多。注意这个工具会改变场景里物体的位置操作前先保存一份场景备份毕竟这种批量操作没有后悔药。5. unity3d立体效果常见翻车现场法线、烘焙、LOD 三类问题一次讲清5.1 边缘发白、棱线闪烁法线与 UV 缝隙的锅现象模型在场景里转动时棱线边缘一闪一闪地出现白色细线尤其在背光面更明显像给模型描了一圈白边。原因两种情况最常见。一是模型在导出时硬边和软边没有设置正确的 Smoothing GroupsUnity 在顶点上做法线平均导致光照在边缘处产生错误的过渡出现高光断裂二是 UV 贴图在接缝处没有预留边界相邻两片 UV 之间实际像素采样到了相邻区域于是边缘掺杂了全白色或其他贴图颜色。解决先回建模软件里检查 Smoothing Group硬边比如立方体棱角必须单独分一组平面过渡区域再分一组重新导出 FBX 后再看。像我们通常处理的 CAD 模型机械零件大多都是硬边倒角在 Blender 或 3ds Max 里做一次“Clear Custom Split Normals Data”再重新计算法线也能解决大部分闪烁。如果白色来自 UV 接缝则需要在贴图边缘做 2 到 4 像素的 padding或者把 UV 岛屿之间拉开间隔。5.2 烘焙后有漏光和黑斑Lightmap 分辨率与 UV 重叠现象Lighting 面板点完 Bake场景里墙角出现一条异常的亮线或者暗部出现黑色的“雷影”斑块。原因烘焙光照贴图时参与烘焙的网格依赖第二套 UV。如果模型没有第二套 UVUnity 会自动生成但自动展开经常把两个距离很远的三角形放到同一块光照纹素里于是亮部和暗部互相污染墙角处则是因为 Lightmap 分辨率不够明暗过渡带恰好落在几个粗糙纹素上形成一条“光缝”。解决去 Model 页签勾选 Generate Lightmap UV并把 Pack Margin 调到 4 以上让 UV 岛屿之间留出更多空白。如果黑斑依然存在把 Lightmap Resolution 从默认的 20 texels per unit 提高到 40 或 60再重新烘焙。注意提高分辨率会线性增加烘焙时间和运行时显存占用项目初期先用 30 左右跑通整体效果最后再局部调高。5.3 模型一多就掉帧LOD、遮挡剔除和网格简化怎么配合现象场景里放了上百台设备模型后帧数从 60 掉到 20转动视角时卡顿尤其明显。原因每个高模零件都满精度渲染GPU 的顶点处理压力极大频繁的 Draw Call 更是雪上加霜。很多从 CAD 来的高模单个零件动辄几十万三角面整个装配体几百个零件性能不崩才怪。解决优先给大件模型挂 LOD Group三个阶段分别为全精度0% 到 40% 屏幕占比、半精度40% 到 10%、低精度10% 以下。半精度和低精度模型不需要重新建模直接在 Unity 里使用 Mesh Simplifier 或导入时降低 Mesh Compression 配合脚本生成简化网格并不追求视觉百分百一致只要距离远了看不出来就行。第二招是打开 Occlusion Culling在需要烘焙遮挡数据的区域放置 Occlusion Area让相机看不到的物体直接跳过渲染色。第三招是优先推动态建筑和产品展示项目使用 GPU Instancing相同零件的材质球必须共享Static Batching 也在 Project Settings 里打开。这三招配合以后半百台设备的场景通常能从 20 帧拉回到稳定 60 帧。5.4 动态物体在烘焙场景里没有正确阴影Mixed Lighting 与 Shadowmask现象场景已经烘焙了光照贴图但运行后一辆动态的小车在地面上没有任何阴影看起来像悬浮一样。原因静态场景的光照贴图只烘焙了静态物体的明暗关系动态物体默认依靠实时光照产生阴影而如果项目把 Lighting Mode 设成了 Subtractive动态物体的阴影会被压缩得几乎看不见。解决在 Lighting 面板把 Light Mode 从 Subtractive 改为 Shadowmask并确保主光源的 Shadow Type 打开。Shadowmask 模式下远距离的静态阴影来自烘焙贴图近距离的动态阴影由实时阴影补充虽然会增加少量 GPU 开销但动态物体和静态场景的接触感会立刻真实起来。这个设置要在烘焙前就确定改完模式后再点一次 Bake否则现场仍然会对不上。6. 进阶用视频流与序列帧让立体场景真正“活”起来6.1 用 VideoPlayer 把视频流变成动态材质静态场景做得再精细也只能证明“这个模型好看”真正让用户觉得“这个对象在运转”的是动态内容。常见做法是把视频流贴到模型表面展厅大屏、设备面板、操作界面都用动态视频作为材质贴图。Unity 里做这个不需要写解码器直接用 VideoPlayer 组件就能实现。操作上我一般先建一个 Quad 或直接用产品面板的子物体给它一套 UV 对位的材质然后把 VideoPlayer 组件拖到同一个物体上把 Target Material Renderer 指向该物体的 MeshRendererTarget Material Property 填_BaseMapURP Lit 下的基础色贴图属性名内置管线是_MainTex。再把 Video Clip 赋给 VideoPlayer勾选 Play On Awake场景运行后视频就会自动铺到模型表面。如果是网络视频流则把 VideoPlayer 的 Source 设为 URL播放前先监听 prepareCompleted 事件避免画面还没准备好就播放黑屏。编码上尽量选 H.264 的 MP4兼容性最好H.265 在部分移动平台和 WebGL 上硬解支持很差会出现有声音没画面或者直接卡死的情况。带透明通道的视频建议用 VP8 编码的 WebM 或者序列帧动画单纯的绿幕视频在 URP 下抠像需要额外做 Shader工程量会大不少。我最近常用的替代方案是序列帧动画把一小段视频抽成 32 到 64 帧 PNG 序列用代码按帧率刷新材质贴图效果接近视频流但包体和内存更可控。这个做法尤其适合火焰、指示灯闪烁、水波等小面积动态效果。我一直保留一个习惯每次在 Scene 视图里觉得效果不对先把摄像机摆到人眼高度、关掉自动曝光、删掉多余的灯光再一张张检查贴图和 LOD 链。这套流程看起来慢其实是节省时间最多的办法——很多“立体感不好”的场景根源都不在那一个参数上。希望帮到你。本文还有配套的精品资源点击获取
返回列表