Sperimentazione IA-prompt-script per grasshopper

Ciao a tutti,
Stavo valutando a che punto siamo con l’IA applicata alla progettazione computazionale: se, a partire da una mia richiesta, l’IA sia in grado di generare uno script semplice per un pattern o qualcosa di simile.
Curiosità accademica prima che le macchine si ribellano e ci uccidano :rofl:
Per chi capisce il linguaggio GHPython Script è fattibile? :melting_face:
ho condiviso il blocco note con lo script

ho dato questo testo a Gemini:
“riesci a generare per Grasshopper per Rhino un codice che mi permette di applicare un pattern diamantato su una superfice, devo avere l opzione di impostare l altezza la larghezza e la lunghezza della singola cella da ripetere”

quello che ha tirato fuori:

Ciao! Certo, con piacere. Creare pattern parametrici su superfici è uno degli esercizi più utili e divertenti in Grasshopper. Svilupperemo insieme un codice Python che ti darà il pieno controllo sul tuo pattern diamantato.

L’idea è di creare una struttura 3D, non solo delle linee sulla superficie. Ogni “diamante” sarà in realtà una piccola piramide la cui base si appoggia sulla superficie e la cui punta si estende verso l’esterno.

Panoramica della Soluzione

Ecco come funzionerà il nostro script, passo dopo passo:

  1. Input: Lo script prenderà in input la superficie di base e tre numeri:
  • Il numero di divisioni lungo la larghezza della superficie (che chiameremo U_count).
  • Il numero di divisioni lungo la lunghezza della superficie (che chiameremo V_count).
  • L’altezza (Height) di ogni punta del diamante.
  1. Griglia: Suddivideremo la superficie in una griglia invisibile basata sui conteggi U e V.
  2. Punti Centrali: Per ogni rettangolo della griglia, troveremo il suo punto centrale sulla superficie.
  3. Offset: Sposteremo (o faremo un “offset”) di questo punto centrale verso l’esterno, perpendicolarmente alla superficie, usando il valore Height che hai impostato.
  4. Costruzione: Creeremo quattro facce triangolari che collegano i quattro vertici del rettangolo della griglia al nuovo punto centrale rialzato. L’insieme di queste quattro facce formerà il nostro diamante/piramide.
  5. Output: Lo script restituirà tutte le facce dei diamanti create, pronte per essere visualizzate in Rhino.

1. Impostazione del Componente in Grasshopper

Prima di incollare il codice, prepariamo l’ambiente in Grasshopper.

  1. Aggiungi alla tela un componente GHPython Script. Puoi trovarlo nella scheda Maths > Script.
  2. Fai zoom sul componente e clicca sui segni + e - per configurare gli input. Rinominali facendo clic destro su di essi.
  • Surface: Clicca con il tasto destro e imposta il “Type Hint” su Surface.
  • U_count: Imposta il “Type Hint” su int (numero intero).
  • V_count: Imposta il “Type Hint” su int (numero intero).
  • Height: Imposta il “Type Hint” su float (numero con virgola).
  1. Rinomina l’output a in Diamonds per chiarezza.

Il tuo componente dovrebbe assomigliare a questo:

Test AI_script GH.txt (4,1 KB) :backhand_index_pointing_left:

3. Come Usare lo Script

  1. Crea una Superficie in Rhino: Disegna una qualsiasi superficie nella viewport di Rhino (un piano, una superficie curva, una porzione di sfera, ecc.).
  2. Collega la Superficie: In Grasshopper, aggiungi un componente Surface (dalla scheda Params > Geometry). Clicca con il tasto destro su di esso, scegli “Set one Surface” e seleziona la superficie che hai creato in Rhino. Collega l’output di questo componente all’input Surface del nostro script Python.
  3. Imposta i Parametri:
  • Aggiungi tre componenti Number Slider (dalla scheda Params > Input).
  • Configura il primo slider per i numeri interi (dal menu Edit...) e collegalo a U_count. Prova un range da 1 a 50.
  • Configura il secondo slider per i numeri interi e collegalo a V_count. Anche qui, prova da 1 a 50.
  • Configura il terzo slider per i numeri reali (con decimali) e collegalo a Height. Prova un range da 0.1 a 10.0.
  1. Visualizza il Risultato: Appena colleghi tutti gli input, vedrai il pattern diamantato apparire sulla tua superficie in Rhino!

Ecco un esempio di come potrebbe apparire la tua definizione completa in Grasshopper:

Spero che questo ti sia d’aiuto! È un ottimo punto di partenza. Giocando con i parametri U_count, V_count e Height, e usando superfici di base diverse, potrai ottenere una grandissima varietà di risultati.

Se vuoi modificare o espandere il codice, o se qualcosa non è chiaro, chiedi pure! Buon divertimento con la programmazione! :sparkles:

scusate l’ignoranza ma io non ho la più pallida idea da dove iniziare qui

Che cosa brutta che scrive questa Intelligenza Artificiale…
rs.ReParameterizeSurface(Surface, 0)
…e lo scrive pure:
" # Per lavorare in modo consistente, normalizziamo il dominio della superficie da 0 a 1."

