docs: 其余易混淆字符改 ASCII(× − ≥ ≤ ≈ ✓ 等),消除 Gitea 告警
实测确认 Gitea 的「模棱两可 Unicode」检测覆盖:— – … § → × − ≥ ≤ ≈ ✓。 三库 .md/.txt 全部替换为 x - >= <= ~ OK;contracts 三库同源保持一致。 重新打包 v0.2.0。
This commit is contained in:
@@ -89,7 +89,7 @@ web-server/scripts/import-default-model.mjs
|
||||
| 项 | 实现 | 说明 |
|
||||
|--|--|--|
|
||||
| 分析 | `model-inspector.ts` -> `models.stats` | 面数 / 顶点 / 网格 / 材质 / 贴图 / 节点 / 形变目标 / 动画 / 蒙皮骨骼数 / **骨骼树** / humanoid 覆盖 / **可驱动性(缺哪些必需骨骼)** / warnings;迁移 `AddModelStats1789460000000` 新增 `models.stats TEXT` |
|
||||
| 缩略图 | `model-thumbnail.ts` -> `models.thumbnail_asset_id` | 纯 TS 软件光栅化 512×512 PNG(读 GLB/glTF -> 节点层级与蒙皮 -> 包围盒构图 -> 透视投影 -> z-buffer 平面着色 -> 手写 PNG),**零原生依赖**;失败或非 glTF 容器留空,前端退化为格式占位图 |
|
||||
| 缩略图 | `model-thumbnail.ts` -> `models.thumbnail_asset_id` | 纯 TS 软件光栅化 512x512 PNG(读 GLB/glTF -> 节点层级与蒙皮 -> 包围盒构图 -> 透视投影 -> z-buffer 平面着色 -> 手写 PNG),**零原生依赖**;失败或非 glTF 容器留空,前端退化为格式占位图 |
|
||||
|
||||
## 状态与默认模型(硬性)
|
||||
|
||||
@@ -129,7 +129,7 @@ web-server/scripts/import-default-model.mjs
|
||||
`missingRequiredBones` 为**全部 16 根**(日文 MMD 骨名无法映射到 humanoid)。
|
||||
- 直接上传 `.glb` -> **HTTP 201 / 0.36s**、`conversionNote=直接导入(GLB,未做重编码)`,
|
||||
入库文件 sha256 与源文件**一致**(不重编码)。
|
||||
- 缩略图:512×512 PNG / 15,043 字节,服务端纯 TS 光栅化(含蒙皮),目视确认为居中的
|
||||
- 缩略图:512x512 PNG / 15,043 字节,服务端纯 TS 光栅化(含蒙皮),目视确认为居中的
|
||||
T-pose 角色图;真实 10MB VRM(83 关节、5307 顶点)单张耗时 60-121ms(中位 79ms)。
|
||||
- 审核:`POST /api/reviews/model/22/approve` 带 `setPrimary:true` -> 200,
|
||||
模型 `status=published`、`isPrimary=true`,源码种子写入 `sourceSha256=72eb6882...`;
|
||||
@@ -172,7 +172,7 @@ npm run test:smoke # 冒烟 [4] 段落
|
||||
| GLB 失败回退 glTF->GLB 打包 | ✅ GLB 直出失败时 `gltf-packer.ts` 自行打包;每步 `assimp info` 回读校验 |
|
||||
| `MODEL_CONVERT_FORMAT=vrm` 封装 | ✅ `vrm-writer.ts` 补 `VRMC_vrm`;humanoid 不全回退 GLB |
|
||||
| 自动分析写入 `models.stats` | ✅ 实测 `triangles=9071 bones=238 humanoidMapped=0/22 drivable=false` |
|
||||
| 缩略图生成且不影响入库 | ✅ 512×512 / 15,043 B;失败只告警 |
|
||||
| 缩略图生成且不影响入库 | ✅ 512x512 / 15,043 B;失败只告警 |
|
||||
| 上传一律 pending、不自动设默认 | ✅ `create()` 固定 `PublishStatus.Pending` + `isPrimary=false` |
|
||||
| `setPrimary` 审核通过时生效 | ✅ `POST /api/reviews/model/22/approve` + `setPrimary:true` -> 200、`isPrimary=true` |
|
||||
| 非 published 设默认 | ✅ `POST /api/models/:id/primary` -> 409 |
|
||||
@@ -199,7 +199,7 @@ node scripts/reanalyze-models.mjs --url http://127.0.0.1:3000 --dry-run # 只列
|
||||
```
|
||||
|
||||
实测(真实 21MB VRM,290 骨骼):回填出面数 53552 / 顶点 44662 / 骨骼 290 /
|
||||
humanoid 7/22,并重建 512×512 缩略图。
|
||||
humanoid 7/22,并重建 512x512 缩略图。
|
||||
文件在存储中丢失时返回 **409** 并说明原因,不会用全 0 结果覆盖既有分析数据。
|
||||
另外 `StorageService.persistBuffer` 在 sha256 去重命中但文件不存在时会**自愈补写**,
|
||||
避免换过 `STORAGE_DIR` 或只恢复数据库后出现"静默全 0 分析"。
|
||||
|
||||
Reference in New Issue
Block a user