Cluster lento nell'esecuzione

Ciao a tutti, sto riscontrando il seguente problema con l’utilizzo dei cluster in grasshopper:

In questo file di esempio, vengono realizzati una serie di contour di un solido selezionato (es. un cono) ad una distanza Z di input e con uno slider si visualizzano i singoli layers.

Lo script è fluido ma non appena lo si inserisce all’interno di un cluster si hanno rallentamenti assurdi.

Leggendo sul forum inglese ho visto che alcuni provano ad ovviare al problema inserendo dei blocchi “data man” ma in tal caso ogni 10s (massimo valore impostabile) tornerei ad avere il medesimo problema. Oppure impostarlo su “never” e non poter mai aggiornare il solido di ingresso e distanza Z nel contour…
Qualcuno ha qualche idea sul come fare ad ottenere un cluster funzionante esattamente come lo script di partenza?

Lascio in allegato un video che mostra la problematica (il delay del mouse è generato dalla registrazione) e i files rhino/gh di esempio:

Test cluster.gh (8,1 KB)
Test cluster - cono.3dm (155,9 KB)

Non fare il cluster.
O metti il list item fuori dal cluster.

Il problema è che l’indice che fornisci per “selezionare” una delle sezioni, essendo un input del cluster, fa ricalcolare l’intero cluster! E quindi anche il Contour…
Senza cluster il List Item deve semplicemente fare il suo lavoro, mentre il Contour è passivo, ha computato una volta sola all’inizio e non deve ricalcolare.


Mi viene da chiedere:
Cosa stai cercando di fare?
È indispensabile un cluster?

1 Mi Piace

Lo scopo è quello di ottenere una sorta di interfaccia grafica semplificata, in cui do degli input e il cluster (protetto con password in modo da non modificare i blocchi per errore) li elabora e mi da gli output desiderati (in questo esempio affettare un solito ad una distanza Z - valore input - e visualizzarne le singole fette)
Se conoscessi qualche modo alternativo al cluster per questo tipo di operazioni te ne sarei grato!

Ripeto: senza sapere cosa devi fare alla fine, si può solo andare a tastoni.

in questo caso, perché calcolare tutte le “fette” se poi ne visualizzi solo una? È uno spreco di risorse.


Questo ^ è più veloce è funziona anche in cluster.


Se devi proprio lavorare con i cluster, fai più cluster.
In un cluster fai il contour, l’output è un datatree, vedi te se fare il flatten subito o dopo. Chiama questo output “layers” o “fette” … magari mettile in gruppo pure, vedi te.
Questo cluster, dedicato a fare il contour, è lento e pesante, meglio tenerlo isolato dal resto del codice.
(in realtà non ti serve un cluster, il componente contour fa già tutto…)

Gli altri cluster avranno come input le “fette”, pappa pronta già computata, dove poi estrarre una singola “fetta” o fare altre operazioni sarà molto veloce.

… difficile entrare in dettaglio vedendo esempi da una manciata di componenti.


Si, non sperare di mettere l’intero tuo codice dentro UN cluster. Ogni cambio di input comporterebbe il ricalcolo di tutto , simile a fare tasto destro > recompute.
Ho già visto situazioni simili, è esattamente così: tutto lentissimo.

Fai più cluster.

Grazie @RiccardoMajewski avevo intuito il problema (su qualche progetto passato volevo snellirmi la definizione) e avevo riscontrato problemi simili, ma non ero per nulla sicuro del perché.

@marco11a2 questa è una cosa che faccio in maniera abbastanza solita: in ufficio siamo tre e a volte tocca lavorare in modo separato ma connesso. Come dice Riccardo, fare più cluster aiuta molto, ma io spesso risolvo con metahopper (che ti fa fare degli snippet, una specie di template). O meglio ancora con Hops, ma forse è leggermente più complicato da settare inizialmente.

Ci sono anche altri sistemi che sfruttano server di terze parti, tipo speckle o shapediver che hanno dei workflow specifici per chi lavora in team