fix(models): Assimp 缺失时给出可操作报错,部署脚本自动安装
现象:服务器未安装 Assimp,上传 PMX 压缩包只得到 GLB 直出:导出失败(ENOENT):spawn assimp ENOENT glTF 直出:导出失败(ENOENT):spawn assimp ENOENT 用户看不出缺什么、怎么装,也不知道只传 glb/vrm 其实不需要它。 修复: 1. 新增 src/common/assimp.ts:按 ASSIMP_BIN -> PATH -> /usr/bin、/usr/local/bin 等常见目录定位可执行文件(只认文件,不认同名目录),转换前先预检; 找不到就一次性给出各发行版安装命令、查过的路径与替代办法, 不再打两条 ENOENT。动作预处理(FBX/glTF -> BVH)复用同一文案。 2. 新增 deploy/assimp-lib.sh:install.sh 按发行版自动安装 (apt-get / dnf / yum / zypper / apk / pacman),装在非常规目录时把绝对 路径写入 deploy/.env 的 ASSIMP_BIN;装不上只告警不中止,可用 SKIP_ASSIMP_INSTALL=1 跳过。check-access.sh 自检增加 Assimp 一行。 3. /health 增加 assimp.path;管理端「概览 -> 服务健康」显示 Assimp 状态, 不可用时给出安装提示。 4. 新增 test/assimp-locate.spec.ts 13 项;强化「assimp 不存在」用例断言安装命令。 测试规模 12 文件 / 193 项。 5. 版本 0.2.2,README(.md/.txt)/DSH.md 同步(前置要求、FAQ、环境变量说明)。
This commit is contained in:
@@ -16,6 +16,7 @@ APP_DIR="${1:-/opt/opendance}"
|
||||
PORT=""
|
||||
HOST_CFG=""
|
||||
PROBLEMS=0
|
||||
ASSIMP_MISSING=0
|
||||
|
||||
c_red() { printf '\033[31m%s\033[0m\n' "$*"; }
|
||||
c_grn() { printf '\033[32m%s\033[0m\n' "$*"; }
|
||||
@@ -216,9 +217,33 @@ if [ "$FW_FOUND" -eq 0 ]; then
|
||||
info "注意:云服务器还需检查控制台的「安全组 / 网络 ACL」是否放行 $PORT"
|
||||
fi
|
||||
|
||||
# ---------- 6.5 可选依赖 Assimp ----------
|
||||
title "可选依赖 Assimp(.pmx/.fbx 模型转换、FBX/glTF 动作预处理)"
|
||||
if [ -f "$(dirname "$0")/assimp-lib.sh" ]; then
|
||||
# shellcheck source=deploy/assimp-lib.sh
|
||||
. "$(dirname "$0")/assimp-lib.sh"
|
||||
ASSIMP_PATH="$(opendance_assimp_resolve || true)"
|
||||
if [ -n "$ASSIMP_PATH" ]; then
|
||||
ok "Assimp 可用:$ASSIMP_PATH($("$ASSIMP_PATH" version 2>/dev/null | head -1))"
|
||||
else
|
||||
warn "未安装 Assimp:上传 .pmx / .fbx(或含它们的压缩包)会报转换失败"
|
||||
info "安装:$(opendance_assimp_install_cmd)"
|
||||
info "只上传 .glb / .vrm 模型与 .bvh / .vmd 动作则不受影响"
|
||||
ASSIMP_MISSING=1
|
||||
fi
|
||||
else
|
||||
warn "未找到 deploy/assimp-lib.sh,跳过 Assimp 检查"
|
||||
fi
|
||||
|
||||
# ---------- 7. 结论 ----------
|
||||
title "结论"
|
||||
|
||||
if [ "${ASSIMP_MISSING:-0}" = "1" ]; then
|
||||
c_yel " 提示:未安装 Assimp,.pmx / .fbx 模型转换与 FBX / glTF 动作预处理不可用(与访问无关)。"
|
||||
echo " 安装:$(opendance_assimp_install_cmd 2>/dev/null || echo '用发行版包管理器安装 assimp')"
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ "$PROBLEMS" -eq 0 ]; then
|
||||
c_grn " 未发现本机侧问题。"
|
||||
echo " 若仍访问不了,按顺序排查:"
|
||||
|
||||
Reference in New Issue
Block a user