Allineamento a 2 spline

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

Moderatori: Arkimed, natas, visualtricks, cappellaiomatto

  • Advertising
Avatar utente
patavinus
Messaggi: 127
Iscritto il: ven ott 26, 2012 12:47 pm
Località: Padova

Allineamento a 2 spline

Messaggio da patavinus »

Salve, stavo cercando un modo per simulare la movimentazione di pezzi di un convogliatore aereo (una catena che muove i pezzi in un impianto di verniciatura). Questo convogliatore ha due binari e i pezzi hanno "2 pivot", uno viene tirato su un binario, l'altro lo segue trascinandosi.
Allego una pianta in cad in cui ho fatto una simulazione manuale del movimento dei pezzi:
simulazione.jpg
simulazione.jpg (142.77 KiB) Visto 1446 volte
Lo strumento "allinea alla spline" mi sembra che non risolva il mio problema, voi avete idea se si possa fare?
Avatar utente
masterzone
Site Admin
Messaggi: 10358
Iscritto il: ven set 17, 2004 5:34 pm
Località: Verona

Re: Allineamento a 2 spline

Messaggio da masterzone »

mmmm madonna che casino....e' gia la 4a volta che leggo il messaggio per capire come fare...bisogna fare un RIG, anche se pur semplice ma va riggato o giocando con qualche nullo, target e bagoli gerarchici forse si puo' fare...
In questo caso ci vuole o ABE3D, dal nostro forum, o il Cappellaio Matto, aka matteo...prova a mandare una mail a matteo@c4dzone.com indicandogli il topic qua sul forum che magari appena ha un attimo ti da due dritte che e' un rigger magico....
Avatar utente
cappellaiomatto
Moderatore
Messaggi: 1572
Iscritto il: lun mag 07, 2012 5:12 pm

Re: Allineamento a 2 spline

Messaggio da cappellaiomatto »

Ciao
riesci a postare una referenza video del movimento che vuoi ottenere, dal cad faccio fatica a capire
Avatar utente
patavinus
Messaggi: 127
Iscritto il: ven ott 26, 2012 12:47 pm
Località: Padova

Re: Allineamento a 2 spline

Messaggio da patavinus »

https://youtu.be/daaazfDGxaU

da 2min 43sec a 3min 20sec
Avatar utente
cappellaiomatto
Moderatore
Messaggi: 1572
Iscritto il: lun mag 07, 2012 5:12 pm

Re: Allineamento a 2 spline

Messaggio da cappellaiomatto »

Ciao
Dovrei fare due prove ma mi sembra fattibile

Probabilmente si risolve giocando con un tag target e una gerarchia ad hoc. Forse un po' di xpresso.

Intravedo un punto oscuro sul movimento del punto trascinato ma magari si risolve con poco, è una di quelle cose che se non fai un po' di esperimenti non si riesce a prevedere

Se riesco nel weekend mi ci diverto un po' e ti posto una soluzione, sempre non arrivi prima Abe :lol:
Avatar utente
patavinus
Messaggi: 127
Iscritto il: ven ott 26, 2012 12:47 pm
Località: Padova

Re: Allineamento a 2 spline

Messaggio da patavinus »

troppo gentile! se riesci ti offro uno Spritz!
Avatar utente
cappellaiomatto
Moderatore
Messaggi: 1572
Iscritto il: lun mag 07, 2012 5:12 pm

Re: Allineamento a 2 spline

Messaggio da cappellaiomatto »

ciao
come immaginavo c'era qualcosa di poco chiaro nel trascinamento che richiede l'ausilio di un minimo di programmazione e non può essere fatto solo ed esclusivamente con xpresso.

Nel rig in allegato trovi un esempio, ma mi sono fermato alla soluzione che utilizza solo xpresso

Essendo un rig meccanico la regola è sempre un oggetto si muove direttamente e tutti gli altri si muovono indirettamente.

ho creato due percorsi

il percorso diretto e quello indiretto
ho messo un goal dentro ogni spline e tramite due controller faccio muovere i punti lungo le spline

fin qui nulla di particolare.

a questo punto ho creato una barra (che simula il carrello nel video) ho messo il centro asse un po più dentro e l'ho posizionata in gerarchia sotto al punto di controllo della spline diretta.

Attenzione a due cose:
1) la zeta della barra deve seguire la sua lunghezza (servirà per il tag target che metteremo tra poco)
2) le coordinate devono essere tutte a 0,0,0 sia per posizione che rotazione

