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

· Cosimo Luigi Manes

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"}
::/form

::cad{data="box"}

w = 30; h = 20; cube([w, h, 10], center=true);

::/cad

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

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 dalla guida alle direttive.