Clonare oggetti con effettuatore "random" ma uguale distanza

Forum per: Modellazione, Texturing, Animazione, Composting e tutto quello che riguarda il normale utilizzo di Cinema4D.

Moderatori: natas, Arkimed, visualtricks, cappellaiomatto

  • Advertising
albertoiuav
Messaggi: 111
Iscritto il: ven dic 11, 2009 5:25 pm

Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da albertoiuav »

Buongiorno a tutti,

ho un problema con il Mograph.
Vorrei scatterizzare degli lungo un percorso ma vorrei far si che questi oggetti abbiano dimensioni diverse ma uguale distanza tra loro.
Ho utilizzato l'effettuatore "random" così da creare una variazione tra gli oggetti ma volevo sapere se esiste un modo per dire a Cinema di non mantenere la distanza rispetto al baricentro dell'oggetto ma lo spazio fisico tra i due oggetti.

Mi viene in mente l'esempio di una cordonata, se voglio alcuni conci da 50cm, altri da55, altri da 60 e così via..il mio scopo sarebbe quello di avere sempre 1,5 cm di spazio tra questi oggetti.
Qualcuno di voi sa dirmi come posso fare?

Vi ringrazio in anticipo e allego alcuni screenshot per chiarire meglio il problema che sto riscontrando.
Allegati
mograph 04.JPG
mograph 03.JPG
mograph 03.JPG (56.77 KiB) Visto 2381 volte
mograph 02.JPG
mograph 02.JPG (127.33 KiB) Visto 2381 volte
mograph 01.JPG
mograph 01.JPG (103.39 KiB) Visto 2381 volte

redpix
Messaggi: 21
Iscritto il: sab ago 24, 2019 2:55 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da redpix »

Con gli strumenti standard di Cinema non credo sia possibile. I cloni si agganciano con i loro assi ai punti intermedi della spline secondo il metodo scelto. Per avere una distanza uguale tra cloni di dimensioni Z diverse dovresti impostare i punti intermedi della spline in relazione alle dimensioni di due cloni adiacenti. Possibile con xpresso-python.

Avatar utente
abe3d
Messaggi: 876
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da abe3d »

Un saluto a tutti, era tanto che non ci passavo di qui...
Mi sa che con Mograph è fuori discussione, nemmeno implementando xpresso, purtroppo i nodi Mograph non restituiscono sufficienti dati per poter creare una spline con punti a distanza "personalizzata", possiamo sapere la posizione dei cloni ma non la loro dimensione. L'unica possibilità sarebbe tentare di forzare Mograph creando appositamente un effetto python, ma anche li la vedo dura, bisognerebbe capire se ( con python ) si riesce ad ottenere almeno la scala dei singoli cloni ( ma credo che solo con un plugin c++ si possano ricavare quei dati) ...

Per il momento, una soluzione e fare il lavoro di scala con l'effettuatore random e mograph ( nel caso si stia parlando di decine di cloni) e successivamente ( rendendo i cloni singoli oggetti ) lavorare di xpresso per la posizione.

Ti lascio un file di esempio, se hai dubbi, chiedi pure!
PS i tre nodi xpresso in alto a destra sono inutili, stavo provando a piazzare gli oggetti su un offset variabile ( vanno eliminati ). Aumentando la dimensione/scala della Z xpresso si occupa di riposizionare gli oggetti alla giusta distanza, agendo invece sull'user data ( rosso in fondo alla viewport ) puoi variare la distanza intermedia .

EDIT: per la verità la scala dei cloni ce la da il nodo Data di mograph ( come per la posizione ), quello che manca è la dimensione, ma mi sta balenando l'insana idea di sfruttare il peso dell'effettuatore random per distanziare accuratamente i cloni ...
Allegati
xpresso.JPG
xpresso.JPG (79.16 KiB) Visto 2323 volte
viewport.JPG
viewport.JPG (67.68 KiB) Visto 2323 volte
set1.zip
(45.85 KiB) Scaricato 52 volte

Avatar utente
abe3d
Messaggi: 876
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da abe3d »

Facciamo il punto... come al solito cinema si rivela più efficace di quanto ci si aspetti:

Con xpresso dal cloner si possono ricavare sia la posizione che la scala (oltre a parecchia altra roba), di conseguenza conoscendo scala e dimensione dell'oggetto/i usato come clone si ricava con un iteratore la dimensione di ogni singolo clone mograh...
qui sotto ottengo la dimensione Z di due cloni adiacenti
xpresso clone size.JPG
xpresso clone size.JPG (48.77 KiB) Visto 2267 volte
...Fermandoci qui con le capacità di xpresso, questo ci dice che uno script python basterebbe per leggere questi dati e generare una serie di vettori "virtuali" lungo la spline utente con posizione (distanza) e tangente relativa ( lo stesso concetto del sistema nel set1).

Sempre restando che si debba per forza usare un cloner, in alternativa, il set successivo è essenzialmente il Set1 per gli oggetti non parametrici.
Rimane comunque la possibilità di reinserire gli oggetti sotto un cloner per usufruite per esempio dello shading
Set2c.jpg
Set2c.jpg (160.09 KiB) Visto 2267 volte

nikdegra
Messaggi: 148
Iscritto il: mar ott 18, 2016 2:47 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da nikdegra »

