feat(render3d): 打通三渲二的生产闭环 - #277
Open
johnnyzhang-eng wants to merge 9 commits into
Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
引擎契约与 server 编排的后半段。路线选择由 server 读 DB 决定:造型上有 model_3d_url 就调 CharacterGeneratorPort.generate_rendered,没有则照旧走 i2v。 三渲二不进 ROUTE_MATRIX —— 那张表的隐含前提是"路线由动作物理性质唯一决定", 而这条还取决于该造型有没有 3D 资产。 引擎侧新增 generate_rendered 而不另立 port,并补一项分区动量读数:整幅的 motion_scale 与死帧判据看不见"腿在迈、手臂僵成柱子",而那正是自动绑骨漏认 肢体的典型产物。 出帧台 provider 走函数内延迟 import,没装它时 i2v / 逐帧两条路线仍可用。 Refs 1024XEngineer#192 1024XEngineer#122 1024XEngineer#121
这两条只用 PIL 和 slicing.quality,与三渲二 provider 无关。留在 test_render3d_route_and_assets.py 里会被那个文件的整体 skip 一并带走, 于是本 PR 新增的这项读数在 provider 合入前一条断言都不跑。
1024XEngineer#241 合入后 rebase 撞出来的:它给装配表加了一条断言,要求每个 GenRoute 成员都被装配, 而本 PR 新增的 RENDER_3D 依赖 1024XEngineer#270 的 provider 模块——那个模块在这条分支上还不存在, 装配期就 import 会让本来走 i2v 的任务也起不来。 改成装配表里放一个惰性策略:真走到三渲二那条路线时才 import 出帧台依赖。 断言因此仍然成立(表里确实有这个键),而缺 provider 也不影响其余路线。 两个状态都验过:不带 1024XEngineer#270 时 496 passed / 2 skipped;把 1024XEngineer#270 的 provider 层铺进工作区 再跑,591 passed / 14 skipped,惰性策略能真的实例化出 RenderFrameStrategy。 Refs 1024XEngineer#192
johnnyzhang-eng
force-pushed
the
feat/render3d-engine
branch
from
August 13, 2026 08:23
b6ded67 to
204f238
Compare
This was referenced Aug 13, 2026
Contributor
Author
Member
|
/review |
Contributor
There was a problem hiding this comment.
审查结论
这组改动已经串起了 DB 选路、模型下载、引擎渲帧和质量读数,但与 #192 已定契约仍有两处关键偏差:多朝向产物被压成单朝向,渲染浏览器仍运行在 FastAPI 进程内。另外,人工驳回模型后当前缓存流程无法真正重新生成。
验证
- 按固定范围
12793606d44bf3a089d4540c5e1c307cc94e6d25...9b509f9cfab91d9dba6ae889bca28879d17c3751审阅全部 18 个变更文件。 git diff --check与变更模块compileall通过。- 当前环境缺少
uv/pytest,未能本地复跑测试;GitHub 的后端、前端与 patch coverage 检查均为通过。
This was referenced Aug 17, 2026
This was referenced Aug 17, 2026
added 3 commits
August 17, 2026 14:45
…d-loop # Conflicts: # backend/packages/ai_engine/src/windup_ai_engine/ports/__init__.py
Contributor
Author
Member
@johnnyzhang-eng 你可以修一下这个 action 的情况;我记得记得脚本里面只判断了有没有 “Close” 字段;或许可以添加 “Refs” 等; 不过要看具体情况,是不是一个 issue 对应多个 PR 的场景(不建议这么做)? |
Contributor
Author
Member
|
@xiaocheny214 一起来看下,会涉及到你的那部分。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
把三渲二从「路线接好但走不到」补成一条可用的闭环:读路径、写路径、母版预检三段一起进。
拆开提会留下一条死代码路径。判据是
character_data.outfits[].model_3d_url,本 PR 的读侧按它决定走三渲二还是 i2v;但在写侧端点存在之前,该字段没有任何写入来源,恒为None,所有动作请求静默回落 i2v,不报错也不告警。变更
common/models/character.pyCharacterOutfit.model_3d_url:三渲二的开关,挂造型级而非角色级ai_engine/portsgenerate_rendered:拿已绑骨模型套预设动作出帧,与generate并列ai_engine/master_checkMasterWarningCode:四肢粘连、独立色块两条警告。判据近似,故为警告不为拒绝web/api/generation.pyoutfit_id;_outfit_model_3d_url读 DB 决定路线web/api/render3d.pymaster-precheck、查询、build、approve、discardorchestrator/render3d_service.pyopenapi.json路线选择整个在 server:引擎不做「能不能用」的预查询,因为判据只有 DB 知道。
rigged_model传 bytes 不传 URL,ai_engine 只吃 bytes、不碰存储。建 3D 资产是每造型一次性的按次计费,不在动作生成的请求路径上;
build与approve分开,付费与放行不由同一个调用完成。关联
Closes #352
Refs #192
Test plan
uv run ruff check .→ All checks passeduv run lint-imports→ 2 kept, 0 brokenuv run python -m scripts.export_openapi && git diff --exit-code -- ../openapi.json→ 无漂移uv run pytest -q→ 760 passed, 14 skipped