fix(scene): 包围盒沿树累乘变换(修掉入树前的 ERROR 与范围偏位)+ 21 项"真机等价"测试
缺陷:SceneRuntime._compute_aabb() 用 MeshInstance3D.global_transform 计算包围盒, 而它在 _assemble() 里调用 —— 那时运行时节点**还没入树**。两个后果: - Godot 打一行 `ERROR: Condition "!is_inside_tree()" is true. Returning: Transform3D()` (真机每次载入场景都刷一条,与"日志里不应有 ERROR"的排查约定冲突); - 树外的 global_transform 返回单位变换,算出来的只是各网格的**局部** AABB, 于是重力/风 Area3D 的碰撞盒与兜底地面会偏小或偏位 —— 对把网格摆在非原点位置的 场景(导出 GLB 的常见情况)**风力可能作用不到物体上**。 修复:改为从根往下累乘 `Node3D.transform`,不依赖是否入树;挂在单位变换父节点下时 结果与旧语义一致。 新增 21 项无头"真机等价"测试(不需要设备): - tests/test_scene_config.gd:在代码里手写合法 GLB(三角形 + BIN chunk)落盘后 **真实加载**:warnings 为空、按 colliders 三种取值分别核对碰撞体(mesh / auto 命中 *_col / auto 未命中的兜底地面 / none)、重力 Area3D 的 gravity 与方向、 SPACE_OVERRIDE_REPLACE、风力与 WIND_FORCE_SCALE 对齐,以及**带位移网格** (translation [10,0,0])时重力区域与兜底地面都跟着位移(该缺陷的回归测试); - tests/test_pose_server.gd:**时间维度**验证保活 —— 只发应用层 ping、不发关键点帧的 客户端在 17 秒(> 15 秒静默超时)后仍保持连接("画面里没人就掉线、疯狂重连"的根因 对照),而完全不发数据的客户端被 close(1001) 断开。 新增 build/check-version.sh:强制 project.godot 的 application/config/version (「关于」清单与 .pck 的来源)与 project.yaml、发布版本号三者一致;已接入 build/package-release.sh(打包前)与 build/verify.sh(第 0/4 步),并做过反向验证。 此前没有任何机制保证这两个文件同步 —— 界面显示的版本可能和产物名不一致。 版本升至 0.2.1(project.godot / project.yaml / README / 产物名 / tag 全部一致), About 清单与 .pck 内版本号均为 0.2.1(已用 strings 核对)。 验证:build/verify.sh 四步全通过(版本一致性 → 编译 → 751 项断言 → 180 帧启动无错误); 产物 opendance-windows-v0.2.1.zip(LZMA,26,627,191 B) sha256 d49885327047f5a52de6c732431ea080cd1a030ae1c581a8bc0ec0d99bfb792c。
This commit is contained in:
+19
-6
@@ -1,5 +1,5 @@
|
||||
================================================================
|
||||
OpenDance Studio -- Windows 客户端 v0.2.0 使用说明(zip 为 LZMA 压缩,需用 7-Zip/WinRAR 解压)
|
||||
OpenDance Studio -- Windows 客户端 v0.2.1 使用说明(zip 为 LZMA 压缩,需用 7-Zip/WinRAR 解压)
|
||||
================================================================
|
||||
|
||||
摄像头跳舞评分系统的核心体验端:接收 Android 辅助 App 通过 WebSocket
|
||||
@@ -8,6 +8,19 @@ OpenDance Studio -- Windows 客户端 v0.2.0 使用说明(zip 为 LZMA 压缩
|
||||
|
||||
本客户端只接收关键点坐标,不接收、不存储任何视频画面。
|
||||
|
||||
v0.2.1 修订
|
||||
1. 场景包围盒不再用 global_transform: SceneRuntime._compute_aabb() 原先在
|
||||
_assemble() 里调用, 而那时节点还没入树 -> Godot 会打一行 ERROR
|
||||
(Condition "!is_inside_tree()" is true), 且算出来只是各网格的局部 AABB,
|
||||
导致重力/风区域与兜底地面算偏位(风力可能作用不到物体). 现改为沿树累乘
|
||||
Node3D.transform。
|
||||
2. 新增 21 项无头"真机等价"测试: 手写合法 GLB 真实加载(三种 colliders 取值、
|
||||
重力/风数值、带位移网格的包围盒) + 17 秒保活对照(只发 ping 的客户端不被
|
||||
断开、完全不发的客户端被 1001 断开)。
|
||||
3. 新增 build/check-version.sh: 强制 project.godot / project.yaml / 发布版本
|
||||
三者一致(已接入打包与验证脚本, 并做过反向验证)。
|
||||
4. 无头测试规模 751 项断言全部通过。
|
||||
|
||||
--
|
||||
一、快速开始
|
||||
--
|
||||
@@ -103,11 +116,11 @@ OpenDance.exe 的用户看第一节即可。
|
||||
|
||||
打成发布包:
|
||||
|
||||
bash build/package-release.sh 0.2.0
|
||||
bash build/package-release.sh 0.2.1
|
||||
|
||||
得到 dist-release/ 下两个资产:
|
||||
|
||||
opendance-windows-v0.2.0.zip <- 单个完整包,禁止 .partN 分卷
|
||||
opendance-windows-v0.2.1.zip <- 单个完整包,禁止 .partN 分卷
|
||||
SHA256SUMS <- 裸文件名,可直接 sha256sum -c
|
||||
|
||||
包里含 OpenDance.exe、OpenDance.pck、THIRD_PARTY.md、README.txt、
|
||||
@@ -117,8 +130,8 @@ OpenDance.exe 的用户看第一节即可。
|
||||
注意:本项目 Gitea 前置 IIS 的默认上传上限是 30,000,000 字节
|
||||
(约 28.6 MiB),超过会返回 HTTP 413。这时不要改成分卷,
|
||||
请让运维放宽上限(做法见 opendance-web/deploy/proxy/README.md 第九节)。
|
||||
发布 v0.2.0 时该上限尚未放开,整包(约 38 MB)改用 LZMA 压缩到约 26 MB
|
||||
才传上去(打包时用 ZIP_METHOD=lzma)。**因此 v0.2.0 的 zip 需要
|
||||
发布 v0.2.0/v0.2.1 时该上限尚未放开,整包(约 38 MB)改用 LZMA 压缩到约 26 MB
|
||||
才传上去(打包时用 ZIP_METHOD=lzma)。**因此 v0.2.0/v0.2.1 的 zip 需要
|
||||
7-Zip / WinRAR / PeaZip 解压 —— Windows 10 资源管理器不支持 LZMA 的 zip**;
|
||||
若上限已放开,请改用默认 deflate 包(双击即可解压)。
|
||||
|
||||
@@ -127,7 +140,7 @@ OpenDance.exe 的用户看第一节即可。
|
||||
1) 一键验证:GODOT_BIN=/path/to/godot bash build/verify.sh
|
||||
预期末行「验证全部通过」。
|
||||
2) 无头测试:$GODOT --headless --path . --script res://tests/run_tests.gd
|
||||
预期「== 结果:687 通过 / 0 失败 ==」与「全部通过」(缺 VRM 素材或
|
||||
预期「== 结果:751 通过 / 0 失败 ==」与「全部通过」(缺 VRM 素材或
|
||||
服务端不可达时相关用例跳过,数字会减少)。
|
||||
3) 启动冒烟:$GODOT --headless --path . --quit-after 180
|
||||
预期无 SCRIPT ERROR / ERROR:,退出码 0。
|
||||
|
||||
Reference in New Issue
Block a user