Approfondimenti

sand3D: Asset 3D che puoi leggere e modificare come codice

sand3D consente ai modelli linguistici di creare risorse 3D modificabili utilizzando un vocabolario Python compatto e sfruttando bpy di Blender per la modellazione parametrica.

sand3D: Asset 3D che puoi leggere e modificare come codice

Punti salienti e risultati

sand3D offre ai modelli linguistici un vocabolario compatto per creare oggetti 3D in Python. Sviluppato da Thibault Neveu e Andréa Loy presso Sandflow, trasforma i programmi in parti denominate, materiali e assiemi articolati tramite bpy di Blender. Modificando una dimensione e rieseguendo il programma, l'asset viene ricostruito. La release pubblica combina una libreria di modellazione con dataset; non fornisce un modello text-to-3D addestrato autonomo. Repository ufficiale.

Le cinque schede dei dataset elencano 66.887 oggetti Objaverse, 24.495 oggetti CAD, 9.209 oggetti Articraft, 2.334 oggetti SimReady e 3.169 record AutoMate: 106.094 in totale, inclusi 10.456 oggetti articolati. Il conteggio di AutoMate include 2.297 parti singole e 872 assiemi. Ogni record associa codice eseguibile a un rendering e a un asset OpenUSD esportato. Si tratta di una raccolta di asset sorgente ricostruiti, non di 100.000 meccanismi progettati ex novo. Dataset ufficiali.

https://external-v2fun-data-hk-1.oss-accelerate.aliyuncs.com/temp/2026/11/10/1_1794295500887.PNG

Il confronto dei token del repository usa o200k_base ed esclude commenti e docstring. I rapporti mediani baseline/sand3D sono 4,0× per il Python di Blender scritto da LLM su 30 parti CAD, 2,3× per 17 programmi CadQuery, 6,0× per 13 programmi FeatureScript e 2,0× per 12 programmi Articraft. Si tratta di confronti ridotti e provenienti da fonti diverse rispetto a programmi sand3D curati; solo 9/30 baseline di Blender costruiscono la parte corretta, e Articraft rappresenta anche la dinamica. Supportano un'affermazione sulla compattezza, non un miglioramento universale della qualità di generazione. Dettagli della valutazione.

Come funziona

Per la creazione, il flusso di lavoro consiste nel: fornire l'API a un LLM o scrivere direttamente in Python; descrivere l'assieme e i relativi parametri; creare e posizionare le singole parti; dichiarare giunti e materiali; eseguire il programma in bpy; esaminare, rivedere ed esportare. L'API, composta da circa 3.600 token, entra in un prompt. Il layout di programma consigliato stabilisce prima il piano dell'assieme, quindi implementa ogni parte separatamente, mantenendo leggibili le dimensioni e le relazioni di posizionamento. La rappresentazione modificabile è costituita da codice eseguibile della geometria e da una gerarchia della scena; la libreria non implementa la codifica latente né il denoising tramite diffusione. Linee guida per la scrittura; API.

Il vocabolario della geometria procede dai profili 2D ai solidi: rect e circle definiscono le sezioni; extrude, revolve, sweep e loft costruiscono i volumi; cut, pocket, shell e fillet li modificano. Gli oggetti Frame descrivono posizione e orientamento, così un componente può essere posizionato su una faccia denominata o su un ancoraggio locale invece che tramite una lunga lista di coordinate globali. group conserva mesh e materiali separati sotto un unico elemento padre; join esegue una fusione; assembly aggiunge ancoraggi denominati a una radice raggruppata. Queste distinzioni preservano quali pezzi appartengono allo stesso insieme e quali restano modificabili separatamente. Implementazione degli assiemi.

