1. 项目概述当TARDIS遇见现实如果你是一个科幻迷尤其是《神秘博士》的粉丝那么“TARDIS”这个词对你来说一定不陌生。它不仅是博士的时间机器更是一个充满想象力的符号。而今天我们要聊的就是如何利用Unity和Vuforia让这个蓝色的警亭从荧幕中“走”出来真实地出现在你的客厅、书桌或者任何你指定的平面上。这不是一个简单的3D模型展示而是一个完整的增强现实应用它需要完成从识别现实世界中的物体到将虚拟的TARDIS模型精准、稳定地“锚定”其上并实现光影、交互等虚实融合的全过程。这个项目我们称之为“基于Unity与Vuforia的AR TARDIS实现”。简单来说这个项目的核心目标是打造一个AR应用。用户打开手机摄像头对准一个预先设定好的现实物体比如一个特定的玩具、一个打印的图片甚至是一个咖啡杯手机屏幕上就会立刻出现一个栩栩如生的TARDIS 3D模型它仿佛真的“坐”在那个物体上随着你移动手机TARDIS的视角也会随之变化保持与现实世界的空间关系。这背后Unity负责整个应用的逻辑、渲染和交互构建而Vuforia则提供了强大的计算机视觉引擎负责“看懂”现实世界并找到虚拟内容的“着陆点”。无论你是Unity的初学者想踏入AR领域还是有一定经验的开发者想深入了解模型识别这一高级特性这个项目都是一个绝佳的实践案例。它不仅涵盖了AR应用开发的核心流程更涉及了3D资产处理、空间计算、性能优化等一系列有趣且实用的技术点。2. 核心思路与技术选型解析2.1 为什么是Unity Vuforia在AR开发领域工具链的选择至关重要。我们选择Unity和Vuforia的组合是基于一套非常务实的考量。首先看Unity。它不仅仅是一个游戏引擎更是一个强大的实时3D内容创作平台。其成熟的组件系统、跨平台发布能力一键打包至iOS和Android以及庞大的资源商店使得开发效率极高。对于AR应用而言我们需要实时渲染高质量的3D模型处理用户输入如触摸、手势并管理复杂的场景状态。Unity的GameObject和Component架构让这一切变得模块化和清晰。例如我们可以轻松地为TARDIS模型添加动画组件让它门打开或者添加音频组件播放经典的TARDIS起降声效。然后是Vuforia。AR的核心挑战在于“跟踪”——如何让虚拟物体在现实世界中“站住脚”而不漂移。Vuforia是业界领先的AR SDK它提供了多种跟踪方式图像目标识别图片、圆柱体目标、物体识别以及我们本项目要用到的模型目标。模型目标识别是Vuforia的高级功能它允许你扫描一个真实的三维物体而不是扁平的图片并以此作为跟踪的基准。这意味着我们的TARDIS可以“绑定”在一个真实的、立体的物体上比如一个特定造型的积木或手办上跟踪的稳定性和沉浸感远胜于平面图片。Vuforia的模型识别引擎经过高度优化能在移动设备上实时处理点云匹配这是实现高质量AR体验的技术基石。注意Vuforia有免费版和付费版。免费版对于个人学习和原型开发完全足够但有一些限制比如每月有识别次数上限并且应用启动时有Vuforia水印。对于商业项目需要考虑升级许可证。2.2 模型目标 vs. 图像目标理解差异与优势在Vuforia中最常用的是图像目标它识别的是二维图像的特征点。你打印一张图片应用就能识别它。但图像目标有几个固有局限首先它只能从特定角度大致垂直于摄像头识别效果最好其次如果目标物体被部分遮挡识别很容易失败最后它无法感知物体的三维结构。而模型目标则完全不同。它的工作流程是你先需要有一个真实物体的3D数字模型CAD文件或高精度扫描模型或者这个物体本身。然后使用Vuforia提供的独立工具——模型目标生成器对这个3D模型或实物进行“训练”。这个工具会分析物体的几何形状生成一个独特的、包含物体三维特征信息的数据库文件。当应用运行时手机摄像头会实时捕捉画面提取特征点云并与数据库中的三维特征进行匹配。一旦匹配成功它不仅能知道“这是什么物体”还能精确计算出摄像头相对于该物体的6自由度位姿即三维空间中的位置和旋转。这对于我们的TARDIS项目意味着什么意味着我们可以找一个现实中的蓝色盒子尺寸比例接近TARDIS把它训练成模型目标。当用户用手机对准这个盒子时应用能立刻识别出它并且知道盒子的每一个角、每一条边在三维空间中的精确位置。然后我们就可以把虚拟的TARDIS模型严丝合缝地“套”在这个现实盒子的位置上。即使用户从侧面、顶部甚至只看到盒子的一角只要特征点足够跟踪依然可以维持。这种基于三维几何的跟踪抗遮挡能力、视角自由度和跟踪稳定性都远超二维图像识别。3. 前期准备与环境搭建3.1 软硬件工具清单工欲善其事必先利其器。在开始编码之前请确保你准备好了以下“武器”Unity Hub Unity编辑器建议使用Unity 2021 LTS或2022 LTS版本。长期支持版更稳定与Vuforia插件的兼容性也经过充分测试。避免使用最新的技术预览版以免遇到未知的插件兼容问题。通过Unity Hub安装时记得勾选Android Build Support和/或iOS Build Support模块这取决于你的目标发布平台。Vuforia Engine开发账号前往Vuforia开发者官网注册一个免费账号。这个账号用于管理你的“许可证密钥”和“目标数据库”是使用Vuforia服务的通行证。Vuforia Engine for Unity插件包登录Vuforia开发者门户后在“Downloads”页面下载对应你Unity版本的.unitypackage插件文件。通常只需下载最新稳定版即可。模型目标生成器这是一个独立的桌面应用程序同样在Vuforia开发者门户的“Downloads”页面获取。它用于创建和训练模型目标数据库。注意这个工具对电脑性能有一定要求尤其是处理复杂模型时。目标物体与3D模型现实目标物体你需要一个实体的、形状和尺寸相对固定的物体作为识别目标。一个蓝色的、近似长方体的纸盒、木盒或塑料盒是绝佳选择。它的大小最好能放在桌面上且表面有一些纹理纯色光滑表面不利于特征提取。虚拟TARDIS模型你需要一个TARDIS的3D模型文件.fbx或.obj格式。你可以在一些3D模型网站如Sketchfab, TurboSquid上寻找免费或付费的模型或者使用Blender、Maya等3D软件自己制作一个简易版本。模型的多边形数量不宜过高要兼顾移动端渲染性能。测试设备一部支持ARCoreAndroid或ARKitiOS的智能手机。大部分近年发布的中高端机型都支持。这是最终测试和体验成果的必备工具。3.2 Unity项目初始化与Vuforia插件导入创建新项目打开Unity Hub新建一个3D项目。给项目起个名字比如“AR_TARDIS_Project”。模板选择3D Core即可。导入Vuforia插件在Unity编辑器中点击菜单栏的Assets - Import Package - Custom Package...找到你下载的Vuforia Engine .unitypackage文件点击打开。在导入对话框中通常保持全选直接点击“Import”。导入过程可能会花费一点时间Unity会编译相关的脚本和资源。配置Vuforia许可证导入完成后Unity可能会自动打开Vuforia Configuration面板。如果没有你可以在菜单栏找到Vuforia Engine - Configuration。在这里最关键的一步是填入你的“App License Key”。回到Vuforia开发者门户点击“License Manager”创建一个新的开发许可证类型选择“Development”复制生成的许可证密钥。将其粘贴到Unity中Vuforia Configuration面板的“App License Key”字段。这一步是必须的否则你的应用将无法使用Vuforia的识别功能。3.3 获取并处理TARDIS 3D模型资产从网上下载的3D模型往往不能直接使用需要一些预处理。导入模型将你的TARDIS模型文件如TARDIS.fbx直接拖入Unity项目的Assets文件夹中。检查模型设置在Project窗口选中导入的模型文件在Inspector面板中检查缩放因子确保模型尺寸正确。如果模型在场景中显示得巨大或微小调整“Scale Factor”值如改为0.01或1。材质和纹理检查材质球是否正常导入。有时贴图路径会丢失需要手动重新指定贴图文件。确保所有材质都是移动端友好的标准着色器如Standard或Universal RP的Lit Shader。动画如果模型带有动画如门开关确保在“Rig”和“Animation”标签页中正确设置了动画类型通常为Generic并导入了动画片段。优化模型为了移动端性能可以考虑进行优化使用Unity的Mesh Compression网格压缩选项。检查多边形数量如果过高可以考虑在3D软件中或使用Unity的简化工具进行减面。合并使用相同材质的子网格减少Draw Call。4. 核心环节一创建与训练模型目标数据库这是整个项目最具挑战性也最核心的一步决定了AR识别的精度和鲁棒性。4.1 使用模型目标生成器进行扫描训练我们假设你有一个现实中的蓝色盒子作为目标物体。启动模型目标生成器打开安装好的Model Target Generator工具。创建新项目工具会引导你创建一个新项目。你需要为你的目标物体命名例如“BlueBox_Target”。选择训练方式你有两种选择从3D模型训练如果你有这个蓝色盒子的精确3D CAD模型.obj, .fbx, .stl等这是最佳选择。直接导入模型文件。工具会基于模型的几何结构生成特征数据精度最高。从实物扫描训练如果你没有数字模型就需要对实物进行扫描。你需要按照工具的指引手持手机需安装配套的扫描App或使用深度摄像头从多个角度环绕拍摄物体获取其三维点云数据。这个过程要求环境光照充足、物体表面纹理清晰。定义引导视图和识别点无论哪种方式接下来都需要定义“引导视图”。这是用户最容易识别到物体的角度通常是一个物体的正面或3/4侧面。你需要在3D视图或点云数据中调整一个清晰的视角并将其设为主引导视图。你还可以添加多个辅助引导视图以提升从不同角度识别的成功率。设置识别点在物体的3D模型上手动点击放置一些“识别点”。这些点应该分布在物体表面显著的特征位置如边角、凹槽、logo处。Vuforia会重点利用这些点的几何关系进行匹配。放置足够多且分布均匀的识别点至关重要。训练与生成完成设置后点击“Train”按钮。工具会开始计算生成一个模型目标数据库文件.unitypackage或.xml/.dat文件。这个过程可能需要几分钟到几十分钟取决于模型的复杂度和电脑性能。4.2 将数据库导入Unity并配置场景导入数据库训练完成后你会得到一个.unitypackage文件。在Unity中像导入其他资源包一样将其导入。导入后在Project窗口的Assets文件夹下你会看到一个以你目标命名的数据库资源例如BlueBox_Target。创建AR相机删除场景中默认的Main Camera。在菜单栏选择GameObject - Vuforia Engine - AR Camera。这会将主摄像机替换为Vuforia AR摄像机它负责管理设备摄像头并处理跟踪数据。添加模型目标在菜单栏选择GameObject - Vuforia Engine - Model Target。这会在场景中创建一个模型目标对象。关联数据库选中刚创建的ModelTarget对象在Inspector面板中找到“Model Target Behaviour”组件。在“Database”下拉菜单中选择你刚刚导入的数据库如BlueBox_Target。在“Model Target”下拉菜单中选择你定义的目标名称。配置跟踪模式在Model Target Behaviour组件中有一个重要的设置是“Tracking Mode”。对于静态物体通常选择“DEFAULT”即可。如果你希望物体在识别后可以被移动比如用户拿起了盒子则需要更复杂的扩展跟踪设置这超出了本基础项目的范围。实操心得训练实物时光照极其重要。务必在光线均匀、无强烈反光的环境下进行扫描。物体表面的纹理越丰富、越不规则生成的特征就越独特识别效果越好。一个纯蓝色的光滑盒子可能是最糟糕的目标之一可以考虑在盒子上贴一些不规则的图案或打印的纹理贴纸来增强特征。5. 核心环节二实现TARDIS的虚实融合与场景搭建现在虚拟的“锚点”模型目标已经设置好了接下来就是把我们的TARDIS“放”上去。5.1 将TARDIS模型绑定至目标设置TARDIS为子物体在Hierarchy窗口中将你导入并处理好的TARDIS模型Prefab或GameObject直接拖拽到ModelTarget游戏对象上使其成为ModelTarget的子物体。调整位置与旋转由于模型目标已经定义了现实物体的坐标空间虚拟TARDIS的初始位置Local Position和旋转Local Rotation就决定了它相对于现实物体的位置。你需要仔细调整TARDIS的Transform值。通常先将TARDIS的局部位置Position归零使其原点与模型目标的原点重合。然后根据你的现实目标物体蓝色盒子与虚拟TARDIS模型在尺寸和朝向上的差异进行缩放Scale、旋转Rotation和细微的位置偏移。你可能需要反复在Unity编辑器中调整并在真机上测试才能达到“严丝合缝”的效果。理解坐标空间关键要理解此时TARDIS的变换是基于“模型目标坐标系”的。当手机识别到现实中的蓝色盒子时Vuforia会计算出手机摄像头与该盒子坐标系之间的变换矩阵。Unity引擎则利用这个矩阵将整个ModelTarget及其子物体TARDIS渲染到正确的屏幕位置从而实现了虚拟物体与现实世界的对齐。5.2 增强沉浸感光照、阴影与音效一个漂浮在空中、没有光影交互的模型会显得非常“假”。为了让TARDIS看起来像是真实世界的一部分我们必须处理光照和阴影。环境光照估计Vuforia AR Camera组件通常自带环境光照估计功能。确保该选项被勾选。这样Vuforia会尝试从摄像头画面中估计当前环境的光照强度和色温并自动调整场景中受环境光影响的材质使虚拟物体的亮度和色调与真实环境匹配。使用真实光源在场景中添加一个方向光Directional Light并使其旋转角度与真实世界中的主要光源如窗户、顶灯方向大致匹配。你可以根据真机测试效果动态调整光的强度和颜色。启用实时阴影确保TARDIS模型的材质能够接收和投射阴影。在Unity的Quality Settings中为移动平台设置合适的阴影分辨率和距离。注意实时阴影对性能消耗较大在移动设备上需要谨慎使用。可以考虑使用效率更高的软阴影或烘焙光照贴图如果场景固定。添加音效在TARDIS模型上添加一个AudioSource组件。你可以准备两段音频一段是TARDIS标志性的起降轰鸣声另一段是开门的声音。通过编写简单的脚本在模型被成功识别跟踪状态变为TRACKED时播放起降声在用户点击屏幕时播放开门声并触发开门动画。5.3 基础交互实现点击与动画让TARDIS能够响应用户操作能极大提升体验。编写交互脚本在TARDIS模型上创建一个新的C#脚本例如TARDISController.cs。检测点击在脚本的Update方法中检测屏幕触摸。当触摸开始时使用Raycast从摄像头向触摸点发射一条射线检测是否击中了TARDIS模型的碰撞体。using UnityEngine; public class TARDISController : MonoBehaviour { private Animator animator; private AudioSource audioSource; public AudioClip doorOpenSound; public AudioClip doorCloseSound; private bool isDoorOpen false; void Start() { animator GetComponentAnimator(); audioSource GetComponentAudioSource(); } void Update() { if (Input.touchCount 0 Input.GetTouch(0).phase TouchPhase.Began) { Ray ray Camera.main.ScreenPointToRay(Input.GetTouch(0).position); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.transform this.transform) // 点击到了自己 { ToggleDoor(); } } } } void ToggleDoor() { isDoorOpen !isDoorOpen; if (animator ! null) { animator.SetBool(IsOpen, isDoorOpen); } if (audioSource ! null) { audioSource.clip isDoorOpen ? doorOpenSound : doorCloseSound; audioSource.Play(); } } }配置动画确保TARDIS模型带有Animator组件和一个动画控制器。在动画控制器中设置两个状态“Idle_Closed”和“Idle_Open”并通过“IsOpen”布尔参数进行切换。你需要制作或导入TARDIS门打开的动画片段并关联到这两个状态上。添加碰撞体为了让射线检测生效必须为TARDIS模型至少是门的部分添加一个碰撞体组件如Box Collider并调整其大小以匹配模型。6. 项目构建、部署与真机测试6.1 Android平台构建设置以Android为例切换平台打开File - Build Settings在Platform列表中选择“Android”点击“Switch Platform”。Player Settings点击“Player Settings”按钮打开项目设置。Other Settings区域IdentificationBundle Identifier填写一个唯一的包名格式如com.YourCompany.ARTARDIS。Minimum API Level设置为至少Android 7.0 ‘Nougat’ (API level 24)这是ARCore支持的最低版本之一。建议设为更高版本以覆盖更多设备。ConfigurationScripting Backend选择IL2CPP。它比Mono性能更好且是64位应用所必须的。Target Architectures勾选ARM64。这是现代Android设备的架构必须勾选才能使用ARCore。XR Plug-in Management在左侧找到此选项确保ARCore插件已被启用通常导入Vuforia后会自动处理但请确认。Vuforia特定设置回到Build Settings窗口点击“Player Settings”旁边的“...”按钮选择“Add Open Scenes”添加当前场景。确保在“Scenes In Build”列表中包含了你的AR场景。6.2 构建APK与安装测试连接设备用USB数据线将你的Android手机连接到电脑。在手机上启用“开发者选项”和“USB调试”模式。执行构建在Build Settings窗口中点击“Build And Run”。Unity会开始编译项目。第一次构建可能会花费较长时间因为它需要下载Android SDK/NDK组件并构建所有资源。安装与运行构建完成后APK文件会自动安装到你的手机上。确保手机上已安装Google Play Services for AR这是ARCore的运行环境。首次运行应用时系统可能会提示你下载或更新此服务。真机调试这是最重要的环节。在真实环境中测试你的应用识别测试用手机摄像头对准你的蓝色盒子目标。观察识别速度、准确性和稳定性。尝试从不同角度、不同距离、不同光照条件下进行测试。跟踪测试识别成功后缓慢移动手机或绕着目标物体走动。观察TARDIS模型是否牢牢“粘”在盒子上有没有发生漂移、抖动或突然消失的情况。交互测试点击屏幕上的TARDIS测试门开关动画和音效是否正常触发。6.3 iOS平台构建注意事项如果面向iOS平台流程类似但有一些关键区别需要Mac电脑和XcodeiOS应用必须在Mac上使用Xcode进行最终编译和签名。切换平台为iOS在Unity Build Settings中切换到iOS平台。配置Player SettingsBundle Identifier设置唯一的App ID。Target SDK选择最新的iOS版本。Camera Usage Description必须填写请求摄像头权限的描述例如“此应用需要使用摄像头来实现增强现实功能”。生成Xcode工程点击“Build”选择一个文件夹Unity会生成一个Xcode项目。在Xcode中处理用Xcode打开生成的工程。确保项目的Signing Capabilities中设置了正确的开发者团队和证书。在Info.plist中确认NSCameraUsageDescription已正确添加。连接iPhone设备选择它作为运行目标然后点击运行按钮进行编译和安装。同样需要确保设备支持ARKit。7. 性能优化与进阶技巧一个流畅的AR体验离不开性能优化。移动设备的算力和电量有限必须精打细算。7.1 渲染性能优化模型优化多边形数量TARDIS模型的面数应控制在1.5万面以下为宜。使用LODLevel of Detail技术当模型距离摄像头较远时自动切换为面数更少的版本。纹理压缩所有贴图使用移动端高效的压缩格式如ASTC。控制纹理尺寸避免使用4096x4096这样的超大贴图512x512或1024x1024通常足够。合并绘制调用如果TARDIS由多个部分组成尽量合并使用相同材质的网格减少Draw Call。光照与阴影优化如果环境光估计已足够可以考虑移除或降低场景中动态实时光源的强度。阴影是性能杀手。考虑使用性能开销更低的“Soft Shadows”或直接关闭实时阴影使用烘焙光照贴图来模拟静态阴影如果场景光照固定。后期处理谨慎使用屏幕空间环境光遮蔽、泛光等后处理效果它们非常消耗性能。在移动端AR中保持画面清晰流畅比华丽的特效更重要。7.2 Vuforia特定优化数据库优化在Vuforia开发者门户上传你的模型目标数据库时可以选择“优化”选项。优化后的数据库文件更小加载更快在某些设备上识别性能更好。主动识别区域在Model Target Behaviour组件中可以设置“Activate Guided Tracking”和定义“Tracking Range”。这可以引导用户在最佳距离和角度进行识别提高首次识别成功率。多目标管理如果你的应用未来需要识别多个不同的物体不要在场景中同时激活所有ModelTarget。可以根据需要动态加载和激活不同的目标数据库以节省内存和CPU开销。7.3 进阶功能探索当基础功能实现后你可以尝试以下进阶功能让体验更上一层楼平面检测与遮挡结合Vuforia的Ground Plane或AR Foundation的平面检测功能可以让TARDIS不仅站在盒子上还能“走”到真实的地面上。更进一步可以实现虚拟物体被真实物体遮挡的效果如人走到TARDIS后面这需要深度感知摄像头如iPhone的LiDAR或使用环境深度API进行复杂的渲染排序。物理交互使用Unity的物理引擎如NVIDIA PhysX为TARDIS添加刚体Rigidbody和碰撞体让用户可以通过触摸“推动”它或者让虚拟的小球撞击TARDIS并产生物理反应。云端识别Vuforia支持Cloud Recognition可以将目标数据库放在云端。这样你可以动态更新需要识别的物体而无需用户更新整个App。这对于需要识别大量不同物体的应用场景非常有用。录制与分享实现屏幕录制功能让用户可以将他们与AR TARDIS互动的精彩瞬间录制成视频并分享到社交平台。8. 常见问题排查与调试心得在开发过程中你几乎一定会遇到下面这些问题。这里是我踩过坑后总结的排查清单。问题现象可能原因解决方案应用启动后黑屏只有Vuforia水印1. 摄像头权限未获取。2. Vuforia许可证密钥无效或未配置。3. 设备不支持ARCore/ARKit。1. 检查AndroidManifest/iOS Info.plist中的权限声明并在运行时动态请求权限。2. 在Vuforia Configuration面板确认App License Key正确无误并在开发者门户检查该许可证是否处于“激活”状态。3. 检查设备是否在ARCore/ARKit的支持列表中。无法识别目标物体1. 模型目标数据库未正确导入或激活。2. 现实物体光照太暗/太亮/反光。3. 物体表面缺乏纹理特征。4. 摄像头对焦不准。1. 在ModelTarget对象的Inspector中确认Database和Model Target名称选择正确。2. 在光照均匀的环境下测试避免直射强光和镜面反光。3. 尝试在目标物体上增加一些独特的、高对比度的纹理贴纸。4. 在应用中集成手动对焦功能或确保自动对焦已开启。识别后跟踪不稳定模型抖动或漂移1. 模型目标训练质量不高识别点不足或分布不均。2. 现实物体被移动但未启用扩展跟踪。3. 设备摄像头传感器存在剧烈抖动或运动模糊。1. 返回Model Target Generator增加更多、更均匀分布的识别点并重新训练数据库。2. 对于静态展示确保物体放置稳定。若需移动研究Vuforia的扩展跟踪或模型目标引导模式。3. 提示用户保持手机稳定或尝试在代码中对跟踪位置进行平滑滤波如使用低通滤波器。TARDIS模型尺寸/位置不对1. TARDIS模型相对于ModelTarget的本地变换未调整好。2. 现实目标物体与训练时使用的3D模型尺寸不一致。1. 在Unity场景中仔细调整TARDIS子物体的Local Position, Rotation和Scale。使用真机进行微调以现实物体为参考。2. 确保训练时使用的3D模型尺寸与现实物体1:1匹配。如果使用实物扫描尺寸通常是自动匹配的。应用在真机上非常卡顿1. 3D模型面数过高或纹理过大。2. 使用了高开销的实时阴影或后处理效果。3. 脚本中存在每帧高消耗的计算。1. 使用Unity Profiler连接真机分析性能瓶颈。优化模型和纹理。2. 禁用或降低阴影质量移除不必要的后处理。3. 优化代码避免在Update中做复杂运算使用缓存、协程等技术。构建失败报错找不到ARCore/ARKit1. 未安装或未启用对应的XR插件。2. Player Settings中的架构或API级别设置不正确。1. 通过Package Manager或Build Settings中的XR Plug-in Management确保ARCore (Android) 或 ARKit (iOS) 插件已安装并启用。2. 对于Android确认Target Architectures勾选了ARM64对于iOS确认使用了支持ARKit的版本。调试心得AR开发离不开真机测试。Unity编辑器的模拟器功能有限很多跟踪和性能问题只有在真机上才会暴露。养成一边开发一边用真机快速测试的习惯。可以开启Vuforia的调试信息显示在屏幕上查看跟踪状态、特征点数量等这对定位识别问题非常有帮助。另外保持耐心模型目标的训练和调优是一个需要反复迭代的过程第一次就达到完美效果的概率很低根据测试结果不断调整训练参数和场景设置是关键。