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)

1 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…