• v0.1.0 aef5f88083

    zijunchiang released this 2026-09-14 20:05:51 +08:00 | 35 commits to main since this release

    ⚠️ 本版已废弃,请直接使用 v0.2.2

    不要再按下面的分卷说明操作。 下面那套「先 cat 合并 3 个分卷」的流程
    是本项目早期受 Gitea 前置 IIS 上传上限所迫的临时方案,现已作废:
    发布规则改为只上传单个完整包,不再提供任何 .partN 分卷。

    为什么不建议再用本版(contracts/VERSION 实测,取出包内快照比对):

    契约项 v0.1.0 包内 当前服务端
    rest-api 0.1.0 0.5.0
    websocket-keypoints 0.1.0 0.2.0
    data-models 0.1.0 0.7.0
    skeleton-topology 0.1.0 0.2.0
    model-formats 0.1.0 0.5.0
    database 0.1.0 0.4.0

    契约差 4 个大版本:本版不认服务端 0.5.0 目录里的 scenes[](没有场景选择),
    也没有 0.2.0 的连接保活 / 设备去重 / 状态机,「关于」页面同样不显示版本号。
    也就是说:即使你成功合并并解压,跑起来也对不上当前服务端。

    本版的分卷资产保留(已核验:三个分卷的 sha256 与 SHA256SUMS.txt 一致、
    合并后 unzip -t 无错、包内 OpenDance.exe 的 PE 头为 MZ、OpenDance.pck 存在),
    仅作历史存档,不再作为可用发布推荐。


    OpenDance Studio — Windows 客户端 v0.1.0

    阶段二交付物:Godot 4 客户端,接收 Android 辅助 App 的 33 点骨骼关键点,
    驱动 VRM 角色并 DTW 实时评分。只接收关键点,不接收、不存储视频画面。

    关于附件(历史存档,已作废)

    发布包 36.4 MB,超过本 Gitea 实例反向代理的单次上传上限(实测 20 MB 可通过、
    30 MB 被拒),因此拆分为 3 个分卷。请先合并:

    cat opendance-windows-v0.1.0.zip.part* > opendance-windows-v0.1.0.zip
    sha256sum -c SHA256SUMS.txt
    

    合并结果的 sha256 为
    87edb67242c0fcd596bbb79fb2484a6af1401813d33be3dbc61207fbd967f4e2(已验证一致)。

    治本做法是在反向代理上放开限制:client_max_body_size 100m;(Gitea 自身限制为 100 MB)。
    也可直接从源码打包:bash build/export-windows.sh release && bash build/package-release.sh 0.1.0

    交付内容

    文件 说明
    OpenDance.exe 主程序(Windows x86_64,PE 头校验通过,104 MB)
    OpenDance.pck 资源包(必须与 exe 同目录,107 KB)
    THIRD_PARTY.md 第三方开源项目声明(15 项)
    README.txt 使用说明(含防火墙、评分规则、FAQ)
    contracts/ opendance-web v0.1.0 契约快照

    任务完成情况

    T-WIN-001 → T-WIN-011 全部完成,project.yaml 中状态均为 done。

    验收结果

    脚本编译        ✓ 全部通过(无 SCRIPT ERROR)
    无头测试        ✓ 580 / 580 通过(8 个测试套件)
    应用启动        ✓ 180 帧无运行时错误
    Windows 导出    ✓ OpenDance.exe 104 MB + OpenDance.pck,PE(MZ) 校验通过
    真实 VRM        ✓ 154 骨骼 VRoid 模型,humanoid 覆盖率 100%
    骨骼重定向      ✓ 关键点方向与骨骼实际指向点积 1.0000
    跨实现交叉校验  ✓ 关节角与 Web 服务端 TypeScript 实现逐帧一致
    

    关键验证说明

    跨实现交叉校验:本端 GDScript 从服务端下发的关键点重新计算 9 个关节角,
    与服务端 TypeScript 实现写在同一份 NDJSON 里的 angles 逐帧比对,最大偏差 < 1e-3。
    这证明两端对冻结契约的理解完全一致。

    骨骼重定向功能性验证:不是「函数被调用了」,而是给定一组关键点后,
    读出 VRM 骨骼在世界空间的实际指向,与关键点方向做点积 —— 结果为 1.0000。
    这个合成公式是在真实 VRM 上暴力枚举 5 种候选后实测标定的(误差 1.9e-8)。

    测试框架自身的可靠性:发现测试运行器会把「静默失败的方法」记成通过
    (脚本编译失败、协程被主循环截断等),已加固为:未执行任何断言的测试方法一律计为失败、
    编译失败的测试文件硬失败、带 await 的异步测试可跨帧正常完成。
    加固过程中因此暴露并修复了 3 个真实缺陷,其中一个导致 VRoid 模型骨骼覆盖率为 0%。

    使用

    解压后先启动 Web 管理服务端,再运行 OpenDance.exe(需放行 TCP 8765 入站)。
    详见 README.txt。

    已知事项

    • Godot 的 WebSocketPeer 不暴露握手路径,无法校验 /pose,仅校验子协议
    • 文档原选型 godot-vrm 不发布预编译产物,改用 Godot 内置 glTF 导入器 + 自实现骨骼名映射
    • export-windows.ps1 未在真实 Windows 上执行(本次环境无 Windows)
    • 真实 VRM 样例因版权未入库,测试找不到时显式跳过
    Downloads