Over ldraw-nova
ldraw-nova is een innovatieve tool die agentic LLM's in staat stelt om fysiek bouwbare LEGO-modellen te ontwerpen. Het project omzeilt de beperkingen van AI bij complexe geometrische wiskunde door agents Python-code te laten schrijven die de wiskunde uitvoert, in plaats van de LDraw-broncode direct te produceren.
De Workflow
Het generatieve proces volgt een specifieke keten: agent → plan.json → generator.py → model.mpd.
De agent doorloopt een iteratieve cyclus van planning, rendering en inspectie, ondersteund door uitgebreide gidsen over visueel design, voertuigen en mechanismen.
Technische Details en Output
- Output: De tool levert LDraw-broncode, 3D-weergaven (waaronder VR voor Meta Quest 3), glTF-bestanden voor Blender en de volledige chatgeschiedenis.
- Installatie: De applicatie wordt gedraaid als een webapp via Docker, waarbij gebruik wordt gemaakt van
jev-rerank voor semantisch zoeken naar onderdelen.
- Toekomst: De ontwikkelaars richten zich op het optimaliseren van de VR-ervaring, het verlagen van de generatiekosten en het uitbreiden van de model-families naar onder andere minifiguren en Technic-modellen.
ldraw-nova: AI-tooling voor het generatief bouwen van LEGO-modellen
Resultaten van het bouwproces
Wanneer het bouwproces is voltooid, ontvang je het volgende:
- De broncode in de LDraw-taal.
- Verschillende weergaven: een 3D-viewer, 3D-player, VR-interactieve weergave (Meta Quest 3) en afbeeldingen.
- Een bewerkbaar glTF-bestand voor Blender in
.glb-formaat, met metagegevens als Blender Custom Properties.
- De chatgeschiedenis en het denkproces van de agent.
---
Installatie
Belangrijk
De tools die agents gebruiken om geschikte onderdelen en voorbeeldmodellen te vinden, maken gebruik van jev-rerank. Dit is een tool voor semantisch zoeken met re-ranking, ondersteund door het Jev System One AI-model van TypeSafe.
- Indien je beschikt over een TypeSafe API-sleutel (
TYPESAFEAPIKEY), kun je deze instellen in de sectie Settings van de webapp.
- Zonder deze sleutel zal de re-ranking search niet werken. De agents vallen dan terug op een Full Text Search (FTS) strategie, wat mogelijk kan leiden tot minder kwalitatieve modellen.
Stappenplan voor installatie
Run ldraw-nova als een webapp met Docker. Hiervoor zijn Git en Docker vereist. De webapp draait in een Docker-container; om het Docker-image te bouwen zijn twee naast elkaar gelegen repositories nodig:
ldraw-nova: de hoofdrepository.
ldraw-nova-docker: bevat de Docker-configuratie en de webapp.
1. Clone beide repositories naast elkaar (gebruik dezelfde tag voor compatibiliteit):
git clone --branch v0.6.0 https://github.com/anteloc/ldraw-nova.git
git clone --branch v0.6.0 https://github.com/anteloc/ldraw-nova-docker.git
2. Bouw het Docker-image: De eerste build neemt enige tijd in beslag en vereist ongeveer 5 GB schijfruimte.
cd ldraw-nova-docker
docker compose build
3. Start de applicatie:
docker compose up -d
4. Open de applicatie in je browser:
https://localhost:8443: Nodig voor VR op de Meta Quest 3. Het certificaat is zelfondertekend, dus accepteer de browserwaarschuwing bij het eerste bezoek.
http://localhost:8765: Gewoon HTTP, zonder certificaatwaarschuwingen. Gebruik dit als het zelfondertekende certificaat problemen veroorzaakt (let op: VR werkt hier niet via).
Andere apparaten in het netwerk kunnen de app bereiken via het IP-adres van de computer in plaats van localhost (bijv. https://192.168.1.20:8443 vanaf een Quest 3). De app heeft geen inlogfunctie; draai deze daarom alleen op netwerken die je vertrouwt.
Om de applicatie te stoppen:
docker compose down
---
Visie en Motivatie
Het doel van dit project is om agentic LLM's in staat te stellen om bouwbare, fysieke objecten te ontwerpen.
LDraw is een assembly-taal voor 3D CAD-modellen die tegelijkertijd simpel en low-level is. Dit inspireerde tot experimenten met ChatGPT en Claude om te kijken of zij in LDraw kunnen programmeren, vergelijkbaar met hoe zij andere programmeertalen beheersen.
Hoewel LDraw sterk leunt op wiskunde (rotaties van onderdelen, positionering), waar LLM's normaliter moeite mee hebben, bleken agents in initiële tests verrassend goed te presteren. Toch waren de gegenereerde modellen zelden direct correct. Dit leidde tot de volgende onderzoeken:
- Initiële research:
ldbuilder-ai
- Eerste poging tot agentic Python tooling:
py2bricks
- Tweede poging:
py4bricks
Conclusies uit experimenten
- Conclusie 1: Er is een weg van minimale weerstand voor geometrische wiskunde voor agents. Door agents tooling te geven om LDraw-bronnen te genereren, wordt de complexe geometrische wiskunde omzeild. Agents zijn namelijk veel beter in het genereren van Python-code die wiskunde uitvoert, dan in het direct produceren van de wiskundige resultaten zelf.
- Conclusie 2: Agents leren beter van Python-code die modellen produceert dan van de modellen zelf (vanwege de complexe geometrie van LDraw).
De oplossing was het creëren van Python-based tooling met de benodigde primitieven, werkwoorden en constructieve woordenschat, zodat agents door voorbeelden kunnen leren. Dit bleek zeer uitdagend, totdat GPT-6 Astra en Claude Opus 5.5 dit via "vibe coding" correct konden implementeren.
---
Hoe het werkt
ldraw-nova biedt de tools, voorbeelden en instructies die een agent nodig heeft om modellen te ontwerpen met echte LDraw-onderdelen.
Het proces
- De agent ontvangt een prompt.
- De agent leest
instructions.md en gerelateerde documenten over de LDraw-taal en het bouwen van LEGO©-modellen.
- De agent plant de bouw: benodigde onderdelen, te maken submodellen, esthetiek, etc.
- In een iteratieve cyclus:
- Rendert de agent afbeeldingen van het model of de submodellen.
- Inspecteert deze, past positionering en esthetiek aan, en rendert opnieuw.
- Dit gaat door tot de agent het model als voltooid en klaar voor levering beschouwt.
Ondersteunende tooling
De tooling helpt de agent bij:
- Het vinden van geschikte onderdelen.
- Het vinden van voorbeeldmodellen en submodellen als startpunt.
- Detectie van collisies en gaten voor correcte plaatsing van onderdelen.
- Headless rendering voor het inspecteren van resultaten.
De generatielogica
De agent plaatst niet direct onderdelen (behalve bij prototyping). De workflow is als volgt:
- Informatie verzamelen uit experimenten, documentatie en planning.
- Eén of meerdere plannen bouwen die het model en de submodellen volledig beschrijven (bijv.
atlas-crane.plan.json).
- Met dit plan één of meerdere generator-scripts maken (bijv.
generate.py).
- Bij uitvoering produceren deze scripts de LDraw-bronbestanden (bijv.
atlas-crane.mpd).
Samenvattend: een agent creëert een generator, die een 3D-model produceert in de assembly-taal LDraw.
Flowchart: agent → plan.json → generator.py → model.mpd
---
Informatiebronnen van de Agent
De volgende gidsen en referenties worden aan de agent verstrekt om het bouwproces te ondersteunen:
| Doel | Bron |
| Een model genereren | Agent instructions |
| Vorm, kleur en detail verbeteren | Visual design guide |
| Voertuigen bouwen | Vehicle workflow and examples |
| Geavanceerde ruimteschepen bouwen | Spaceship workflow and atlas |
| Een submodel leren en een atlas uitbreiden | Build-manual workflow |
| Technic-structuren bouwen | Structural workflow and examples |
| Bouwen met mechanismen | Mechanism workflow and build manuals |
| Onderdelen en herbruikbare constructies vinden | Reference discovery and reference atlas |
| Een groot model organiseren | Module workflow and Copper Lane example |
| Verbindingen en controles begrijpen | Geometry, snapping and validation |
| Een commando of regel voor het bestandsformaat opzoeken | Tool reference and LDraw rules |
---
Ontwikkeling en Toekomst
Aangezien dit een eerste release is, zijn er diverse punten die nog verbetering behoeven:
- VR op Meta Quest 3: Problemen met model-handling en performance.
- Adaptatie voor low-end agents: Tooling, documentatie en instructies aanpassen voor modellen zoals Luna en Haiku.
- Kosten van generatie: Momenteel zijn alleen dure high-end modellen in staat om grote en correcte modellen te genereren.
- Efficiëntie: Het generatieve proces is momenteel traag.
- Uitbreiding model-families:
- Mensen en dieren (minifigs).
- Technic-modellen (machines, motoren).
- Ruimteschepen (huidige resultaten zijn onvoldoende).
- Modellen bouwen vanuit handleidingen (werkt gedeeltelijk, werkt beter met afbeeldingen van pagina's).
- Fijnmazige inspectie: Inspectie van submodellen en hun stapsgewijze bouwproces.
---
Erkenningen
Dank aan de volgende partijen:
- De LDraw Community.
- Travis Cobbs (@tcobbs) en contributors van LDView.
- Leonardo Zide (@leozide) en contributors van LeoCAD.
- Roland Melkert van LDCad en Shadow Library.
- Park Joon-Kyu (@segfault87) en contributors van ldraw.rs.
- Harold Martin (@hbmartin) en contributors van pyldraw3.
- Alle overige LDraw-creators.
Noot: Voor dit werk zijn veel LDraw-modellen, bibliotheken, tools en documentatie gebruikt uit diverse bronnen. Veel mensen hebben decennialang hun werk beschikbaar gesteld aan het publieke domein en de open source community.
---
Handelsmerken
LEGO(R) is een handelsmerk van de LEGO Group of companies, die deze software niet sponsort, autoriseert of onderschrijft.
ldraw-nova: AI-tooling voor het generatief bouwen van LEGO-modellen
Resultaten van het bouwproces
Wanneer het bouwproces is voltooid, ontvang je het volgende:
- De broncode in de LDraw-taal.
- Verschillende weergaven: een 3D-viewer, 3D-player, VR-interactieve weergave (Meta Quest 3) en afbeeldingen.
- Een bewerkbaar glTF-bestand voor Blender in
.glb-formaat, met metagegevens als Blender Custom Properties.
- De chatgeschiedenis en het denkproces van de agent.
---
Installatie
Belangrijk
De tools die agents gebruiken om geschikte onderdelen en voorbeeldmodellen te vinden, maken gebruik van jev-rerank. Dit is een tool voor semantisch zoeken met re-ranking, ondersteund door het Jev System One AI-model van TypeSafe.
- Indien je beschikt over een TypeSafe API-sleutel (
TYPESAFEAPIKEY), kun je deze instellen in de sectie Settings van de webapp.
- Zonder deze sleutel zal de re-ranking search niet werken. De agents vallen dan terug op een Full Text Search (FTS) strategie, wat mogelijk kan leiden tot minder kwalitatieve modellen.
Stappenplan voor installatie
Run ldraw-nova als een webapp met Docker. Hiervoor zijn Git en Docker vereist. De webapp draait in een Docker-container; om het Docker-image te bouwen zijn twee naast elkaar gelegen repositories nodig:
ldraw-nova: de hoofdrepository.
ldraw-nova-docker: bevat de Docker-configuratie en de webapp.
1. Clone beide repositories naast elkaar (gebruik dezelfde tag voor compatibiliteit):
git clone --branch v0.6.0 https://github.com/anteloc/ldraw-nova.git
git clone --branch v0.6.0 https://github.com/anteloc/ldraw-nova-docker.git
2. Bouw het Docker-image: De eerste build neemt enige tijd in beslag en vereist ongeveer 5 GB schijfruimte.
cd ldraw-nova-docker
docker compose build
3. Start de applicatie:
docker compose up -d
4. Open de applicatie in je browser:
https://localhost:8443: Nodig voor VR op de Meta Quest 3. Het certificaat is zelfondertekend, dus accepteer de browserwaarschuwing bij het eerste bezoek.
http://localhost:8765: Gewoon HTTP, zonder certificaatwaarschuwingen. Gebruik dit als het zelfondertekende certificaat problemen veroorzaakt (let op: VR werkt hier niet via).
Andere apparaten in het netwerk kunnen de app bereiken via het IP-adres van de computer in plaats van localhost (bijv. https://192.168.1.20:8443 vanaf een Quest 3). De app heeft geen inlogfunctie; draai deze daarom alleen op netwerken die je vertrouwt.
Om de applicatie te stoppen:
docker compose down
---
Visie en Motivatie
Het doel van dit project is om agentic LLM's in staat te stellen om bouwbare, fysieke objecten te ontwerpen.
LDraw is een assembly-taal voor 3D CAD-modellen die tegelijkertijd simpel en low-level is. Dit inspireerde tot experimenten met ChatGPT en Claude om te kijken of zij in LDraw kunnen programmeren, vergelijkbaar met hoe zij andere programmeertalen beheersen.
Hoewel LDraw sterk leunt op wiskunde (rotaties van onderdelen, positionering), waar LLM's normaliter moeite mee hebben, bleken agents in initiële tests verrassend goed te presteren. Toch waren de gegenereerde modellen zelden direct correct. Dit leidde tot de volgende onderzoeken:
- Initiële research:
ldbuilder-ai
- Eerste poging tot agentic Python tooling:
py2bricks
- Tweede poging:
py4bricks
Conclusies uit experimenten
- Conclusie 1: Er is een weg van minimale weerstand voor geometrische wiskunde voor agents. Door agents tooling te geven om LDraw-bronnen te genereren, wordt de complexe geometrische wiskunde omzeild. Agents zijn namelijk veel beter in het genereren van Python-code die wiskunde uitvoert, dan in het direct produceren van de wiskundige resultaten zelf.
- Conclusie 2: Agents leren beter van Python-code die modellen produceert dan van de modellen zelf (vanwege de complexe geometrie van LDraw).
De oplossing was het creëren van Python-based tooling met de benodigde primitieven, werkwoorden en constructieve woordenschat, zodat agents door voorbeelden kunnen leren. Dit bleek zeer uitdagend, totdat GPT-6 Astra en Claude Opus 5.5 dit via "vibe coding" correct konden implementeren.
---
Hoe het werkt
ldraw-nova biedt de tools, voorbeelden en instructies die een agent nodig heeft om modellen te ontwerpen met echte LDraw-onderdelen.
Het proces
- De agent ontvangt een prompt.
- De agent leest
instructions.md en gerelateerde documenten over de LDraw-taal en het bouwen van LEGO©-modellen.
- De agent plant de bouw: benodigde onderdelen, te maken submodellen, esthetiek, etc.
- In een iteratieve cyclus:
- Rendert de agent afbeeldingen van het model of de submodellen.
- Inspecteert deze, past positionering en esthetiek aan, en rendert opnieuw.
- Dit gaat door tot de agent het model als voltooid en klaar voor levering beschouwt.
Ondersteunende tooling
De tooling helpt de agent bij:
- Het vinden van geschikte onderdelen.
- Het vinden van voorbeeldmodellen en submodellen als startpunt.
- Detectie van collisies en gaten voor correcte plaatsing van onderdelen.
- Headless rendering voor het inspecteren van resultaten.
De generatielogica
De agent plaatst niet direct onderdelen (behalve bij prototyping). De workflow is als volgt:
- Informatie verzamelen uit experimenten, documentatie en planning.
- Eén of meerdere plannen bouwen die het model en de submodellen volledig beschrijven (bijv.
atlas-crane.plan.json).
- Met dit plan één of meerdere generator-scripts maken (bijv.
generate.py).
- Bij uitvoering produceren deze scripts de LDraw-bronbestanden (bijv.
atlas-crane.mpd).
Samenvattend: een agent creëert een generator, die een 3D-model produceert in de assembly-taal LDraw.
Flowchart: agent → plan.json → generator.py → model.mpd
---
Informatiebronnen van de Agent
De volgende gidsen en referenties worden aan de agent verstrekt om het bouwproces te ondersteunen:
| Doel | Bron |
| Een model genereren | Agent instructions |
| Vorm, kleur en detail verbeteren | Visual design guide |
| Voertuigen bouwen | Vehicle workflow and examples |
| Geavanceerde ruimteschepen bouwen | Spaceship workflow and atlas |
| Een submodel leren en een atlas uitbreiden | Build-manual workflow |
| Technic-structuren bouwen | Structural workflow and examples |
| Bouwen met mechanismen | Mechanism workflow and build manuals |
| Onderdelen en herbruikbare constructies vinden | Reference discovery and reference atlas |
| Een groot model organiseren | Module workflow and Copper Lane example |
| Verbindingen en controles begrijpen | Geometry, snapping and validation |
| Een commando of regel voor het bestandsformaat opzoeken | Tool reference and LDraw rules |
---
Ontwikkeling en Toekomst
Aangezien dit een eerste release is, zijn er diverse punten die nog verbetering behoeven:
- VR op Meta Quest 3: Problemen met model-handling en performance.
- Adaptatie voor low-end agents: Tooling, documentatie en instructies aanpassen voor modellen zoals Luna en Haiku.
- Kosten van generatie: Momenteel zijn alleen dure high-end modellen in staat om grote en correcte modellen te genereren.
- Efficiëntie: Het generatieve proces is momenteel traag.
- Uitbreiding model-families:
- Mensen en dieren (minifigs).
- Technic-modellen (machines, motoren).
- Ruimteschepen (huidige resultaten zijn onvoldoende).
- Modellen bouwen vanuit handleidingen (werkt gedeeltelijk, werkt beter met afbeeldingen van pagina's).
- Fijnmazige inspectie: Inspectie van submodellen en hun stapsgewijze bouwproces.
---
Erkenningen
Dank aan de volgende partijen:
- De LDraw Community.
- Travis Cobbs (@tcobbs) en contributors van LDView.
- Leonardo Zide (@leozide) en contributors van LeoCAD.
- Roland Melkert van LDCad en Shadow Library.
- Park Joon-Kyu (@segfault87) en contributors van ldraw.rs.
- Harold Martin (@hbmartin) en contributors van pyldraw3.
- Alle overige LDraw-creators.
Noot: Voor dit werk zijn veel LDraw-modellen, bibliotheken, tools en documentatie gebruikt uit diverse bronnen. Veel mensen hebben decennialang hun werk beschikbaar gesteld aan het publieke domein en de open source community.
---
Handelsmerken
LEGO(R) is een handelsmerk van de LEGO Group of companies, die deze software niet sponsort, autoriseert of onderschrijft.