feat(models): 模型一律转 VRM(契约 0.5.0)+ 可用性门槛 + 管理端版本号展示
按《DSH 开发文档 v1.6》4.9 与第十一章实现,Web 端第一步:
1. 契约先行(先改 contracts/ 再同步三端):
* model-formats.md -> 0.5.0:模型主力格式改为 VRM,所有上传模型一律转 VRM
(.pmx/.fbx: assimp -> GLB -> VRM;glb/gltf: 包装为 VRM);
新增 humanoid 硬门槛与"不达标回退 GLB + usable=false"的交付表;
* data-models.md -> 0.5.0:Model 新增 usable / unusableReason,明确
usable=false 不进入 catalog/export;format 说明改为主力 vrm;
* VERSION 与 contract-versions.ts 同步(三端契约文件逐字节一致)。
2. 实现:
* MODEL_CONVERT_FORMAT 默认改为 vrm(deploy/.env.example 同步);
* 新增 isUsableModel()/unusableReason():usable 等价于"已产出 VRM",
原因从 stats 里带出 humanoid 覆盖度;
* catalog/export 与 catalog/version 指纹都只统计 format=vrm 的已发布模型,
resolveDefaultModelId 同样只在可用模型中选;
* 管理端:模型列表与审核面板显示「不可用」及原因;
* 管理端左下角展示当前版本号(构建期从 web-server/package.json 注入
__APP_VERSION__,与 GET /health 同源),并去掉写死的"契约 rest-api 0.1.0"。
3. 测试:新增 test/model-usability.spec.ts 5 项;规模 16 文件 / 225 项。
4. 版本 0.3.0。
This commit is contained in:
+5
-5
@@ -44,11 +44,11 @@ UPLOAD_MAX_BYTES=536870912
|
||||
# ---- 可选的 Assimp(FBX/glTF 动作预处理;也用于压缩包模型的转换)----
|
||||
# 上传 .zip(内含 .pmx 的 MMD 模型包)时必须能调用到它,否则转换会失败
|
||||
ASSIMP_BIN=assimp
|
||||
# 需要转换的模型(PMX / FBX)交付格式:glb(默认,两个客户端都原生加载)| vrm
|
||||
# glb:通用,客户端直接加载
|
||||
# vrm:在 GLB 之上补 VRMC_vrm 扩展(humanoid 骨骼 / 表情语义);
|
||||
# humanoid 骨骼名映射不全时会自动回退交付 GLB 并写进 conversion_note
|
||||
MODEL_CONVERT_FORMAT=glb
|
||||
# 模型交付格式:vrm(默认,v0.5.0 起所有上传模型一律转 VRM)| glb
|
||||
# vrm:在 GLB 之上补 VRMC_vrm 扩展(humanoid 骨骼 / 表情语义)
|
||||
# glb:仅作为转换中间产物;humanoid 不达标时会回退交付 GLB,
|
||||
# 该模型 usable=false(可入库可审核,但不进入客户端目录)
|
||||
MODEL_CONVERT_FORMAT=vrm
|
||||
# 压缩包里优先选用的 PMX 文件名(大小写不敏感);找不到时按"格式优先级 -> 目录最浅 -> 文件最大"挑
|
||||
# 值里含空格或 shell 元字符时必须用引号包起来(install.sh 会用
|
||||
# `set -a; . deploy/.env` 真的执行本文件;不加引号会把 "Miku.pmx" 当命令)
|
||||
|
||||
Reference in New Issue
Block a user