Essendo una definizione GH quale problema c’è a fare un reparameterize -ex ante- sul componente parametro Srf?
Poi occorre che i nomi delle variabili in input siano coerenti con quanto scritto dall’Intelligenza, e così anche in output.
Indicare anche che tipo di variabile si vuole usare (Int… float… etc)
Tutto ciò per non fare arrabbiare (rosso) il componente GHPyScript.


poi


tocca che funziona. In teoria

e quando non funziona ci vuole più a correggere che riscrivere da zero.


Eccoloqui.gh (10,1 KB)

2 Mi Piace

praticamente, possiamo dormire sonni tranquilli… è ancora presto perché un’IA diventi un Terminator e ci stermini tutti.

Beh, come inizialmente e attualmente c’è stata totale assenza di regolamentazione riguardo all’uso di materiale, coperto da copyright o no, come materiale di training per le AI, che hanno quindi scandagliato tutto internet… adesso, per la stessa natura “affrettata” della situazione, le AI vengono usate per creare e aggiungere contenuti nel web.
Si stà già vedendo casi in cui le AI stanno generando risultati più “sfocati” a causa dell’uso di contenuti generati da AI come materiale di training. Una situazione “incestosa”.
È un cane che si morde la coda.
La selezione manuale del materiale di training è ovviamente sempre possibile, ma è anche molto più dispendioso.
Non c’è una soluzione ovvia e nemmeno fare predizioni è sensato.

Intanto io ho smesso di postare codice c# in chiaro sui forum di Rhino… non mi va che i crawler AI usino i contenuti che creo io per i loro servizi a pagamento…
Tanti settori già soffrono, altri soffriranno.

Se chiudessero i battenti tutti sarei contento, ma non accadrà.

2 Mi Piace

Da questo punto di vista, penso che abbiano già utilizzato le IA nei vari social per addestrarle con immagini e video. Dato che i social sono gratuiti, i contenuti pubblicati dagli utenti sono di fatto a disposizione della multinazionale di turno. Ancora più grave, ma credo che non debbano chiedere il permesso a nessuno, anche perché nessuno se ne accorgerebbe, è il fatto che aziende come Google probabilmente utilizzano da tempo le IA per scandagliare documenti privati, aziendali, file 3D, script, codici e chi più ne ha più ne metta nei vari cloud di internet.

*un esempio è Adobe che ha utilizzato i lavori pubblicati su Behance per addestrare la propria IA
fonte:

Ciao

Scusate la curiosita’ da umarell … e le idee confuse … :blush:
Che libreria sta usando lo script qui ?
In rhinoscriptsyntax non trovo nessuna funzione con quel nome …
Forse Python 3 usa una libreria diversa ? :slightly_smiling_face:

Grazie.

Nono Emi! Esattamente questo dico: delira proprio!

2 Mi Piace

OK, grazie Giuspa !

Allora suppongo che rs.ReParameterizeSurface() ( lo scriviamo un’altra volta, dai ! :wink: ) …
andra’ a incrementare l’effetto … autoreferenziale, per cosi’ dire, di cui parla Riccardo.

:smile:

3 Mi Piace

Ecco… su questo ho forti dubbi…

Ciao @giuseppe @RiccardoMajewski mi chiedevo se qualcuno inizia da zero non avendo nessuna nozione sul linguaggio Python/ script di Rhino e più in generale nessuna base su questo tipo di linguaggio, ma ho l’interesse di iniziare a capirci qualcosa, almeno nozioni di base.
Quale libri a riguardo o documentazione online devo cercare?

Eccellente domanda.
Il mio modesto punto di vista è il seguente.
Premesso che programmare è come lo sport, conta la pratica sopra ogni altra cosa. Puoi avere un talento cristallino ma senza pratica non vai da nessuna parte.
Inizialmente richiede un discreto sforzo e tanta continuità. Prima di iniziare l’impresa, valuterei la cosa attentamente.
Ci sono su internet una miriade di fonti per iniziare con Python. Il vantaggio è che parti con cose semplicissime e inizi a capire le regole del gioco.
Il “vantaggio” di usare subito RhinoScript è che, da utente esperto di Rhino, trovi subito il senso di quello che programmi. Lo “svantaggio” è che rischi di saltare alcune regole di base che invece, in un ambiente “non Rhino” è più semplice imparare.
Con un modesto investimento puoi provare Udemy o altri analoghi.
Qui il nostro materiale ma siccome non sono l’oste a cui chiedere se il vino è buono… valuterei anche altri approcci iniziali.

1 Mi Piace

python
Linguaggio interpretato, più flessibile a inizio progetto, migliore per programmare cose semplici velocemente.
Diffusissimo e usato in ogni settore, tantissime librerie accessibili (tra cui quelle per usare e programmere le AI) la richiesta di programmatori python sta sempre aumentando negli ultimi anni.
Non è vincolato ad un sistema operativo specifico, funziona ovunque.
Su Rhino funziona e accede ai metodi Rhinocommon e Rhinoscriptsyntax.
Personalmente lo trovo difficile da leggere, il mio cervello si rifiuta di impararne la grammatica… ma vedendo l’ampia diffusione è sicuramente un problema molto più soggettivo che oggettivo.
Se impari python, poi potrebbe facilmente tornarti utile in altri contesti.

