← Tutti i post

Il 3D entra nelle app: modelli, realtà aumentata e pezzi da stampare

Le app Reactive guadagnano la terza dimensione. Da oggi un documento può mostrare modelli 3D interattivi — con la vista in realtà aumentata sui dispositivi che la supportano — e, soprattutto, generare pezzi 3D parametrici con OpenSCAD, direttamente nel browser, pronti da scaricare in STL per la stampante 3D. Come sempre: una riga di testo, nessun server, nessuna installazione.

Un modello 3D in una riga: ::model

La direttiva ::model mostra un modello glTF/GLB dentro l’app: si ruota col dito o col mouse, si ingrandisce, e sui telefoni compatibili un pulsante lo porta in realtà aumentata, appoggiato sul tavolo di casa:

::model{src="https://esempio.it/statua.glb" alt="Statua romana"}

Per l’AR su iPhone e iPad basta aggiungere la variante USDZ (ios-src="statua.usdz"). Il visualizzatore si scarica solo nei documenti che lo usano, e src può essere un riferimento reattivo: un menu a tendina che cambia modello, un catalogo che mostra il pezzo selezionato.

Pezzi parametrici con OpenSCAD: :::cad

La novità più grossa. OpenSCAD è il linguaggio dei maker per descrivere i solidi con il codice; Reactive lo esegue nel browser (WebAssembly) e lo collega al suo sistema reattivo. Il codice sta in un blocco dentro la direttiva, come per :::python — e i campi dell’ultima riga delle collezioni dichiarate in data diventano variabili del codice:

:::form{path="box" id="p"}
::input{form="p" field="w" type="number" placeholder="Larghezza"}
::input{form="p" field="h" type="number" placeholder="Altezza"}
::add-form{form="p" path="box" label="Genera"}
:::

:::cad{data="box"}
```
w = 30; h = 20;
cube([w, h, 10], center=true);
```
:::

Il form diventa il pannello dei parametri del pezzo: inserisci larghezza e altezza, premi Genera, e il modello si rigenera nell’anteprima 3D interattiva. Il pulsante accanto scarica l’STL pronto per la stampa. Gli assegnamenti nel codice (w = 30;) fanno da default finché la collezione è vuota.

Non manca nulla del linguaggio: ci sono i font per text() (incisioni, targhette) e le librerie MCAD e BOSL2 (ingranaggi, filettature, viti) già montate. Il motore (~10MB) si scarica al primo uso e resta in cache: da lì in poi funziona anche offline.

Cosa ci si costruisce

  • Il configuratore da banco — un artigiano o una piccola officina descrive il pezzo una volta (una staffa, un distanziale, una scatola su misura) e il cliente compila tre campi: l’STL arriva senza che nessuno apra un CAD. Con la sincronizzazione attiva, le richieste dei clienti diventano righe di una collezione condivisa.
  • La classe di tecnologia — in un’ora di laboratorio ogni studente parte dallo stesso documento, cambia i parametri, vede il solido prendere forma e porta il suo portachiavi alla stampante della scuola. La geometria si tocca.
  • Il catalogo con l’anteprima in casa — un mobiliere o un ceramista mostra i pezzi con ::model: il cliente li ruota, li ingrandisce e li appoggia in realtà aumentata sul proprio tavolo prima di ordinare.
  • Il ricambio impossibile da trovare — la manopola rotta, il gancio fuori produzione: si descrive una volta con quattro parametri e si ristampa ogni volta che serve, nella misura che serve.

E l’editor scrive con te

Insieme al 3D arriva l’autocompletamento nell’editor: digitando : si scelgono le direttive da un menu con descrizione e snippet già compilati (Tab salta tra i campi), tra le graffe vengono proposti gli attributi giusti per ogni direttiva, nel frontmatter le chiavi dell’app — e dentro un blocco :::cad il completamento parla OpenSCAD: cube, cylinder, difference, le trasformazioni e le variabili speciali, con le firme sotto gli occhi.

Tutto questo è già nell’app: aprila e prova la sintassi nella guida, oppure parti dal riferimento dei tag.