资产库
ASSET LIBRARY

概览 先查有没有,再决定建不建

建档前查重

?
下一步要建的东西,先在这里问一句。
输入名称或描述 → 系统给出三态结论:直接复用 / 加变体 / 确需新建, 并附相似度与已有资产的引用次数。反复重建同一个路灯,是这套库要消灭的头号浪费。
Ctrl+Enter 也可提交

最近改动

改得最多的资产 · 按编号点名,方便下一轮针对性优化

3D 模型

特效 一层配方,挂到任何组合或场景上

动作 每一帧的姿态也是资产:阶段、通道、检查点都可查

组合 模型之间怎么搭,一次定义、反复用

场景 组合 + 摆位 = 可直接开拍的舞台

素材片段

剪辑 时间线 → ffmpeg → 成片

选择或新建一个剪辑项目素材库里的片段可以直接拖到时间线

体检 复用率、空间占用、待重渲

垃圾桶 保留 30 天,到期自动清除

删除不会立刻抹盘:完整文档、缩略图和版本历史一起搬进桶里,保留 30 天。 期间可以「还原」回原 id,或「存为副本」用新 id 复活一份而让原件继续倒计时。 服务启动时和每小时巡检一次,到期的条目自动清除;服务没开的日子可以用 node assetlib/trash-cli.mjs --purge-expired 挂到任务计划程序兜底。

字段索引

按字段直接查 · 全部走内存索引,不扫库

已建索引的常用字段 · 命中次数为本次启动以来累计

索引是怎么保持不过期的

⌗
写入即维护,启动即校验。
改一个资产时,用「写入前的 registry 指纹」确认索引还停在上一版,然后只重算被改动的条目; 其它情况(服务刚启动、命令行直接改过盘、索引文件损坏、结构升级)一律全量重建。 所以永远不会出现"界面上查得到、实际已经改过"的脏索引。 精确字段是哈希索引,模糊查询走中文 bigram 倒排超集召回,排序与范围走有序索引。

使用说明

这套东西解决什么

每做一条片子都要"生成每个对象的 3D 建模"。如果每次都从零写 makeLampPost,改五轮、调三遍, 那是在重复劳动。这里把模型、组合、场景、素材、成片时间线全部登记成可查的资产: 下次先查,有就复用,没有才建;建完立刻回写,改过的场景自动标脏。

五层结构

层含义复用什么
model一个工厂函数 + 一组参数(如 makeBike({plate, dirty}))几何与材质
combo若干 model 的摆位 + 约束(如"骑行者"=车+人+双手 IK)搭配关系
scenecombo / model 的实例 + 环境(雾、灯、曝光)整场舞台
clip磁盘上的视频/音频/图片,登记元数据不复制文件实拍与音乐
project多轨时间线,编译成 ffmpeg整条片子

常用命令

node assetlib/server.mjs                    启动管理界面 http://127.0.0.1:7788/ui/
node assetlib/seed.mjs --force              重新导入现有 3D 资产
node assetlib/probe.mjs --force             重新量几何 + 模型缩略图
node assetlib/thumbmore.mjs --force         重出组合 / 场景缩略图
node assetlib/clipimport.mjs                扫描素材目录,登记新片段
node assetlib/export.mjs --project=ID --run  命令行直接渲染成片
node assetlib/trash-cli.mjs --list          看垃圾桶里有什么
node assetlib/trash-cli.mjs --purge-expired  手工清一次到期条目
node assetlib/index-cli.mjs --status       看字段索引状态
node assetlib/index-cli.mjs --query assetNo=MD-0013   按索引查
node assetlib/index-cli.mjs --top changeCount=5       改动最多的 5 个
node assetlib/index-cli.mjs --rebuild      全量重建索引
node assetlib/index-check.mjs              索引一致性 + 性能验收

老资产怎么处理

被替代的模型不要直接删:在模型抽屉点「丢进垃圾桶」,完整文档、缩略图、版本历史一起搬进桶里, 保留 30 天。这期间可以还原回原 id,也可以存为副本用新 id 复活一份、让原件继续倒计时。 服务启动和每小时巡检都会清掉到期条目;服务没开的日子可以用 trash-cli.mjs --purge-expired 挂到任务计划程序兜底。还被引用的资产默认拦下,要强制丢弃得二次确认。

更新是怎么"及时"的

每个资产有一个 contentHash(工厂名 + 参数 + 子件 + 环境)。改模型时先比指纹: 没变就只盖一个"已校验"时间戳,不写盘、不升版本、不惊动场景;变了才归档旧版、升版本、 把引用它的场景标成 dirty,在体检页列出待重渲清单。所以"每次优化都回写"不会变成一个卡顿的操作。

常用字段都有索引

编号、ID、内容指纹、类别、标签、别名、名称 bigram、建模工厂、引用关系、改动次数、版本、 最近改动时间、时长、面数、待重渲状态、资产类型等 21 个常用字段都建了索引, 分哈希 / 倒排 / 有序 / 位图四种。按编号点名(MD-0013、0013、13 都行) 是常数时间;列表按 kind / tag / 最少改动次数筛选,以及概览页「改得最多的资产」,都直接读索引。 写入后立即增量维护,服务启动时用 registry 指纹校验,不一致自动重建; 「字段索引」页可以看每个字段被查了几次、少扫了多少条,也能手工重建和自检。