YSynthetic
PROJECT OVERVIEW00%
PATH TO MOTION

一个人好孤独。

Walking alone feels lonely.

我想坐在沙发上

I want to sit on the sofa.
CURRENT PROGRESS / ENCOUNTER
PROJECT FLOW

From planned paths to generated walking motion.

01Single-agent path planning finds a clean route through the room.

02Multi-agent coordination predicts conflicts and keeps bodies apart.

03An adapter turns planner paths into MotionBricks navigation control.

04MotionBricks generates the final G1 walking animation for export.

又见面了,我想在大house里走路

I want to walk inside the big house.
ENTER THE ROOM
Single Path Planning

Extract walkable floor, inflate furniture by body radius, then run A* on the safe grid.

The result is simplified into a clean route before MotionBricks ever starts walking.

我想走到那里去,但是途中不能碰到任何家具。

Find a safe route through the furniture.

TARGET / A

SCENENAVIGATION

ROOM MESHSTATIC OBSTACLESWALKABLE FLOOR
PATH FOUNDA → B

保留可行走区域,在世界坐标中绘制从门口到目标点的无碰撞路线。

POSITION + ORIENTATION + MOTION

A SMALL INTERRUPTION
REALTIME AVOIDANCE

多人实时避障检测

持续读取每个 agent 的当前位置和下一段轨迹,预测即将发生的碰撞。

一旦检测到冲突,就临时调整速度、等待或绕行,再把更新后的路线交给运动生成层。

AGENT 01AGENT 02AGENT 03AGENT 04AGENT 05

TECHNICAL IMPLEMENTATION / PART ONE

Path planning becomes generated motion.

PLANNERADAPTERMOTIONBRICKS

0001-0377.mp4 / PATH-DRIVEN G1 MOTION

PATH PLANNING / INPUT ADAPTER / MOTION GENERATION

从可行走空间到 MotionBricks 可执行控制。

01planning_core.py 从 USD / USDC 场景提取地面,投影成二维栅格,并按人物半径与 clearance 膨胀静态障碍,得到安全的可行走区域。

02plan_multi.py 先为每个 agent 运行静态 A*,再做 line-of-sight 简化,得到绕开家具的参考主路线。

03多人阶段在固定速度下采样候选方向,用 RVO / ORCA 风格预测近未来冲突,并用连续圆形扫掠检查验证整条 trajectory。

04paths.json 被 motionbricks_path_adapter.py 重采样;planner_control_bridge.py 每帧读取真实 G1 root,把当前位置投影回路径,再生成短期目标与朝向控制。

05官方 MotionBricks 链路保持不改:full_navigation_agent 生成 root / pose,再经 VQVAE decoder 输出 G1 动作 NPZ;多人时根据实际 root 预测冲突、生成减速时间表并重跑受影响人物。

TECHNICAL IMPLEMENTATION / PART TWO

Can still images keep one moving scene consistent?

4 SCENE VIEWS1 POSE REFERENCEMINIMAX H3
PART TWO / MINIMAX H3 IMAGE CONDITION TEST

输入四张场景图片与一张人物在场景中的姿势参考图。

MiniMax H3 reference input 图一 / VIEW 00
图一 / VIEW 00
MiniMax H3 reference input 图二 / VIEW 02
图二 / VIEW 02
MiniMax H3 reference input 图三 / VIEW 03
图三 / VIEW 03
MiniMax H3 reference input 图四 / VIEW 06
图四 / VIEW 06
MiniMax H3 reference input 图五 / POSE REF
图五 / POSE REF
GENERATED CAMERA MOVE / output.mp4
FFMPEG / SAM3 / VIEW MATCHING

从生成视频里找回能继承相机参数的帧。

  1. 先用 ffmpeg 把 MiniMax 输出视频抽成逐帧图像。
  2. SAM3 分割并排除人物区域,只比较稳定的背景和家具。
  3. 把去人物后的帧与输入空场景图对齐,找出最接近 0 / 2 / 3 / 6 视角的候选帧。
  4. 匹配成功的帧继承原输入 view 的 K / R / T 与 camera_id,继续交给人体重建流程。
Matched generated frame for input view 0
o_0.png
Matched generated frame for input view 2
o_2.png
Matched generated frame for input view 3
o_3.png
Matched generated frame for input view 6
o_6.png
VALIDATION / WHY THIS IS NOT ENOUGH

图像输入能跑通,但一致性仍然太脆弱。

这里的输入仍然是参数化相机拍到的空场景 view,再加一张人物姿势参考图。为了逼近“同一个沙发、同一个视角、同一个人物意图”,prompt 被写得非常长;但测试结果会明显受提示词措辞、随机性和模型稳定性的影响。

对比视频可以更直观看到:人物会被生成出来,但人物动作一致性和场景背景一致性都不能稳定保证。

所以下一步换成“空场景运镜视频作为输入”:让模型先继承连续相机运动,再在同一段镜头里生成人物与家具交互。

compare0236.mp4 / generated frame vs. source view