6.2 KiB
6.2 KiB
预演台功能需求实现状态
已完成 ✅
需求1:统一预演台选择模型后添加参数调整面板
文件: web/src/components/canvas/previs/canvas-previs-workbench.tsx (行 977-1014)
实现内容:
- 添加"体型参数"面板,包含5个可调整参数:
- 身高 (0.5-1.5)
- 头身比 (0.5-1.5)
- 肩宽 (0.5-1.5)
- 躯干比例 (0.5-1.5)
- 配件轮廓 (无/拐杖/角/王冠)
- 所有参数使用
actorProfile字段持久化 - 保持原有姿势微调功能
类型安全: 已添加 PrevisActorProfile 和 previsActorProfileForArchetype 导入
需求6:统一预演台添加环境背景和资产功能
文件: web/src/components/canvas/previs/canvas-previs-workbench.tsx (行 1059-1088)
实现内容:
- 在右侧输出面板添加步骤3"画布资产与环境"
- 显示画布中的图片资产列表(最多3个,超过显示提示)
- 每个资产可以:
- 设置为 360° 全景背景
- 快速加入场景作为参考背板
- 显示绑定状态(✓已加入 / 360°背景)
- 显示当前 360° 背景状态,支持一键移除
- 在步骤4中显示生成提示词预览(自动引用资产和环境)
提示词编译: previs-prompt-compiler.ts 已支持自动引用资产和360°背景
待实现 🔄
需求2:角色库添加 archetype 持久化和本地上传
状态: 进行中 涉及文件:
web/src/components/canvas/canvas-character-library-modal.tsxweb/src/services/api/projects.ts
需要实现:
- 在角色卡列表中显示 archetype 信息(类似图1的libtv)
- 支持创建角色时设置 archetype
- 添加本地上传图片创建角色的入口(参考图1)
- 在角色详情中显示和编辑 archetype
技术方案:
ProjectAsset.character.definition可存储 archetypecreateCharacterAPI 已支持definition参数- 需要在 UI 中添加 archetype 选择器
需求3:添加镜头时支持黄色自由拖动和视角切换
状态: 待开始 涉及文件:
web/src/components/canvas/previs/previs-viewport.tsxweb/src/components/canvas/previs/canvas-previs-workbench.tsx
需要实现:
- 添加镜头时,对象显示黄色高亮(参考图2-5)
- 黄色状态下可以自由拖动位置
- 3D预演台画布支持切换:
- 导演视角(自由3D视图)
- 机位视角(摄影机POV)
- 视角切换器在画布中可见(参考图3-4)
技术方案:
viewMode已有 "free" 和 "camera" 模式- 需要在视口中添加选中状态的黄色高亮材质
- 旧分裂工作台已有视角切换,需要在快速模式中也显示
需求4:预演台卡片缩略图后台生成优化
状态: 待开始 涉及文件:
web/src/components/canvas/previs/canvas-previs-node-panel.tsxweb/src/components/canvas/previs/previs-mini-viewport.tsx
当前问题:
- 画布上的预演台卡片实时渲染
PrevisMiniViewport - 每个卡片都会创建一个 Three.js 场景,影响画布性能
- 当有多个预演台节点时,性能明显下降
需要实现:
- 关闭预演台时,后台生成一张缩略图
- 将缩略图保存到
node.metadata.previsPreviewNodeId引用的图片节点 - 画布卡片直接显示缩略图,不再实时渲染3D
- 只在预览图不存在时才fallback到
PrevisMiniViewport
技术方案:
// 在关闭预演台时:
const blob = await viewportRef.current?.capture("clay");
// 上传blob并创建/更新preview图片节点
// 更新 node.metadata.previsPreviewNodeId
需求5:修复预演台选择模型后空白Bug
状态: 待诊断 涉及文件:
web/src/components/canvas/previs/canvas-previs-workbench.tsxweb/src/components/canvas/previs/previs-inspectors.tsx
问题描述(参考图6-7):
- 有时候选择模型后,界面后面显示空白
- 但数据实际存在(图7显示数据结构正常)
- 可能是UI渲染问题,而非数据问题
可能原因:
- 旧分裂工作台模式下,右侧检查器面板滚动问题
- 内容溢出但没有滚动条
- 动态加载的内容高度计算错误
- CSS
overflow或min-height设置不当
需要检查:
.previs-desk-inspector的滚动容器.previs-desk-inspector-content的内容高度- 模型选择后动态插入的UI是否正确渲染
- 是否有条件渲染导致内容被隐藏
调试步骤:
- 添加日志确认数据是否正确加载
- 检查CSS是否导致内容被裁剪
- 验证滚动容器的高度和overflow设置
- 测试不同模型时的表现
技术债务
类型安全
- ✅ 已修复:导入
PrevisActorProfile类型 - ✅ 已修复:导入
previsActorProfileForArchetype函数
性能优化
- 🔄 待实现:预演台缩略图后台生成(需求4)
- 🔄 考虑:限制画布上同时渲染的
PrevisMiniViewport数量
用户体验
- 🔄 待实现:黄色拖动状态提供更直观的反馈(需求3)
- 🔄 待实现:视角切换在快速模式中也可用(需求3)
测试建议
需求1测试
- 选择演员后,体型参数面板显示
- 调整每个参数,模型实时更新
- 参数保存并在重新打开时恢复
- 类型检查通过
需求6测试
- 画布有图片时,资产列表显示
- 点击"360°"按钮,设置全景背景
- 点击"加入"按钮,添加到场景
- 生成提示词包含资产引用
- 移除背景功能正常
待测试(需求2-5)
- 角色库显示archetype信息
- 本地上传创建角色
- 添加镜头时对象黄色高亮
- 视角切换正常工作
- 缩略图后台生成
- 选择模型后界面不再空白
下一步行动
-
优先级1(影响用户体验):
- 修复需求5(选择模型空白Bug)
- 实现需求4(缩略图优化)
-
优先级2(功能完善):
- 实现需求3(黄色拖动和视角切换)
- 实现需求2(角色库archetype)
-
代码审查:
- 确保所有新增代码符合项目规范
- 检查是否有潜在的性能问题
- 验证类型安全
-
文档更新:
- 更新用户手册
- 添加功能演示视频
- 记录已知问题和解决方案