ora muovendo il controller diretto la barra segue la spline.

mettendo un tag target nella barra e facendolo puntare al punto di controllo indiretto ora ottieni che muovendo la barra questa si auto allinea al secondo punto di controllo.

E qui nasce il vero problema pfiu ...... la barra nel mondo reale è rigida e ancorata all'altro punto di controllo, quando viene spostata direttamente dal punto diretto fisicamente inizierebbe a essere trascinata seguendo il percorso indiretto.

Purtroppo all'interno di cinema non avviene questa cosa perchè non esiste una dinamica vera e propria che simula la fisica.


Per capire quello che ti sto scrivendo ho creato dentro la barra due nulli che uso come riferimento per i punti di ancoraggio.


Tramite xpresso calcolo la distanza tra i punti di controllo della barra, questa distanza rimane fissa come nella realtà perchè la barra è rigida e non elastica.

Faccio la stessa identica cosa per i due punti di controllo mobili punto diretto e punto indiretto.

Vedrai che animando i controller la distanza mobile cambierà.

A questo punto hai 2 soluzioni

1) animando i controller a mano e con un po di pazienza certosina fai in maniera tale di mantenere le due distanze il più possibile uguali per non far vedere in animazione una cosa non vera.

2) se sei pratico di python puoi simulare te una vera e propria dinamica e far partire un calcolo dopo ogni spostamento del punto diretto.
questo calcolo dovrebbe cercare il punto migliore sulla spline secondaria che faccia in maniera tale che la distanza mobile - la distanza fissa sia minore di un fattore di errore che stabilisci te.......nulla di complesso se sai dove mettere le mani ..... :roll:


se vuoi replicare il rig occhio alle priorità di expressioni dentro i tag xpresso e target, sono fondamentali perchè il rig non esegua istruzioni prima di altre.

buon divertimento

Matteo

:mrgreen:
Allegati
allineamento_spline.zip
(78.34 KiB) Scaricato 55 volte
1.png
1.png (238.16 KiB) Visto 1283 volte
Avatar utente
abe3d
Messaggi: 1112
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Allineamento a 2 spline

Messaggio da abe3d »

HHHHMMMMMMMMM!!! Questo è davvero un signor quesito!!
Ciao ragazzi, leggendo questo post mi sono venuti in mente alcuni modi complessi per risolvere una funzione che permetta di intercettare l'intersezione tra una spline e un raggio dato, per simulare una più complessa generazione di gradi di liberta e vincoli, ma come scrive Matteo nulla di tutto questo senza l'ausilio di codice .

Detto ciò (e ritornando a xpresso), l'escamotage più semplice possibile che ho immaginato è usare una spline (la secondaria) abbastanza suddivisa da far fare il lavoro al nodo Ray Collision su una sfera, iterando in sequenza i segmenti della spline (0-1,1-2,2-3 ecc.)

Il risultato è abbastanza preciso (relativo alla suddivisione del percorso spline secondaria) e veloce da calcolare...
Il resto è tutto Align to spline e target expression.
Allegati
trascina punto.zip
(52.57 KiB) Scaricato 55 volte
Xpresso.jpg
Xpresso.jpg (61.47 KiB) Visto 1242 volte
viewport.jpg
viewport.jpg (24.1 KiB) Visto 1242 volte
objects.jpg
objects.jpg (10.5 KiB) Visto 1242 volte
dadapik
Messaggi: 1
Iscritto il: gio giu 12, 2008 11:29 am

Re: Allineamento a 2 spline

Messaggio da dadapik »

Ciao a tutti, non sono convinto di avere capito esattamente la richiesta, ma guardandola superficialmente la prima cosa che mi è passata per la testa è: magari funziona con i connector.
Ho creato un setup al volo con le due spline e la barra in mezzo che si muove seguendo le due spline.
Allego il file così è più facile valutare se la soluzione può avere un senso o meno. :)
Allegati
Doppio Hinge.zip
(64.06 KiB) Scaricato 52 volte
Avatar utente
abe3d
Messaggi: 1112
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Allineamento a 2 spline

Messaggio da abe3d »

@dadapik
Ti rispondo io per tutti. La posizione del secondo pivot (hinge) deve necessariamente e "letteralmente" essere trascinata dal primo, che, spostandosi lungo il percorso diretto (evidentemente di lunghezza diversa da quello indiretto) ne regola la velocità (velocità del pivot secondario, che è il vero quesito da risolvere), vincolandolo alla distanza data.
  • Advertising
Rispondi