- [2026-10-08] Data engine and the full dataset released (Hugging Face).
- [2026-10-01] Paper released on arXiv.
- [2026-09-29] Project page and trailer released.
- Project page
- Paper
- Dataset on Hugging Face (states, recipes, parts, four-view renders, part masks, part captions)
- Data engine: chain building, rebuild, rendering, annotation pipelines and prompts
457 edit chains, 2,755 edits and 3,212 states on 252 host objects, at huggingface.co/datasets/AlayaLab/EditHero. Every chain has its instructions, the exact state after every turn (GLB), the recipe that rebuilds it, renders of every state from a fixed four-view rig (view 0 is the conditioning view, views 1-3 are held out) and 2D masks of the parts edited in each turn. The dataset card explains the layout and how to download only what you need.
A chain starts from a textured, part-segmented host object; every turn adds, removes or replaces a part, or gives a part a new material. New parts are retrieved from a part library by their captions and placed on the host's contact surfaces with five geometric checks; new materials are restyled in an image and re-textured in 3D. The result is a recipe from which every state is rebuilt and verified exactly.
| Path | Contents |
|---|---|
part_assembly/chain_run.py |
Builds a chain: host slots, retrieval, placement and checks, retexturing, rendering (--stage run / serve / render) |
part_assembly/embed_library.py, embed_retrieve.py, build_replace_chains.py |
Part library embeddings, retrieval, caption handling |
part_assembly/restyle_serve.py, tex_serve.py, blender_serve.py |
Workers for restyling (Qwen-Image-Edit-2509), 3D texturing (TRELLIS.2) and rendering (Blender) |
part_assembly/slot_registry.py, contact_graph.py, change_meter.py |
Host slots, contact graph, visible-change measure |
part_assembly/tools/ |
assemble.py rebuilds and verifies a chain from its recipe; finalize_chain.py turns an engine run into a recipe; registry_from_manifest.py takes a dataset host's slots |
part_assembly/annotate/ |
Part captions (PartVerse-XL, HY3D-Bench) and the assembly chains of family A, with every prompt (README) |
scripts/render_state.py |
Renders a state, or your own GLB, with a chain's fixed four-view rig |
jobs/rebuild_all.sh |
Rebuilds and verifies every chain of the dataset |
docs/DATA_ENGINE.md |
How to build a new chain, step by step |
docs/INSTRUCTIONS.md |
How the instructions are written |
All paths are environment variables (part_assembly/local_paths.py).
# data
huggingface-cli download AlayaLab/EditHero --repo-type dataset --local-dir EditHero
cd EditHero && for t in data/*/*.tar; do tar -xf "$t" && rm "$t"; done && cd ..
# rebuild every chain from its recipe and verify it
bash jobs/rebuild_all.sh EditHero/data out/
# PASS A/1a3267df_s0 (verified vs checks.json) ...
# render a state with its chain's rig (Blender 4.2 + blender_kit)
git clone https://github.com/AuroraRyan0301/Blender-Visualization-Skill third_party/blender_kit
python scripts/render_state.py --data EditHero/data --chain A/1a3267df_s0 --turn 1 --out out/A_1a3267df_s0_turn01
# f0000.png is the cond view, f0001-f0003.png the held-out views; --glb your_result.glb renders your own edit- Library. Point
PXFORM_LIBRARY_ROOTat the PartVerse-XL parts and set up retrieval from the released captions (annotate/merge_captions.py --from-release, thenembed_library.py). - Slots. Register the host's slots: for a dataset host,
tools/registry_from_manifest.py <its turn00_manifest.json>; for a new host, group its parts withslot_registry.put. - Chain.
chain_run.py --stage runbuilds a replacement chain automatically;chain_run.py --stage servebuilds a chain with all four operations, asking a person or an LLM agent for each decision through small text files. - Recipe.
tools/finalize_chain.pywrites the manifest and checks and verifies the rebuild; then write the instructions withdocs/INSTRUCTIONS.md.
The full walk-through, with the settings, the slot format and the decision protocol, is in docs/DATA_ENGINE.md.
All renders in EditHero are made with blender_kit, a small Blender/Cycles toolkit for checking generation and reconstruction results by eye. If it saves you an afternoon of arguing with Blender, a ⭐ on it would make its author's day.
Code: MIT (LICENSE); third-party components: THIRD_PARTY_LICENSES.md. Data: see the dataset card (our annotations
CC BY 4.0; meshes, textures and renders keep the license of their source objects).
@misc{yu2026editherobenchmarklonghorizonpartlevel,
title={EditHero: A Benchmark for Long-Horizon Part-Level 3D Editing and Vibe Modeling},
author={Ruihan Yu and Yu-Ju Tsai and Muyao Niu and Runyi Li and Lian Fu and Hanqing Liu and Zheng-Hui Huang and Yonghao Yu and Sho Kuno and Ming-Hsuan Yang and Kaipeng Zhang and Zhixiang Wang},
year={2026},
eprint={2610.02298},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2610.02298},
}