docs: 新增「初次部署(从零跑起来)」;去混淆字符与真实内网信息

- README.md / README.txt 新增初次部署章节:前置条件、获取代码、首次运行、
  配置服务端地址(API 3000 / 管理端 3001 分离)、与 Android 的 WebSocket 联通、
  打包导出、自检清单、常见问题
- 三库同源契约:':=' 写法修回、去掉真实 MariaDB 版本串
- 全文去除易被 Gitea 判为「模棱两可 Unicode」的字符(- - ... -> 取代 — – … § →)
- 真实内网地址与库名改占位符
This commit is contained in:
2026-09-15 21:33:27 +08:00
parent baec8fce97
commit 9f7b926a9a
21 changed files with 387 additions and 181 deletions
+138 -35
View File
@@ -1,5 +1,5 @@
================================================================
OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
OpenDance Studio -- Windows 客户端 v0.1.0 使用说明
================================================================
摄像头跳舞评分系统的核心体验端:接收 Android 辅助 App 通过 WebSocket
@@ -8,9 +8,9 @@ OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
本客户端只接收关键点坐标,不接收、不存储任何视频画面。
----------------------------------------------------------------
--
一、快速开始
----------------------------------------------------------------
--
1. 解压后得到:
OpenDance.exe 主程序
@@ -24,19 +24,122 @@ OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
3. 双击 OpenDance.exe 启动。
4. 在主界面确认「服务端地址」(默认 http://127.0.0.1:3000),
点击「保存并测试」;顶部应显示「服务端正常 | DB ...」。
点击「保存并测试」;顶部应显示「服务端正常 | DB...」。
5. 点击「刷新目录」,左侧会出现已发布的曲目、动作与模型。
6. 在 Android 手机上启动「OpenDance 辅助 App」,填入本机显示在
主界面上的接收地址(形如 ws://192.168.x.x:8765/pose)并连接。
主界面上的接收地址(形如 ws://<本机局域网地址>:8765/pose)并连接。
连接成功后主界面会提示「已连接 N 台设备」。
7. 依次选择曲目 → 动作 → 模型,点击「开始跟练」。
7. 依次选择曲目 -> 动作 -> 模型,点击「开始跟练」。
----------------------------------------------------------------
二、界面说明
----------------------------------------------------------------
--
二、初次部署(从零跑起来)
--
本节面向第一次拿到源码、要从零把客户端跑起来的人;只运行已打包好的
OpenDance.exe 的用户看第一节即可。
1. 前置条件
- 操作系统:Windows 10/11(x86_64)。开发与导出可在 Windows 或 Linux。
- Godot 4.7.x 标准版(GDScript)。不需要 .NET / C# 版。
- 渲染后端为 GL Compatibility,运行需 OpenGL 3.3 级别的显卡与驱动。
- 导出模板:仅打包导出时需要,必须与编辑器完全同版本。
- 磁盘:编辑器 + 导出模板数百 MB;导出产物 exe 约 104 MB + pck 约 107 KB。
- 网络:能访问 Web 服务端 API(默认 TCP 3000);与手机同一局域网,
并放行本端 TCP 8765 入站。
2. 获取代码
git clone https://<Gitea 地址>/<owner>/opendance-windows
cd opendance-windows
3. 编辑器内首次运行
- Godot 项目管理器 -> 导入 -> 选择 project.godot。
- 首次导入会执行资源导入(生成 .godot/),可能等待数十秒到数分钟;
不要在导入中途关闭编辑器。
- 主场景已配置为 res://scenes/main.tscn,按 F5 运行。
- 首次运行会生成:
%APPDATA%\Godot\app_userdata\OpenDance Studio\opendance.cfg
%APPDATA%\Godot\app_userdata\OpenDance Studio\logs\godot.log
4. 配置服务端地址
主界面顶部「服务端地址」填好后点「保存并测试」,配置字段名为 api_base_url:
http://<服务器地址>:3000
http://192.0.2.10:3000
注意:客户端只访问 API 端口(默认 3000);管理端页面在管理端口
(默认 3001),客户端不使用。保存后点「刷新目录」。
5. 与另两端的联通
- Android 辅助 App -> 本端 WebSocket:本端是服务端,默认监听
0.0.0.0:8765,路径 /pose,子协议 opendance.pose.v1。Android 端填写
本端主界面显示的「接收地址」,形如 ws://<本机局域网地址>:8765/pose。
本端可在 opendance.cfg 改 listen_host / listen_port / ws_subprotocol,
改后点「重新连接接收服务」生效。
- Web 服务端:需先在服务端发布曲目 / 动作 / 模型,动作还须完成关键点
预处理,客户端才有可选内容。
6. 打包导出
# Linux(推荐)
GODOT_BIN=/path/to/godot bash build/export-windows.sh release
# Windows(兜底)
powershell -ExecutionPolicy Bypass -File build\export-windows.ps1
产物在 build/windows/:OpenDance.exe(约 104 MB,PE 头 MZ 校验通过)
+ OpenDance.pck(约 107 KB,必须与 exe 同目录);可能附带
OpenDance.console.exe。
打成发布包(可选):
bash build/package-release.sh 0.1.0
得到 dist-release/opendance-windows-v0.1.0.zip,内含 OpenDance.exe、
OpenDance.pck、THIRD_PARTY.md、README.txt、contracts/。
7. 自检清单
1) 一键验证:GODOT_BIN=/path/to/godot bash build/verify.sh
预期末行「验证全部通过」。
2) 无头测试:$GODOT --headless --path . --script res://tests/run_tests.gd
预期「== 结果:580 通过 / 0 失败 ==」与「全部通过」(缺 VRM 素材或
服务端不可达时相关用例跳过,数字会减少)。
3) 启动冒烟:$GODOT --headless --path . --quit-after 180
预期无 SCRIPT ERROR / ERROR:,退出码 0。
4) 日志:%APPDATA%\Godot\app_userdata\OpenDance Studio\logs\godot.log
预期无 SCRIPT ERROR。
5) 服务端联通:主界面点「保存并测试」后顶部显示「服务端正常 | DB ...」。
8. 部署相关常见问题
Q: 模型加载失败:缺少骨骼
A: 模型无 Skeleton3D,或骨骼命名不在映射表内;换用标准 VRM(VRoid
Studio 导出)。人形覆盖率低于 60% 会提示「骨骼覆盖偏低」。
Q: 连不上服务端 / 显示「服务端不可达」
A: 确认 Web 服务端已启动,api_base_url 指向 http://<服务器地址>:3000
(不要填管理端口 3001);访问 http://<服务器地址>:3000/health 应返回 200。
Q: 导出失败:未找到导出模板
A: 安装与编辑器同版本的 export templates。Linux 放
~/.local/share/godot/export_templates/<版本>.stable/;
Windows 放 %APPDATA%\Godot\export_templates\<版本>.stable\。
Q: 接收服务启动失败(端口 8765 可能被占用)
A: 改 opendance.cfg 的 listen_port 后点「重新连接接收服务」,
并同步修改 Android 端填写的接收地址。
--
三、界面说明
--
主界面
- 三栏选择:曲目 / 动作(仅列出已完成预处理的动作)/ 模型(VRM 优先)
@@ -56,9 +159,9 @@ OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
关于页面
- 版本与契约版本、隐私说明、完整可滚动的第三方开源项目声明
----------------------------------------------------------------
三、配置文件
----------------------------------------------------------------
--
四、配置文件
--
首次运行会在以下位置生成配置文件,可直接用文本编辑器修改:
@@ -74,9 +177,9 @@ OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
score_tolerance 评分容差:平均每步代价达到该值即 0 分(默认 0.25)
mirror_preview 镜像预览
----------------------------------------------------------------
四、防火墙与网络
----------------------------------------------------------------
--
五、防火墙与网络
--
本客户端需要接受 Android 设备的入站连接:
@@ -86,9 +189,9 @@ OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
若端口被占用,可修改 opendance.cfg 中的 listen_port 后重启。
----------------------------------------------------------------
五、评分说明
----------------------------------------------------------------
--
六、评分说明
--
- 每帧特征 = 33 点 × (x,y,z) + 9 个关节角余弦 = 108 维
(与 Web 服务端预处理产物、Android 端推流结构完全一致)
@@ -97,9 +200,9 @@ OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
- 得分 = clamp(1 − 平均代价 / 容差, 0, 1) × 100,并做指数平滑
- 等级:S ≥ 95,A ≥ 85,B ≥ 70,C ≥ 55,D 其余
----------------------------------------------------------------
六、从源码构建
----------------------------------------------------------------
--
七、从源码构建
--
前置:Godot 4.7.x + 对应版本的 export templates
@@ -115,13 +218,13 @@ OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
运行测试:
GODOT=/path/to/godot
$GODOT --headless --path . --import
$GODOT --headless --path . --script res://tests/run_tests.gd
$GODOT --headless --path . --quit-after 180
$GODOT --headless --path. --import
$GODOT --headless --path. --script res://tests/run_tests.gd
$GODOT --headless --path. --quit-after 180
----------------------------------------------------------------
七、目录结构
----------------------------------------------------------------
--
八、目录结构
--
project.godot 工程配置(autoload / 渲染 / 窗口)
export_presets.cfg 导出预设(必须在项目根目录)
@@ -133,21 +236,21 @@ OpenDance Studio —— Windows 客户端 v0.1.0 使用说明
src/autoload/ AppConfig / CatalogStore / PoseReceiver / ScoreService
src/net/ 239 字节编解码、WebSocket 服务、REST 客户端
src/model/ VRM 加载、humanoid 骨骼映射
src/anim/ 关键点 → 骨骼重定向
src/anim/ 关键点 -> 骨骼重定向
src/score/ 特征提取、DTW、评分规则
src/ui/ 主界面 / 游戏界面 / 结算 / 关于 / 来源展示
tests/ 无头测试框架与用例
build/ 导出脚本
----------------------------------------------------------------
八、常见问题
----------------------------------------------------------------
--
九、常见问题
--
Q: 主界面显示「服务端不可达」
A: 检查 Web 服务端是否已启动,以及「服务端地址」是否正确(含端口)。
Q: 目录里没有可用的动作
A: 动作必须先在管理端完成「预处理」(BVH → 关键点序列)并「审核通过」,
A: 动作必须先在管理端完成「预处理」(BVH -> 关键点序列)并「审核通过」,
才会出现在客户端。
Q: 模型加载失败 / 动作不完整
@@ -160,9 +263,9 @@ A: 确认手机端已开始推流;主界面的「查看接收状态」会显
Q: 关于页面的开源声明
A: 与 THIRD_PARTY.md、contracts/open-source-credits.md 三处保持一致。
----------------------------------------------------------------
九、许可
----------------------------------------------------------------
--
十、许可
--
本客户端代码以 MIT 许可发布。第三方开源项目声明见 THIRD_PARTY.md。
未使用 SMPL 模型及其衍生拓扑,统一采用 MediaPipe 33 点拓扑。