Shapecraft
Official repo for NeurIPS 2025 poster - ShapeCraft: LLM Agents for Structured, Textured and Interactive 3D Modeling.
Install / Use
/learn @SanBingYouYong/ShapecraftREADME
<p align="center">
<h2 align="center"><strong>[NeurIPS 2025] ShapeCraft:<br> LLM Agents for Structured, Textured and Interactive 3D Modeling</strong></h2>
<p align="center">
<a href="https://sanbingyouyong.github.io">Shuyuan Zhang</a><sup>1,*</sup>,
<a href="https://jiangchenhan.github.io/">Chenhan Jiang</a><sup>2,*,†</sup>,
<a href="https://leo9344.github.io/">Zuoou Li</a><sup>1</sup>,
<a href="https://jiankangdeng.github.io">Jiankang Deng</a><sup>1,†</sup>
<br>
<sup>1</sup>Imperial College London,
<sup>2</sup>Hong Kong University of Science and Technology
<br>
<sup>*</sup>Indicates Equal Contribution, <sup>†</sup>Corresponding Author
</p>
<div align="center">
<a href='https://arxiv.org/abs/2510.17603'><img src='https://img.shields.io/badge/arXiv-2510.17603-b31b1b.svg'></a> <a href='https://sanbingyouyong.github.io/shapecraft/'><img alt="Static Badge" src="https://img.shields.io/badge/Project%20Page-8250df?link=https%3A%2F%2Fsanbingyouyong.github.io%2Fshapecraft%2F"></a>
</div>
📚 Table of Contents
🚀 Quick Start
- Install dependencies with
uv syncandsource .venv/bin/activate, alternatively:- Dockerfile is also available with
pip installlines which you may reference;- to use within docker image, download blender 4.2.9 LTS tar.xz (the blender version we used, any other versions with no major API change should also work) file from here and put into
./docker, then rundocker build -t shapecraft .- you have to install Blender in some way anyways; - the Dockerfile currently commented out dependencies needed to run on external datasets and do evaluations to avoid heavy packages - yes, you, torch;
- to use within docker image, download blender 4.2.9 LTS tar.xz (the blender version we used, any other versions with no major API change should also work) file from here and put into
- Dockerfile is also available with
- Set up API keys for LLM queries in
.envfile: e.g.GPT,GEMINI,deepseekorQWEN, checkllm/llms.pyfor env var retrieved;- Set up blender path in
.envfile too under the nameBLENDER_EXE_if you cannot call blender in terminal by simply callingblender ...;
- Set up blender path in
- Run experiments with
python pipelines/run.py;- configure different model choices from
./configyaml files; - currently what shape prompts to use is still left within
run.pywith plenty of examples.
- configure different model choices from
🔍 Code Structure
I personally apologize for not delivering the best code quality in this code base... but if you insist in looking into the details:
pipelines/run.pyas the main entry point;promptfolder holds various prompts used;runsthe result folder with each run time-stamped;llmthe wrapper for llm queries - this later evolved into the llms "library/package/submodule";blendsholds blender files for automatic rendering set-ups;code_snippetsfolder hold processes that are dynamiclly concatenated to execute in blender - if you used a different blender version, this is most likely the place that will go wrong due to API changes;dagthe wrapper for our graph-based procedural shape representation - a legacy abbr;utils/consts.pyhold constant values like project root;chat_dumpandvisfor visualization (e.g. chat histories) - now also part of the llms' functionality!
📜 License
- Code: Licensed under the MIT License
- Paper & Documentation: Licensed under CC-BY 4.0
📄 BibTeX
TODO: will replace this arxiv preprint bibtex with actual NeurIPS 2025 bibtex.
@misc{zhang2025shapecraftllmagentsstructured,
title={ShapeCraft: LLM Agents for Structured, Textured and Interactive 3D Modeling},
author={Shuyuan Zhang and Chenhan Jiang and Zuoou Li and Jiankang Deng},
year={2025},
eprint={2510.17603},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2510.17603},
}
