docs: 新增「初次部署(从零跑起来)」;去混淆字符与真实内网信息
- README.md / README.txt 新增初次部署章节:前置条件、获取代码、首次运行、 配置服务端地址(API 3000 / 管理端 3001 分离)、与 Android 的 WebSocket 联通、 打包导出、自检清单、常见问题 - 三库同源契约:':=' 写法修回、去掉真实 MariaDB 版本串 - 全文去除易被 Gitea 判为「模棱两可 Unicode」的字符(- - ... -> 取代 — – … § →) - 真实内网地址与库名改占位符
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# T-WIN-006 关键点 → VRM 骨骼重定向
|
||||
# T-WIN-006 关键点 -> VRM 骨骼重定向
|
||||
|
||||
- **状态**:done
|
||||
- **依赖**:T-WIN-005、T-WIN-004
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
```
|
||||
DSH.md
|
||||
contracts/skeleton-topology.md # 锚点:§1 33 点、§2 虚拟关节、§4 坐标系
|
||||
contracts/skeleton-topology.md # 锚点:1 33 点、2 虚拟关节、4 坐标系
|
||||
src/anim/skeleton_retarget.gd
|
||||
```
|
||||
|
||||
@@ -20,7 +20,7 @@ src/anim/skeleton_retarget.gd
|
||||
1. 每根骨骼指定一条骨链(起点关键点,终点关键点)
|
||||
2. 取骨骼静止朝向 `rest_dir`(由该骨与首个子骨的位置差得出,**不假设模型骨骼轴向**)
|
||||
3. 目标朝向由两个关键点在世界空间的方向得出
|
||||
4. `delta` = rest_dir → target_dir 的最小旋转四元数(保留扭转/roll)
|
||||
4. `delta` = rest_dir -> target_dir 的最小旋转四元数(保留扭转/roll)
|
||||
5. `desired = Basis(delta) × rest_global_basis`
|
||||
6. `pose_local = parent_global_basis⁻¹ × desired`
|
||||
|
||||
@@ -30,15 +30,15 @@ src/anim/skeleton_retarget.gd
|
||||
|
||||
## 坐标转换
|
||||
|
||||
契约 §4 的 MediaPipe 归一化坐标 → Godot 世界方向:
|
||||
契约 4 的 MediaPipe 归一化坐标 -> Godot 世界方向:
|
||||
`Vector3(x × aspect, −y, −z × aspect)`(x/z 以图像宽为基准故乘宽高比)。
|
||||
|
||||
## 验收
|
||||
|
||||
`tests/test_retarget.gd` —— 最关键的是**功能性**断言:
|
||||
`tests/test_retarget.gd` -- 最关键的是**功能性**断言:
|
||||
|
||||
```
|
||||
→ 左上臂方向点积 1.0000,左前臂方向点积 1.0000
|
||||
-> 左上臂方向点积 1.0000,左前臂方向点积 1.0000
|
||||
```
|
||||
|
||||
即:给定一组关键点,重定向后骨骼在世界空间的**实际指向**与关键点方向一致;
|
||||
|
||||
Reference in New Issue
Block a user