la butto li, senza averla provata (al momento non ho pc sotto mano): e se fosse si procedere come albertoiuav e semplicemente mettere un effettuatore "adattattamento" in mograph? con valore di 1.5 cm, mentre in mograph metterlo minore? se non erro, e potrei errare, l effettuatore "adattamento" segue il volume dell oggetto, non il baricentro.

albertoiuav
Messaggi: 111
Iscritto il: ven dic 11, 2009 5:25 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da albertoiuav »

Ciao ragazzi,

grazie mille a tutti, soprattutto ad abe3d! Sapevo che con xpresso era possibile ma non mi sono mai cimentato nel suo utilizzo.
Però è interessante capire come hai fatto e il risultato funziona perfettamente..

Nikdegra, devo assolutamente tentare anche il metodo che suggerisci tu. Se funzionasse sarebbe sicuramente più alla mia portata.
Anche se ovviamente quello di abe3d è pazzesco, ti darebbe la possibilità di fare quello che vuoi.

grazie ancora a tutti

Avatar utente
abe3d
Messaggi: 876
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da abe3d »

@nikdegra.
Sfortunatamente no, il Push Apart ( immagino intendessi quello) non tiene conto del volume dell'oggetto, ma usa una sorta di raggio di offset relativo alla scala degli oggetti, anche se questi hanno forma irregolare( funziona infatti particolarmente bene solo con le sfere/dischi ).
Come si vede dall'immagine allegata, gli spigoli dei parallelepipedi compenetrano tra loro tenendo in considerazione il raggio del cerchio che ho inserito nei cubi ( Null.1), basta però "stirare in un verso" gli oggetti ed ecco che anche le sfere " ovalizzate" si soprappongono (Null.2), quindi inutilizzabile allo scopo.
Push Apart.JPG
Push Apart.JPG (500.29 KiB) Visto 2242 volte
Il problema con mograph nasce proprio dall'impossibilità di gestire la posizione dei cloni al di fuori dei parametri interni ( di mograph ed effettuatori ) per questo la soluzione potrebbe essere creare una spline /oggetto con i punti/vertici già in posizione ( relativa e dinamica) e semplicemente dire a mograph di piazzare i cloni in corrispondenza di essi.

@albertoiuav
Ho passato mesi su cinema per quesiti del genere, se riesco appena ho tempo metto giù qualche riga di codice python e vediamo che ne viene fuori !!

nikdegra
Messaggi: 148
Iscritto il: mar ott 18, 2016 2:47 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da nikdegra »

@abe, bravo che hai provato e chiarito, come detto avanzavo un ipotesi! =) già che ci sei, sai indicarmi al volo una buona guida su xpresso??

Avatar utente
abe3d
Messaggi: 876
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da abe3d »

...e alla fine, anche se non è una soluzione definitiva, con qualche escamotage l'ho realizzato in xpresso perché in python sarebbe uno script difficile da studiare!!

Il file è munito di un piccolo preset User Data ( sull'oggetto nullo Control) basta trascinare una spline nel campo " Spline " e cliccare il tasto "a" sulla tastiera per aggiornare la viewport. Gli altri campi sono intuitivi.

l'Xpresso fa tre passaggi essenziali: ricava la dimensione Z dei cloni con un po di matematica di base, posiziona i punti della spline " Base " lungo queste distanze calcolando di volta in volta la posizione del clone precedente ed infine posizione i punti della spline "Target" lungo la spline utente rispettando le distanze ricavate in precedenza.

Il cloner non fa altro che clonare l'oggetto/i sulla spline Target.
Per la natura stessa delle iterazioni in xpresso, la viewport va aggiornata manualmente ( tasto a) o mandando in play la time line, per ottenere il calcolo finito...
Set3.zip
(65.71 KiB) Scaricato 36 volte
Set3_xpresso.JPG
Set3_xpresso.JPG (179.1 KiB) Visto 2110 volte
Set3.JPG
Set3.JPG (104.81 KiB) Visto 2110 volte
...e come sempre, caro vecchio xpresso!!!

Avatar utente
abe3d
Messaggi: 876
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Clonare oggetti con effettuatore "random" ma uguale distanza

Messaggio da abe3d »

Ok.. questo è l'ultimo, il prossimo sarà un plugin :lol:

In questa versione ibrida (sempre a titolo di studio) ho utilizzato un nodo python per variare il numero dei cloni ( prima vincolato ai punti della spline base ) e ho aggiunto il redraw ( non c'é più bisogno di aggiornare manualmente la viewport, necessario eventualmente solo quando si inserisce una nuova spline utente).
Ho rimosso il controller offset, calcolando in automatico l'offset dalla lunghezza della spline utente. Inoltre ho aggiunto la possibilità di utilizzare una spline multisegmento ( campo "Use all segment" nel Control ) e utilizzare per esempio usa spline text piuttosto che una spline circle ring...
Edit: c'è un piccolo errore nel file sul nodo cerchiato sotto ( per la fretta ho collegato l'offset, passare il collegamento alla porta del nodo sottostante
Set4.zip
(62.12 KiB) Scaricato 38 volte
Set4Xpresso.JPG
Set4Xpresso.JPG (256.12 KiB) Visto 2077 volte
Set4.JPG
Set4.JPG (98.17 KiB) Visto 2088 volte
Sembra complicato ma non lo è, l'xpresso potrebbe essere semplificato ( delegando alcuni calcoli a python ) ma credo che così sia più comprensibile...

  • Advertising
Rispondi