MaaEnd MapNavigator寻路系统:NAVMESH目标寻路、滑索规划与录制工具全解析
MaaEnd MapNavigator寻路系统NAVMESH目标寻路、滑索规划与录制工具全解析【免费下载链接】MaaEndMaaEnd 终末地小助手基于视觉 AI 的「明日方舟终末地」自动化工具项目地址: https://gitcode.com/gh_mirrors/maa/MaaEndMaaEnd 是「明日方舟终末地」的视觉 AI 自动化工具其中的MapNavigator 寻路组件负责让角色自动走到指定位置只需给出目标坐标它就能基于 navmesh 三角网格自动规划路线并可叠加滑索规划大幅缩短路程。本文面向新手讲清 NAVMESH 目标寻路的用法与原理、滑索规划如何生效以及配套 Web 录制工具 tools/MapNavigator 的完整工作流。MapNavigator 是什么MaaEnd 的导航核心MapNavigator 是 MaaEnd 的寻路组件给定目标位置自动规划路线并控制角色抵达核心实现在 agent/cpp-algo/source/MapNavigator/ 目录。它的分工很清晰模块职责MapLocator逐帧识别角色在地图上的位置与朝向MapNavigator基于定位结果在 navmesh 上规划路线、控制角色移动MapNavigator 录制工具浏览器 Web 工具负责在地图上打点、录制轨迹、预览规划三者数据互通工具里看到的规划预览与游戏内运行时读取的是同一份 base.nav.gz 数据、同一套 C 算法预览走通基本等于实机可走。快速上手如何用 NAVMESH 实现目标寻路NAVMESH 是 MapNavigator 的目标寻路动作——只写终点坐标不需要起点、中间点和区域声明运行时根据当前定位自动规划。这是最简单、最推荐的用法。五步完成一次导航启动工具在项目根目录执行uv run map-navigator浏览器自动打开路径编辑页选择层级点击「选择底图与层级」选中目标所在的底图或 tier标记目标选「添加/选择」在地图上点击目标位置手工点默认生成NAVMESH点复制点击「复制路径」粘贴粘贴到 Pipeline 节点的custom_action_param.path中。得到的节点非常干净{ GotoTarget: { recognition: DirectHit, action: Custom, custom_action: MapNavigateAction, custom_action_param: { path: [ { action: NAVMESH, target: [720, 630] } ] } } }这个写法已用于 MaaEnd 的自动采集、环境监测等多条生产路线见 docs/zh_cn/developers/components/map-navigator.md。分层底图与重叠楼层怎么写分层底图tier每层是独立坐标系。点在 tier 上时工具会一并导出target_tier字段声明坐标来源层级无需手动换算回 base 坐标。重叠可走面target_deck_y走廊、天桥、屋顶可能压在同一个二维坐标上。选中NAVMESH点后侧栏会列出该点的重叠面选一项即可写入target_deck_y确保角色停在你想要的那一层而不是先够到哪张停哪张。NAVMESH 寻路原理路线是怎么算出来的日常使用可跳过本节但了解原理能帮你判断预览走不通该找谁。加载 navmesh 数据包base.nav.gzGLB 三角面烘焙出的BNAV拓扑图可直接做 A*根据当前定位区域推断对应 zone按当前楼层高度做落点吸附把三角面栅格化为带高度区间的格子在格子图上执行A*再对结果做净空约束下的拉直规划结果展开为普通RUN路径点交给移动执行链路。其中楼层吸附是多层地图的关键同一平面坐标叠着多层三角面不区分高度时起点或终点可能被吸到错误楼层表现为穿墙或不可达。BaseNav 为每个 zone 烘焙了楼层高度规划时按高度带筛选候选面多层区域的落点是确定的。规划器本体见 agent/cpp-algo/source/Navmesh/BaseNavPlanner.h 与 agent/cpp-algo/source/MapNavigator/navmesh_path_expander.h。滑索规划路线如何抄近路终末地地图里遍布滑索步行要绕一大圈的路坐索一跳就到。MapNavigator 支持路线级滑索开关勾选工具的「启用滑索规划桌面端」或给节点写zip: true后规划器会逐段比较两条路线纯步行A* 出来的完整折线滑索桥接走到上索点 → 连续多跳滑索 → 从下索点步行到终点。只要滑索路线比步行显著更省有min_gain门槛就选滑索走不通的区间还能靠滑索链把不连通的步行区桥接起来。执行时若某一跳失败运行时会丢弃该链剩余跳数等定位稳定后重新接入最近的可达点。几个实用细节滑索记录按账号隔离工具导入坐标时会生成伪匿名账号标识运行时自动匹配当前游戏账号滑索坐标标定数据见 assets/data/MapNavigator/zipline_frames.json启用滑索后中间的移动点可被全局规划跳过必须执行的点要标required: trueZONE/HEADING/COLLECT/DIG/FIND始终保留滑索链的规划与执行逻辑分别在 zipline_leg_planner.h 和 zipline_ride_machine.h。路径录制含交互、过图的路线怎么走NAVMESH只负责移动不推断业务语义。当路线需要交互、过图、跳台、等待传送时应改用实机录制把路线实际走一遍工具记录逐点轨迹。录制流程选择连接方式支持Windows 窗口句柄Win32、Android ADB 桥接和Linux-Gamescope连接状态探测成功后才可开始点击「开始录制」切回游戏按期望的自动执行方式走一遍途中可用热键G复制当前坐标X在当前位置插入严格到达点标记交互点、跳台落点等关键位置;停止录制后工具自动整理轨迹统一格式、跨区域边界两侧自动标记PORTAL、按区域分段显示在页面上修改需要语义的点INTERACT/JUMP/TRANSFER等点击「复制路径」导出。编辑与实机试跑每个路点可设置动作RUN / SPRINT / JUMP / FIGHT / INTERACT / PORTAL / TRANSFER / COLLECT / DIG / NAVMESH等、严格到达落点更精确和路径必经required实机试跑改完路线按F3直接开跑F4终止会话在两轮之间保持连接不必重连。试跑时页面持续绘制 MapLocator 的真实定位轨迹与规划路线对照一目了然采集路线尤其方便走到采集物旁停下、停止录制把对应点动作改为COLLECT/DIG运行时到点后自动触发采集子任务全程不退出导航。 两种点可以在同一条path里混排长距离移动用NAVMESH需要精确语义的局部段用录制点这是官方推荐的组合方式。禁区No-Go把不能走的地方从网格中挖掉地图上总有规划器不知道的危险或障碍——深渊边缘、需要特定机关才能通过的段、剧情锁死区域。工具提供独立的禁区编辑页签选中「禁区」页签在地图上圈出多边形区域橡皮筋拖选可命名如水池围栏、nogo-2并按楼层范围限定生效层数保存后规划时这些区域的可走面会被整体剔除路线不再经过配合路径编辑页的红色三角形标记禁区与作者路点在同一视图内对照检查。规划失败时页面会直接给出运行时原因起点离网、端点不连通、目标面不可达等起终点落在两个不连通区域时还会自动标出断口位置——禁区是否圈对了当场就能验证。进阶能力一览功能说明3D 视角按 navmesh 真实高度只读显示当前网格支持观察者漫游WASD 升降与轨道环绕可点选读取坐标与高度日志分析纯离线只读导入 MaaEnd 日志包复盘每次导航为什么选步行还是滑索逐段展示步行成本、滑索成本、节省量与实际落地轨迹断言模式框选矩形区域导出MapLocateAssertLocation节点用于导航前确认角色已在预期区域快速测试 / 规划当前片段任意两点规划验证「寻路诊断」可分阶段查看 A*、拉直、最终路线2D / 3D 切换、图层面板底图、NAVMESH 网格、滑索架图层跨模式保持常见问题速查Q预览走不通实机会不会通预览与运行时同数据同算法常规场景一致。实机仍受定位波动、地形动态变化影响外层 Pipeline 要保留失败兜底。QNAVMESH什么时候该换成录制路线含交互、过图、跳台、外力传送时。这些语义NAVMESH无法推断应录制后手工标注动作点。Q导出格式可以直接用吗可以。默认复制的是path本体直接粘进MapNavigateAction.custom_action_param.path即可启用滑索时按钮变为「复制完整参数」导出{ path: [...], zip: true }。更多细节请参阅 tools/MapNavigator/README.md 与 开发手册 - MapNavigator 寻路系统。【免费下载链接】MaaEndMaaEnd 终末地小助手基于视觉 AI 的「明日方舟终末地」自动化工具项目地址: https://gitcode.com/gh_mirrors/maa/MaaEnd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考