Articulated Asset Roadmap¶
本文件记录当前 ArtHOI4D pipeline 向通用 articulated object source 演化的路线判断、asset 要求、baseline capability matrix、实验优先级和统一接口设计。
背景¶
截至 2026-03-24,仓库已经把 VideoArtGS、pipeline/hoi_reconstructor.py、InterMimic 和 partnet_rendering 接到同一工程里,但 object 入口仍然是 --object_partnet。这意味着:
- stage1 已经接近 source-agnostic,因为
pipeline/video_generator.py实际只需要object_image_path - stage2 仍然强绑定
object_partnet_dir,这是当前最主要的 source coupling pipeline/core/partnet_rendering/asset.py已经有ArticulatedAsset,适合升级为整个 pipeline 的 canonical object abstraction
目标不是继续把 pipeline 绑定在单一来源上,而是把不同来源的 articulated object 统一到同一个 sim-ready canonical asset,再统一送入 stage1 / stage2 / stage3。
总体原则¶
physical-first: canonical object 的核心必须是sim-ready articulated physical proxy,本质上是 mesh/URDF/USD/collision/dynamics,而不是纯 visual representation。visual/physical decoupling when needed: 如果来源是3DGS,则必须显式分离视觉代理和物理代理;视觉代理负责 stage1/stage2 的外观与渲染,物理代理负责 stage2/stage3 的 articulation 和 simulation。alias when mesh-native: 如果来源本身就是高质量 textured mesh,并且已经带 articulation/physics,那么 visual proxy 和 physical proxy 可以共享同一套 mesh,只是不再需要强制分离。stage3 requires physics: stage3 mimic 是必须做的,因此最终 canonical asset 不能只停留在 mesh + joints,必须补齐可用于仿真的物理属性。object-first decoupling: stage2 先稳定恢复 articulated object 的 pose/joint state,再做 human fitting / mimic,会比人和物一起从 monocular ambiguity 里硬优化更稳。
三类 articulated object 来源¶
| 路线 | 代表工作 | 优点 | 主要问题 | 在本项目中的角色 |
|---|---|---|---|---|
PartNet / GS-enhanced baseline |
ArtGS, VideoArtGS, ArtHOI | URDF/kinematics 清晰,最容易直接进 SAPIEN / Isaac;工程上最稳 | PartNet 原始 mesh/texture 质量参差不齐;GS 本体不能直接作为 simulation canonical | 第一阶段主干 baseline。推荐采用 PartNet physical proxy + GS/high-quality render visual proxy |
Generative / articulation from mesh or image |
Particulate, Articulate-Anything, Articulate AnyMesh, URDFormer, PhysX-3D | 能把 object source 扩展到 open-vocab mesh、image-to-3D、internet image | articulation/joint/collision/physics 完整度不一致,需要统一 canonicalization 和 physics completion | 第二阶段扩规模主线,解决“不可能只做 PartNet”的问题 |
Reconstruction / physical generation |
SINGAPO, MonoArt, PhysX-Anything | 更接近真实场景 single-image / monocular video 到 sim-ready asset 的最终形态 | 对输入视角、遮挡、实例偏差更敏感;不同方法对 physics 的覆盖程度不一致 | 长期路线。适合单图/单视频真实资产构建和真实场景扩展 |
要进入统一 pipeline,一个 object asset 至少应满足五类属性:
可渲染视觉代理可仿真的 canonical mesh/physical proxy完整 articulation/kinematics可导入 simulator 的结构化格式或等价导出能力可用于 mimic 的物理属性
如果来源是 3DGS,还必须补一个效果足够好的 mesh 作为 physical proxy;如果来源本身就是 mesh-native asset,则 visual proxy 可以直接是 textured mesh 本身。
在看下面的表之前,需要先区分几个容易混淆的概念:
Visual proxy: 给 stage1/stage2 提供外观、渲染和 photometric supervision 的表示。它可以是 textured mesh,也可以是绑定在 mesh 上的 3DGS。Physical proxy mesh: 给 stage2/stage3 和 simulator 使用的 mesh-based canonical object。后续 articulation、导出 URDF/USD、以及统一 object state 都依赖它。Collider: simulator 真正拿去做碰撞求解的 collision proxy。它有时可以直接等于physical proxy mesh,但很多时候不应该直接共用。原因是physical proxy mesh更强调几何保真、part 拓扑和 joint 对应关系,而collider更强调碰撞稳定、计算开销和接触鲁棒性。对于GS导出的 mesh、单图/单视频重建 mesh、生成式 mesh、或者 contact-rich mimic 任务,通常都要再做simplification / VHACD / convex decomposition / SDF,而不是直接拿 canonical mesh 当 collider。Sim-loadable / kinematic-ready: 表示这个 asset 至少有 mesh、link tree、joint type、joint axis、joint limits,能够被导入 simulator,并通过 root pose 和 joint state 驱动起来。Physics-complete for mimic: 表示除了上面的几何和运动学结构,还显式具备或容易补齐mass / inertia / friction / damping / drives,适合做 contact-rich mimic、policy learning、稳定碰撞和动力学控制。Kinematic playback: 直接给 root pose 和 joint angle/velocity,物体照样能在 simulator 里动起来。这时候你其实不需要完整动力学参数。Dynamic control / mimic: 如果你要让 policy、contact、反作用力、推拉、碰撞稳定,那就需要物理属性。这并不意味着这条路线不能做;更准确地说,如果来源本身没有现成参数,就需要在导入后做physics completion或post-processing,补mass / inertia / friction / damping / drives。InterMimic导入OMOMO时就是这个思路:数据提供 motion 和 object mesh,simulation 侧再统一指定 density、friction、damping、collision,并把 mesh 转成可仿真的 USD/asset。
Baseline Capability Matrix¶
下表采用“短词 + ✓ / ~”的形式,图例统一放在这里:
Visualmesh: 视觉代理直接是 textured mesh 或 reconstructed mesh3DGS+mesh: 用3DGS做视觉代理,同时保留或导出 mesh 做 physical proxymesh/prog: visual asset 是 mesh,但 articulation / structure 还依赖程序化描述gen-mesh: 程序化生成的 meshPhys meshnative: 来源本身已有可用的 physical proxy meshextract: 必须先从3DGS或重建结果里导出 mesh,才能作为 physical proxyrecon: 通过 image / video reconstruction 得到 physical meshgen: 生成式方法直接输出 articulated meshassemble: 由预定义 part 或模板组装得到 meshphys-native: 来源本身就是 physical-first mesh assetgen-native: 程序化生成且自带 simulator-oriented meshCollidernative: 已有 collision entry,可直接作为起点使用native*: 数据本身已有 collision entry,但为了稳定 contact,通常仍建议再做 simplification /VHACDnative†: 已经有可用的 native collision / physical export 路径,但面向具体任务时通常仍要调 simplification、contact offset、friction、drive 或其他 simulator 参数rebuild: 不能直接拿 visual geometry 做 collision,通常要重新生成 collision meshSim✓ direct: 可以直接进 simulator~ export: 方法已有结果,但还要先导出为URDF / USD / MJCF等格式~ package: 已经有mesh + articulation,但还要整理成 simulator 可直接读取的 asset bundle 或结构化描述Physics✓ native: 已显式带物理属性post: 不是不能进 stage3,而是要做 simulator-sidephysics completion,补mass / inertia / friction / damping / drives
| 方法/来源 | Visual | Phys mesh | Collider | Joints | Sim | Physics | 备注 |
|---|---|---|---|---|---|---|---|
PartNet-Mobility |
mesh | native | native* | native | ✓ direct |
post | 最稳的 physical backbone,视觉一般 |
ArtGS |
3DGS+mesh |
extract | rebuild | recon | ~ export |
post | 适合作为 visual branch + mesh refinement |
VideoArtGS |
3DGS+mesh |
extract | rebuild | recon | ✓ URDF |
post | 强在 visual twin 和 articulated recon |
Particulate |
mesh | gen | rebuild | pred | ~ package |
post | 适合作为 articulation canonicalization 模块 |
Articulate AnyMesh |
mesh | gen | rebuild | pred | ~ package |
post | 适合把高质量静态 mesh 转成 articulated mesh |
Articulate-Anything |
mesh/prog |
gen | rebuild | pred | ✓ URDF |
post | open-world articulation agent,不是 physics-complete |
URDFormer |
mesh | assemble | rebuild | pred | ✓ URDF |
post | 适合 image-to-URDF bootstrap |
SINGAPO |
mesh | gen | rebuild | gen | ~ package |
post | 更偏 plausible articulated generation |
MonoArt |
mesh | recon | rebuild | recon | ~ export |
post | 适合作为 single-image recon branch |
PhysX-3D |
mesh | phys-native | native† |
pred | ✓ export |
✓ native |
目前最接近 physics-first mesh-native asset |
PhysX-Anything |
mesh | phys-native | native† |
pred | ✓ export |
✓ native |
单图到 physical articulated asset 的强候选 |
Infinigen-Articulated |
gen-mesh | gen-native | native† |
gen | ✓ MJCF/URDF/USD |
✓ native |
很适合大规模 procedural sim data |
补充说明:
ArtHOI和CRISP更适合作为 downstream reconstruction / mimic 设计参考,而不是 primary object source,因此不放在上面的 source capability matrix 里。ArtGS / VideoArtGS不是“只有 GS 没有 mesh”。更准确的说法是:它们的 visual branch 可以是 GS,但要进入 stage3,就必须保留或额外导出 mesh-based physical proxy,并进一步构建 collision mesh。Particulate / Articulate AnyMesh / Articulate-Anything / URDFormer / MonoArt解决的是articulation + sim-loadable structure的很大一部分问题,但不应默认等价于“完整 mimic-ready physical asset”。真正打通 stage3 时,仍要补 physics completion。- 本地
PartNet-Mobility样例 URDF 中能看到visual、collision、joint axis、joint limit,但当前检查到的样例没有显式inertial / mass / damping标签,因此更准确地说,它天然支持kinematic-ready,而不是天然physics-complete。
基于 Capability Matrix 的实验优先级¶
P0: PartNet physical backbone + custom physics completion + optional GS visual proxy¶
原因:
- 这是当前仓库最容易接入、最稳的路线。
PartNet已有 mesh + URDF + joints,天然满足kinematic-ready,离 stage3 主要差的是physics completion。- 视觉质量不足的问题可以通过
custom curated textured subset、重渲染、或叠加ArtGS / VideoArtGS风格 visual proxy 来补。
建议:
- 不要再写成“PartNet texture high-quality”。应明确叫
custom curated PartNet textured subset。 - 先把
stage0 canonicalization + physics completion跑通:collision mesh、mass/inertia、friction、joint drive、scale calibration。
P1: Infinigen-Articulated¶
原因:
- 这是最适合做大规模、可控、procedural、sim-oriented augmentation 的来源。
- 相比 open-world generation,它更接近你需要的 simulator data factory。
- 它非常适合补强 stage2/stage3 的 pretraining 和 stress test。
限制:
- 与真实 internet image 的外观分布仍有差距,因此更适合作为训练扩展而不是唯一评测来源。
P2: PhysX-3D / PhysX-Anything¶
原因:
- 这条线是目前最接近你最终目标的:single image -> physical articulated asset。
- 也是 capability matrix 里少数天然更接近
physics-complete for mimic的路线。 - 一旦可复现,它最适合作为未来 stage1/stage2/stage3 统一主干。
限制:
- 方法新、工具链新、复现成本和稳定性风险都更高。
P3: MonoArt¶
原因:
- 它是 single-image articulated reconstruction 里非常强的一条线,并且官方明确展示了 IsaacSim 导入。
- 相比纯生成,它更贴近“从真实物体图像恢复可操作资产”的目标。
限制:
- 目前仍缺完整 physics attrs,因此适合作为
single-image recon branch,但还不是完整 stage3 终态。
P4: Particulate / Articulate AnyMesh / Articulate-Anything / URDFormer¶
原因:
- 这组方法非常适合解决
object source diversity和long-tail category scaling。 - 它们可以把现成 mesh、internet image、retrieved mesh 快速规范化到 articulated structure。
限制:
- 它们应被视为
articulation canonicalization module,而不是完整stage3-ready physical asset。 - 真正进入 mimic 之前,还必须挂接统一 physics completion。
P5: ArtGS / VideoArtGS¶
原因:
- 它们非常适合提升 visual quality、重建 fidelity 和 track/render loss 的稳定性。
- 对 stage1 reference 和 stage2 appearance modeling 很有帮助。
限制:
- 它们更适合作为
visual branch或mesh refinement branch,而不是唯一 canonical source。 - 如果 visual representation 采用 GS,必须显式配一套 mesh-based physical proxy。
统一接口设计¶
建议把 object abstraction 从 “某个 source 的目录结构” 改成 “统一 canonical asset + visual/physical proxy + stage-specific view” :
@dataclass
class CanonicalArticulatedAsset:
asset_id: str
source_type: str # partnet, videoartgs, particulate, anymesh, monoart, physx_anything, infinigen, custom
visual: list[VisualProxy]
physical: PhysicalProxy
articulation: ArticulationSpec
physics: PhysicsSpec
refs: ReferencePack
qc: QualityReport
@dataclass
class VisualProxy:
proxy_type: str # textured_mesh, gs_bound_to_mesh, renders, real_image
uri: str
bound_mesh_uri: str | None
metadata: dict
@dataclass
class PhysicalProxy:
mesh_path: str
collision_mesh_path: str | None
urdf_path: str | None
usd_path: str | None
canonical_scale: float
@dataclass
class ArticulationSpec:
joint_spec: dict
kinematic_tree: dict
state_limits: dict
@dataclass
class PhysicsSpec:
mass: dict
inertia: dict
friction: dict
damping: dict
drives: dict
status: str # explicit, estimated, missing
@dataclass
class ReferencePack:
canonical_views: list[str]
articulation_views: list[str]
masks: list[str]
depths: list[str]
normals: list[str]
text_prompt_hint: str
设计要点:
physical永远是 mesh-based proxy,因为后续 stage3/Isaac 必须依赖它。visual可以是 textured mesh,也可以是gs_bound_to_mesh。- 如果来源本身是 mesh-native 并且质量足够高,
visual和physical可以引用同一 mesh。 - 如果来源是 GS-first,必须额外保留一个可导出的 high-quality mesh 作为
physical。 physics.status必须显式记录来源是explicit还是estimated,否则 stage3 风险不可控。
各 stage 应该消费什么¶
Stage1 / videogen: 输入ReferencePack + VisualProxy,不应只依赖单个object_image_path。Stage2 / recon: 对齐和优化对象应该是PhysicalProxy + ArticulationSpec;如果有 GS 或高质量 visual mesh,则把它作为VisualProxy参与 render/rgb loss。Stage3 / mimic: 必须输入PhysicalProxy + ArticulationSpec + PhysicsSpec + tracked root pose + joint trajectory + contact events。
建议的代码抽象改造¶
- 保留并升级
pipeline/core/partnet_rendering/asset.py里的ArticulatedAsset,将其上升为 pipeline 级 canonical asset。 - 将 CLI 从
--object_partnet改成--object_source_type和--object_source_uri,或直接接--object_asset_spec。 - 将
pipeline/object_utils.py改造成通用reference_renderer,输入CanonicalArticulatedAsset,输出ReferencePack。 - 将
pipeline/hoi_reconstructor.py的load_data(video_path, human_gs_path, object_partnet_dir)改为load_data(video_path, human_gs_path, object_asset)。 - 在 stage0 增加一个统一的
asset canonicalization + physics completion + sim validator,负责: - 导出
URDF/USD - sweep joints 检查 limit / self-collision
- 生成 collision mesh
- 补齐
mass / inertia / friction / damping / drives - 生成 stage1 所需的多视图 reference pack
一句话总结¶
推荐采用:
canonical representation = mesh-based sim-ready physical proxyvisual representation = textured mesh or GS bound to meshpipeline strategy = physical-first + optional visual/physical decoupling + stage-shared interface
换句话说,后续无论 object 来自 PartNet、ArtGS、VideoArtGS、Particulate、Articulate-Anything、MonoArt、PhysX-Anything 还是 Infinigen-Articulated,都先被规范化到同一个 CanonicalArticulatedAsset。差别只在于:有些来源已经带 physics,有些只带 mesh + articulation,有些还需要从 GS 中额外抽 mesh 作为 physical proxy。