L'esempio della lavatrice rende concreti i meccanismi: un mobile sostiene un tamburo, uno sportello contenente la relativa ghiera, il vetro e la maniglia, un cassetto e una manopola. Dopo aver posizionato queste parti a riposo, joint registra il genitore, il perno, l'asse, il tipo e l'intervallo consentito. Lo sportello ruota da 0 a 143°, il cassetto scorre da 0 a 200 mm e il tamburo e la manopola ruotano continuamente. pose convalida il valore richiesto e propaga le trasformazioni tramite la cinematica diretta; non rigenera la geometria. seat rimuove il volume occupato da una parte inserita a riposo, invece di calcolare il suo intero inviluppo di movimento. Esempio; Implementazione dei giunti.

https://external-v2fun-data-hk-1.oss-accelerate.aliyuncs.com/temp/2026/11/10/2_1794295546294.PNG

La produzione dei dataset aggiunge un ciclo di ricostruzione agentico: scrivere il codice, eseguirlo, confrontare la superficie risultante con un asset sorgente esistente e apportare modifiche. Gli autori non hanno ancora pubblicato il metodo completo di questa pipeline. Gli F-score dei dataset usano una tolleranza pari all'1% della diagonale del riquadro di delimitazione. Le soglie minime di accettazione sono 0,70 per Objaverse e SimReady statico, 0,90 per CAD e Articraft rigido e 0,90 per ogni parte mobile, oltre a giunti corretti, per gli asset articolati. Si tratta di filtri di qualità dichiarati dalla pipeline, non di risultati di test misurati in modo indipendente. Un'esecuzione non riuscita o i controlli statici escludono un programma. Metodologia del dataset.

Applicazioni, disponibilità e direzioni future

La rappresentazione è adatta a varianti di asset modificabili, meccanismi interattivi e ricerche sulla creazione 3D basata su LLM. GLB esporta la posa corrente, i materiali e i metadati dei giunti negli extra dei nodi; i visualizzatori generici richiedono una logica aggiuntiva per azionare tali giunti. URDF e USDA conservano il meccanismo a riposo, con USDA che usa UsdGeom e UsdPhysics. OBJ/STL contengono solo le mesh. L'esportazione converte le lunghezze in metri. I parametri di massa, attrito e azionamento restano esterni alla descrizione della dinamica della libreria, quindi l'integrazione con la simulazione richiede ancora lavoro. Implementazione dell'esportazione.

La libreria è rilasciata con licenza Apache-2.0; le release dei dataset usano CC BY 4.0, mantenendo le licenze e le attribuzioni delle fonti. La copertura attuale è incentrata sugli oggetti con superfici rigide e la ricostruzione può omettere i dettagli più piccoli. Gli autori indicano le forme organiche come lavoro futuro, con possibili aggiunte tra cui blending implicito, suddivisione tramite control cage, sweep e loft a sezione variabile, scheletri con skinning e displacement procedurale. Promettono inoltre più domini e un preprint di prossima pubblicazione; restano piani. Questa recensione ha esaminato la documentazione ufficiale e il codice sorgente al commit 0d589a5, versione 1.6.2, il 6 novembre 2026; non ha eseguito i benchmark in modo indipendente. Release ufficiale e limitazioni.

Domande frequenti

L'installazione di sand3D mi fornisce un modello text-to-3D?

Installa una libreria di modellazione Python. Un LLM o una persona deve scrivere programmi usando la relativa API; bpy li esegue per creare gli asset. I dataset forniscono esempi di codice, non un generatore addestrato autonomo. Fonte.

Come posso creare un asset di dimensioni diverse?

Modifica le dimensioni esposte dal relativo programma e rieseguilo. Le relazioni di posizionamento e le parti denominate rendono tali modifiche verificabili. Solo le relazioni effettivamente codificate nel programma si aggiornano automaticamente, quindi controlla il risultato ricostruito. Fonte.

I meccanismi esportati sono subito pronti per la simulazione fisica?

URDF e USDA includono la struttura dei giunti, ma la simulazione richiede ancora parametri dinamici come massa, attrito e azionamento. GLB memorizza i metadati dei giunti negli extra; un'applicazione deve interpretarli per animare il meccanismo. Fonte.

Articoli correlati