Community Forum Supporto Utenti Supporto Animazione e rigging Animazione braccio robotico

Stai visualizzando 10 post - dal 1 a 10 (di 10 totali)
  • Autore
    Post
  • Havokhin
    Membro
    @steel-saviour
    #780915

    Buongiorno a tutti,

    Sto riprendendo in mano Blender dopo un bel po’ di tempo e ho deciso di ripartire da un’animazione abbastanza completa.

    L’idea di base è un braccio meccanico che prelevi un componente da una scatola (pensavo un fusibile o un chip) e lo trasporti fino ad un’altra posizione installandolo nel suo alloggiamento.

    La modellazione è stata effettuata in Fusion360, questo perchè mi interessa seguire l’approccio 3D industriale importato e animato, manca solo una guida inferiore che permetta uno spostamento lungo un asse fino alla “postazione successiva” dove montare il componente prelevato.

    I componenti sono caricati come instanze, questo per semplificarmi la vita in aggiornamenti successivi.

    Cercavo ora di comprendere quale fosse il miglior modo di animare il sistema; il mio scopo è ottenere un sistema relativamente facile da adattare all’animazione necessaria. Il mio punto di partenza sono state le armature (mai usate in precedenza), puntando sulla cinematica inversa, almeno per i primi componenti ( settori viola, rosso, giallo e verde nell’immagine sottostante) e anche per la pinza finale (settore azzurro).

    Con non qualche difficoltà, sono riuscito a collegare i vari componenti ad una struttura ossea che, per ora, era composta solo da due ossa: quella fissa per i componenti della base (segmento nero) e un secondo osso per la rotazione sulla asse Z (segmento viola).
    E’ nato subito un problema. collegando alcune viti ad uno degli ossi e muovendo poi quest’ultimo, mi portavo dietro tutte le istanze

    Mi servirebbe qualche consiglio su come procedere: è corretto usare la armature? In passato per situazioni simili ho usato le shape keys (credo, è veramente un bel po’ che non animo), oppure collegando con un parent i componenti e animandoli con i driver.
    Che strada mi consigliate di provare per prima?

    Queste le immagini:

    Prima modellazione

     

     

    OtherWolf
    Partecipante
    @otherwolf
    #780948

    Siccome si tratta di hardsurface, il mio consiglio è di avere un joint per ogni pezzo separato, e a quel joint dare il 100% di influenza solamente sul pezzo che si muove, le viti devono rimanere fisse sul oggetto più “esterno”, cioè sul pezzo dove toccano, ti consiglierei una volta messi i joint,fatto le pesature di crearti dei controlli, delle forme a cui dai il parent per i vari joint, e bloccare rotazioni e spostamenti per i joint che non possono fare più di un movimento o che non possono spostarsi in certe direzioni, così da aiutarti nel simulare la cosa il più fedelmente possibile. Spero di averti dato una mano e di essere stato abbastanza chiaro, se qualsiasi cosa non torna o non si è capito dimmi pure e cercherò di spiegarmi meglio.

    Havokhin
    Membro
    @steel-saviour
    #785312

    Scusa il ritardo, non ho guardato blender per qualche giorno.

     

    Ti ringrazio per la risposta, non ho compreso pero’ cosa intendi con joint, magari e’ solo che li chiamo in un altro modo…

    Riesci a spiegarti meglio o a indicarmi un tutorial?

    Nanni Marras
    Partecipante
    @nn81
    #785314

    joint son le bones, skeleton l’armature, differenti nomi ma stessa sostanza

    OtherWolf
    Partecipante
    @otherwolf
    #785325

    Si scusami, su blender si usa il termine bone(osso) per creare un’armatura, su maya si usa joint, errore mio. Al momento non ho un tutorial che possa mostrarti chiaramente la situazione, appena finisco un lavoro ne cercherò uno pure io, siccome ho da animare un intero robottone. In sostanza e parole semplici si tratta di dare la pesatura di ogni pezzo ad un osso. Per ogni osso puoi decidere te quanta influenza ha sulla mesh, quanto cioè andrà ad influenzare la mesh. Il trucco quando si parla di hardsurface è sempre dare ad un’unico osso tutta la pesatura di tutti i pezzi che si muovono all’unisono. avendo così meno ossa che gestiscono al meglio ogni parte movente separata. Spero di essere stato più chiaro stavolta e di aver aiutato, appena troverò qualcosa che possa tornare utile come tutorial te lo linkerò qua sotto.

    Havokhin
    Membro
    @steel-saviour
    #785383

    Ciao Otherwolf, mi è chiaro quello che dici, ed è quello che pensavo di attuare: ovvero ricreo la struttura del braccio con le ossa e collego ad ognuna i componenti che si muovono all’unisono.

    Mi sorge però un problema; quando collego le viti (duplicate con alt+D, quindi condividono la stessa mesh) ottengo i risultati delle immagini sottostanti. se muovo un osso della base si muove tutto correttamente (non ho ancora collegato tutto, per quello che del materiale sta fermo), ma appena muovo un osso figlio del precedente, che contiene solo alcune delle viti, queste si muovono tutte.

    Potrei duplicarle normalmente, ma, se possibile, vorrei tenerle come duplicati collegati per poterle sistemare/modificare in futuro (e questo vale per tutto: servi, piastre, distanziali…)

     

    Havokhin
    Membro
    @steel-saviour
    #823849

    Trovato finalmente l’inghippo: io avevo seguito alcuni tutorial dove mi dicevano di selezionare gli oggetti, poi l’armatura quindi eseguire Ctrl+P > Armature deform > with Empty group.

    Nel mio caso questa soluzione non funziona; quello che invece mi ha permesso di far funzionare il tutto è stato inserire un constrain “Armature” e da lì indicare l’osso specifico, questo per tutti i componenti.

    Risultato, funziona

    Nanni Marras
    Partecipante
    @nn81
    #823862

    armature-> empty group non fa altro che crearti una serie di gruppi di vertici coi nomi delle varie ossa ma SENZA assegnargli alcunchè, te li lascia pronti in modo che non devi crearteli tu uno ad uno, può sembrare na stupidaggine ma quando cominci ad avere ‘na cinquantina di bones con nomi contorti si rivela a dir poco indispensabile..

    autoweight  invece crea sia i gruppi sia li skinna in automatico, il modo in cui li skinna è fondamentalmente  in base all’area di influenza “envelope” che abbiamo dato alle bones (se si va in edit mode sulle bones e si seleziona “envelope” viene fuori la magia e può anche essere “tarata” a piacere per ciascun osso)

    Havokhin
    Membro
    @steel-saviour
    #832157

    Buongiorno, riprendo questa vecchia discussione perchè sono andato avanti; o meglio, sono tornato indietro e ho ricominciato con un oggetto più semplice, in modo da affrontare un problema alla volta. :sleepy:

    Il nuovo braccio robotico ha molti meno componenti (alcuni semplicemente non li ho ancora aggiunti) e presenta un movimento testa limitato (deve solo restare orizzontale)

    E fin qui tutto bene.

    Il problema nasca nella rotazione sull’asse Z, rotazione che riesco ad effettuare correttamente solo se uso il promo osso della struttura, non se trascino un elemento più avanti (osso secondo braccio o testa).
    La cosa diventa un po’ problematica nel creare un animazione con il robottino che deve seguire un oggetto per pinzarlo e spostarlo; la cosa risulta molto complessa avendo il movimento svincolato su due diversi ossi.

    Avreste qualche consiglio su come “pilotare” il tutto in un pezzo unico? Stavo cercando di collegare una empty, ma mi sto perdendo su cosa imparentare e come.

     

    Grazie in anticipo

     

    Havokhin
    Membro
    @steel-saviour
    #832179

    Poi dicono che i forum non servono 😀  ; è un po’ come parlare ad alta voce e schiarirsi le idee.

    Trovato la soluzione, più un workaround che altro, ma funge, quindi sono contento 😀 😀

    In pratica ho collegato la cinematica inversa alla empty giallina posta nel punto di snodo, che poi è il punto che voglio gestire, a tale empty ne ho collegata un’altra (quella arancio con gli assi XYZ) che copia la posizione in Z della prima e la posizione XY del primo osso della struttutra, ovvero quello del basamento (che è fermo verticale e può solo ruotare sul suo asse).

    A questo punto ho creato un constraint “damped track” per la seconda empty che punti verso la prima e un constraint “copy rotation” per il primo osso della strittura, che copi solo la rotazione in Z della seconda empty.

     

    Ho fatto questo volo pindarico perché la prima empty non ruota, si sposta solo e mi serviva qualcosa che ruotasse, ma, per evitare incasinamenti per blender (prono a ingarbugliarsi) che fosse tale da limitare esclusivamente all’asse Z la rotazione (da qui il copy location della Z tra le due empty).

     

    come ho detto un workaround, ma funziona, quindi è ok 😀 :+1:

Stai visualizzando 10 post - dal 1 a 10 (di 10 totali)
  • Devi essere connesso per rispondere a questo topic.