c# (o “.NET”) …(e dicono sia un clone di Java)
Linguaggio compilato, più performante e migliore per programmare progetti grandi su cui servirà fare manutenzione.
Funziona principalmente in contesto Microsoft, Windows e anche per questo è meno diffuso.
Personalmente lo trovo molto più pulito e leggibile, con una grammatica “severa” che costringe una scrittura più ordinata.
Rhinocommon È c#.
Qualora volessi in futuro fare dei plugin per Rhino o grasshopper, li farai con Visual Studio, in c#.
Io, dopo aver imparato c# facendo script su grasshopper, di recente ho fatto un piccolo programmino (totalmente slegato da Rhino) su Visual Studio, un WinForm per una utility aziendale… grazie al fatto di aver imparato c#.
Nel forum inglese ho sempre visto che quando un udente o developer posta uno script molto sofisticato/complesso, è c#.
Tipo, Daniel Piker, creatore di kangaroo e Isopod, quando deve creare degli elementi custom per quelle librerie, usa c#. Altri utenti “tosti”, usano c#.

Su python probabilmente in qualche modo si può ottenere le stesse cose, ma per qualche motivo succede molto più raramente (almeno nel contesto del forum di Rhino).


Io ho imparato c# esclusivamente facendo pratica e sbattendoci la testa. Zero teoria.
Vedevo codice messo da altri nel forum e me lo studiavo, partendo da cose semplici e man mano alzando l’asticella.
Diciamo che il mio “traino” è stata la curiosità e le necessità lavorative di portare a casa risultati.

Fosse stato python probabilmente avrei rinunciato presto, alla mia vista sembra di vedere la ricetta del dottore… boh, è un problema sicuramente solo mio…

2 Mi Piace

Grazie per le dritte
@RiccardoMajewski bazzicherò pure io nel forum inglese alla ricerca di file python, c# per guardare e cercare di capire.
@giuseppe grazie per il link, è già molto da sapere per tutto quello che sta scritto.

Ciao Riccardo,

suppongo dipenda molto da questo:

e forse anche dal fatto che C# pare una scelta piu’ sicura, nel senso che, essendo direttamente fornito da Microsoft ed essendo Rhino attualmente basato almeno in parte su .NET (qualsiasi cosa significhi, purtroppo ci capisco poco di queste cose :blush:) , sembra difficile ipotizzare un futuro in cui C# non sia disponibile per script e plug-in per Rhino.
Mi sembra diverso il discorso per Python, che deve comunque comunicare con l’ambiente .NET (cioe’ RhinoCommon), e quindi si deve appoggiare a software specifici per questo.
Prima era IronPython, adesso credo sia pythonnet … in futuro, mah. :wink:

Haha …
Pensa ai poveri utilizzatori di AutoCAD che (diverso tempo fa) avevano poca scelta, toccava usare la sintassi Lisp.
Scritpare un CAD allora era una cosa da ‘duri’. :smile:

(Niente contro il Lisp, eh. Tutt’altro ! Ma forse non era cosi’ semplice per i disegnatori).

3 Mi Piace

Scusa Giuspa …
Sono a corto di fantasia (e di informazioni). :blush:
Come pensi che una simile circostanza potrebbe verificarsi ? :thinking:

Questa è una simulazione reale in cui un IA chiamata Skynet prende il controllo, i risvolti sono devastanti

Non mi è nuova. :grinning:

1 Mi Piace

Grasshopper ?
Chiunque abbia buone capacità di reverse engineering può ottenere, tramite Hyper3D.ai, un’ottima superficie partendo da un modello quad mesh generato da una immagine( ovviamente generata da un prompt che descrive testualmente un modello con determinate caratteristiche )

Lo strumento è sorprendentemente efficace nell’estrarre geometrie pulite e ricostruire superfici utilizzabili anche per scopi tecnici o progettuali.

:backhand_index_pointing_right: Se la avessi ai miei tempi cavoli !!! M ormai mi godo la mia discreta pensione :wink:

1 Mi Piace

Si può ricollegare bene a questo argomento aperto pochi giorni fa. In questo caso, Sparc3D AI consente di inserire una sola immagine, il che non è sufficiente per ricostruire modelli 3D come suole, plateau o tacchi, almeno nel mio ambito professionale. Tuttavia, penso che sia solo questione di tempo prima che permettano l’inserimento di più immagini: altre AI lo fanno già, anche se a pagamento.

@Mario Hai la versione a pagamento di Hyper3D AI? nel caso vorrei darti delle immagini di un campione in resina di una suola e vedere cosa riesce a ridarmi in 3d, se puoi

ho lo stesso problema con un immagine non basta ricostruire un 3d per il reverse engineering, questa IA ti da la possibilità di inserire più immagini ma è a pagamento e con la versione di prova mi fa caricare solo un immagine che è insufficente.

con 4 immagini si paga

le foto:
campione in resina fresato




più che altro non vedo limiti al fatto che NON si verifichi…

1 Mi Piace