File size: 1,862 Bytes
7b2438b 27599a2 7b2438b 1894439 27599a2 076a2d9 27599a2 7b2438b ded836d 7b2438b ded836d 4479756 02ecc6a 27599a2 1894439 7b2438b ded836d 31a84ae 21c5fc5 31a84ae 02ecc6a b09bcbb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | ---
license: mit
tags:
- 3d-reconstruction
- affordance-grounding
- flow-matching
- rgbd
arxiv: 2601.09211
---
# Affostruction
**Affostruction: 3D Affordance Grounding with Generative Reconstruction** — CVPR 2026, Denver.
[Chunghyun Park](https://chrockey.github.io/)<sup>1</sup>,
[Seunghyeon Lee](https://llishyun.github.io/)<sup>1</sup>,
[Minsu Cho](http://cvlab.postech.ac.kr/~mcho/)<sup>1,2</sup>
<sup>1</sup>POSTECH <sup>2</sup>RLWRLD
- Paper: https://arxiv.org/abs/2601.09211
- Project page: https://chrockey.github.io/Affostruction/
- Code: https://github.com/chrockey/Affostruction
## Pretrained checkpoints
Each subfolder contains a flat `config.json` + `model.safetensors`. SLAT + mesh/gaussian decoders come from [`microsoft/TRELLIS-image-large`](https://huggingface.co/microsoft/TRELLIS-image-large).
| Model | Description | # Params |
|-------|-------------|---------:|
| `reconstruction` | Multi-view RGBD sparse-structure flow | 164.6 M |
| `affordance` | Text-conditioned affordance heatmap flow | 185.4 M |
## Usage
```python
from affostruction import AffostructionPipeline
pipeline = AffostructionPipeline.from_pretrained("chrockey/Affostruction").cuda()
outputs = pipeline.run(input_dict, queries=["Point to the part you would sit on."])
coords = outputs["coords"] # (N, 4) sparse voxel coords
probs = outputs["affordance"][0]["probs"] # (N,) per-voxel heatmap in [0, 1], paired with coords
```
> **Need mesh / gaussian?** Pass `formats=["mesh", "gaussian"]` — decoding is opt-in.
>
> **Reconstruction only?** Drop `queries`.
End-to-end examples in the [GitHub repo](https://github.com/chrockey/Affostruction): `examples/affostruction.py` (full pipeline), `examples/reconstruction.py` (reconstruction-only), and `examples/reconstruction_unposed.py` (experimental unposed single-view).
|