跳转至

Articulated Asset Roadmap

本文件记录当前 ArtHOI4D pipeline 向通用 articulated object source 演化的路线判断、asset 要求、baseline capability matrix、实验优先级和统一接口设计。

背景

截至 2026-03-24,仓库已经把 VideoArtGSpipeline/hoi_reconstructor.pyInterMimicpartnet_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 至少应满足五类属性:

  1. 可渲染视觉代理
  2. 可仿真的 canonical mesh/physical proxy
  3. 完整 articulation/kinematics
  4. 可导入 simulator 的结构化格式或等价导出能力
  5. 可用于 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 completionpost-processing,补 mass / inertia / friction / damping / drivesInterMimic 导入 OMOMO 时就是这个思路:数据提供 motion 和 object mesh,simulation 侧再统一指定 density、friction、damping、collision,并把 mesh 转成可仿真的 USD/asset。

Baseline Capability Matrix

下表采用“短词 + ✓ / ~”的形式,图例统一放在这里:

  • Visual
  • mesh: 视觉代理直接是 textured mesh 或 reconstructed mesh
  • 3DGS+mesh: 用 3DGS 做视觉代理,同时保留或导出 mesh 做 physical proxy
  • mesh/prog: visual asset 是 mesh,但 articulation / structure 还依赖程序化描述
  • gen-mesh: 程序化生成的 mesh
  • Phys mesh
  • native: 来源本身已有可用的 physical proxy mesh
  • extract: 必须先从 3DGS 或重建结果里导出 mesh,才能作为 physical proxy
  • recon: 通过 image / video reconstruction 得到 physical mesh
  • gen: 生成式方法直接输出 articulated mesh
  • assemble: 由预定义 part 或模板组装得到 mesh
  • phys-native: 来源本身就是 physical-first mesh asset
  • gen-native: 程序化生成且自带 simulator-oriented mesh
  • Collider
  • native: 已有 collision entry,可直接作为起点使用
  • native*: 数据本身已有 collision entry,但为了稳定 contact,通常仍建议再做 simplification / VHACD
  • native†: 已经有可用的 native collision / physical export 路径,但面向具体任务时通常仍要调 simplification、contact offset、friction、drive 或其他 simulator 参数
  • rebuild: 不能直接拿 visual geometry 做 collision,通常要重新生成 collision mesh
  • Sim
  • ✓ direct: 可以直接进 simulator
  • ~ export: 方法已有结果,但还要先导出为 URDF / USD / MJCF 等格式
  • ~ package: 已经有 mesh + articulation,但还要整理成 simulator 可直接读取的 asset bundle 或结构化描述
  • Physics
  • ✓ native: 已显式带物理属性
  • post: 不是不能进 stage3,而是要做 simulator-side physics 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

补充说明:

  • ArtHOICRISP 更适合作为 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 中能看到 visualcollisionjoint axisjoint 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 diversitylong-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 branchmesh 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 并且质量足够高,visualphysical 可以引用同一 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.pyload_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 proxy
  • visual representation = textured mesh or GS bound to mesh
  • pipeline strategy = physical-first + optional visual/physical decoupling + stage-shared interface

换句话说,后续无论 object 来自 PartNetArtGSVideoArtGSParticulateArticulate-AnythingMonoArtPhysX-Anything 还是 Infinigen-Articulated,都先被规范化到同一个 CanonicalArticulatedAsset。差别只在于:有些来源已经带 physics,有些只带 mesh + articulation,有些还需要从 GS 中额外抽 mesh 作为 physical proxy。