In questo tutorial vedremo come configurare i Rigid Body e il Constraint Hinge (letteralmente: cerniera) per realizzare l'animazione del pendolo di Newton, che state vedendo in questo momento.



Trascrizione del video

In questo tutorial vedremo come configurare i Rigid Body e il Constraint Hinge (letteralmente: cerniera) per realizzare l'animazione del pendolo di Newton, che state vedendo in questo momento. Il tutorial è stato realizzato con la versione 3.6 di Blender.

Per iniziare, sto utilizzando un modello 3D già pronto che presenta la struttura di base e un buon numero di sfere con i loro supporti.

In questo modello 3D, le sfere e i supporti hanno le origini impostate correttamente lungo quello che sarà l'asse di rotazione, ma sono tutte imparentate alla struttura. Questo non è necessario e, anzi, potrebbe essere un problema per la simulazione fisica, per cui per prima cosa le sto selezionando tutte e sto annullando le loro parentele con lo shortcut ALT P, scegliendo poi l'opzione Clear Parent and Keep Transformation dal menù Separate che appare a video.

In realtà, devo effettuare delle operazioni che andranno ripetute per tutte le sfere, per cui in effetti posso cancellarle tutte tranne una, così da effettuare le operazioni sulla sfera superstite ed ottenerne delle copie già configurate.

Abbiamo quindi due oggetti: la base e la prima sfera con i suoi supporti. Possiamo ignorare la base, che non rientrerà nella simulazione fisica.

La sfera ha la sua Origin in alto, lungo l'asse di rotazione. Ciò ci torna molto utile perché proprio in quel punto, sulla verticale della sfera, dovremo aggiungere un oggetto accessorio necessario per poter utilizzare il Constraint Hinge.

Quando aggiungiamo un nuovo oggetto nella scena, questo viene posizionato con la sua Origin lì dove si trova il 3D Cursor. Posiziono quindi il 3D Cursor in corrispondenza dell'Origin della sfera con lo shortcut SHIFT S, scegliendo poi l'opzione Cursor to Selected.

Ci serve ora un oggetto accessorio al quale dare il Constraint Hinge. Va bene qualsiasi oggetto, per cui sto aggiungendo un semplicissimo cubo, che ridimensiono in modo da poterlo visualizzare senza problemi. Al termine del ridimensionamento, applico le trasformazioni di scala con lo shortcut CTRL A. Questa operazione forse è superflua, in questo contesto, ma si tratta comunque di una buona abitudine da rinforzare.

Con il cubo selezionato, apriamo la scheda Physics della Properties Window ed aggiungiamo un componente Rigid Body, impostandolo in particolare come Passivo.

Questo oggetto parteciperà quindi alla simulazione Rigid Body, ma senza reagire alle forze. Si tratterà, come detto, del vincolo per la rotazione della sfera.

Aggiungiamo quindi un Rigid Body anche per la sfera, cambiandone però il tipo in Attivo, in quanto la sfera dovrà effettivamente muoversi in base alla gravità e ad altre forze. Il valore presente di default per la massa dell'oggetto è troppo basso, per cui lo porto a 100 grammi.

Un'altra modifica molto importante da fare riguarda la Collision Shape della sfera. Questo parametro è impostato di default su Convex Hull, ma l'involucro così creato potrebbe creare qualche problema durante l'interazione con gli altri, per cui cambio la modalità in Mesh. Questa opzione è più onerosa dal punto di vista computazionale, ma restituirà un risultato corretto.

Il tooltip del parametro Margin suggerisce di lasciare un valore maggiore di 0 per questo parametro, tuttavia facendo delle prove ho notato che in questo contesto è meglio portarlo a 0, per evitare che la simulazione fisica rilevi delle collisioni tra gli oggetti anche quando questi sono fermi ma molto vicini, all'inizio della simulazione.

Dobbiamo impostare inoltre un valore molto alto, come ad esempio 0.9, per il parametro Bounciness, così da far rimbalzare molto le sfere, con degli urti quasi perfettamente elastici.

Nella sezione Dynamics troviamo altri parametri relativi al Damping, che gestisce la perdita di velocità o di momento angolare nel tempo. Su questi parametri torneremo in seguito, quando faremo delle prove con tutte le sfere.

Prima di andare oltre, salviamo la scena in un nuovo file. In tutto il corso del tutorial vi dirò di salvare il progetto prima di premere Play o avviare un Bake, perché Blender è andato in crash diverse volte con questa particolare simulazione, quando premevo Play senza prima aver salvato le modifiche.

Avviando l'animazione in questo momento, la sfera precipiterà nel vuoto. Questo è, in effetti, il comportamento corretto, perché non abbiamo ancora creato un Constraint Hinge con il quale vincolare la sfera al cubo che abbiamo aggiunto poco fa.

Prima, però, dobbiamo fare un'altra modifica: dobbiamo spostare il centro di massa della sfera proprio all'interno di questa geometria. Possiamo effettuare questa operazione posizionando il 3D Cursor al centro della sfera con SHIFT S in Edit Mode, per poi scegliere Origin to 3D Cursor con il tasto destro in Object Mode.

Adesso la sfera e il Cubo sono perfettamente allineati verticalmente. Prima del rendering potremo nascondere il Cubo, ma per il momento è utile tenerlo bene in vista. Selezioniamolo e dedichiamoci alla creazione del vincolo Hinge.

Il Rigid Body Constraint va aggiunto, come il componente Rigid Body, nella scheda Physics dell'editor Properties.

La prima cosa da fare è cambiare il tipo di Constraint da Fixed a Hinge.

Nella sezione Objects troviamo due campi nei quali specificare due oggetti della scena. Il Constraint funziona infatti collegando l'oggetto denominato Second, che si muoverà, all'oggetto denominato First, che invece resterà fermo. Nel nostro caso, quindi, possiamo impostare il Cubo come First e la sfera come Second.

Non abbiamo ancora finito, perché con il Constraint Hinge la rotazione avviene intorno all'asse Z locale dell'oggetto Rigid Body passivo. In effetti, Hinge è simile al Constraint Point, ma vincola l'oscillazione a questo asse. Dal momento che, in questo progetto, la rotazione deve avvenire intorno all'asse X globale della scena, che in questo momento corrisponde all'asse X locale del cubo, dobbiamo ruotare il cubo di 90 gradi intorno all'asse Y. Per mostrare gli assi locali ho cambiato la Transform Orientation della vista 3D in Local.

Effettuiamo quindi questa rotazione premendo R Y 90.

Salvando il progetto e avviando adesso la simulazione... non avverrà niente! Il centro di massa della sfera è impostato correttamente al suo interno, ma la sfera e il vincolo sono perfettamente allineati verticalmente, in equilibrio! Dobbiamo quindi fornire una rotazione iniziale alla sfera, dopodiché la fisica farà il resto.

Adesso l'Origin della sfera si trova proprio al suo interno, ma a noi farebbe comodo poter ruotare la sfera e i suoi supporti intorno al punto in cui si trova il cubo. Per questo motivo, sto aggiungendo un oggetto Empty alla scena, rinominandolo subito in ROTATION. Seleziono quindi la sfera, poi seleziono anche la Empty ROTATION, con una selezione multipla proprio in quest'ordine. Premo infine CTRL P e realizzo la parentela, con la sfera che diventerà figlia della Empty ROTATION.

In questo modo, potremo fornire la rotazione iniziale alla prima sfera ruotando la Empty che la controlla.

Salvando adesso il progetto ed avviando la simulazione, questa volta la sfera si muoverà proprio come desiderato!

Realizzare le altre sfere è in realtà semplicissimo, perché potremo procedere con delle copie della prima sfera e del cubo che possiede il Rigid Body Constraint. Riportiamo quindi la Empty ROTATION in verticale, selezioniamo sia il cubo che la sfera con una selezione multipla ed effettuiamo una prima duplicazione con spostamento mediante SHIFT D Y e il movimento del mouse, posizionando la seconda sfera proprio accanto alla prima.

Ho specificato SHIFT D Y, con il vincolo di spostamento della copia lungo l'asse Y, per effettuare lo spostamento della copia insieme alla duplicazione, facendo cioè considerare a Blender queste due operazioni come un'unica operazione. Ciò ci consentirà di realizzare le altre copie, già perfettamente posizionate, premendo SHIFT R, che è lo shortcut per ripetere l'ultima operazione.

Se abbiamo posizionato bene le copie, salvando ora il progetto e avviando la simulazione le sfere resteranno perfettamente immobili al loro posto. Ciò significa che il simulatore Rigid Body non sta trovando false collisioni tra gli oggetti.

L'unico inconveniente è che le copie saranno tutte imparentate alla Empty ROTATION che fornisce l'orientamento iniziale alla prima sfera. Possiamo comunque risolvere velocemente questo problema selezionando tutte le copie e sganciandole dalla Empty con lo shortcut ALT P, per poi scegliere Clear Parent and Keep Transformation.

Ruotiamo quindi la Empty che controlla la prima sfera, salviamo il progetto e avviamo la simulazione, così da esaminare il risultato ottenuto.

Se il risultato è soddisfacente, non resta che nascondere i cubi con i Rigid Body Constraints sia dalla scena che dal rendering finale per poter procedere, appunto, al rendering. Nel caso le sfere centrali dovessero muoversi troppo, provate a riposizionarle in modo tale da metterle le une più vicine alle altre, nella configurazione iniziale. Ricordatevi di spostare le sfere insieme ai cubi con i vincoli, altrimenti le sfere partiranno con una loro rotazione iniziale!

Per rendere più veloce la simulazione o per far oscillare maggiormente le sfere, possiamo agire su un paio di parametri.

Per poter modificare in un colpo solo un parametro per tutte le sfere selezionate, premete il tasto ALT e tenetelo premuto mentre fate click con il mouse sul parametro da modificare.

Per quanto riguarda le sfere, suggerisco di aumentare il valore Bounciness e diminuire drasticamente i due valori di Damping sia per i movimenti lineari che per le rotazioni, nella sezione Dynamics della scheda Rigid Body.

Sconsiglio invece di abbassare il valore di Friction, perché questo potrebbe generare dei movimenti indesiderati nelle sfere che devono rimanere immobili.

Nella scheda Scene dell'editor Properties troviamo poi il parametro Speed, che consente di accelerare l'intera simulazione fisica.

Nella stessa scheda troviamo anche i parametri Substeps e Solver Iterations, che vi consiglio di aumentare solo se notate qualche errore nella simulazione fisica, perché questi parametri indicheranno a Blender di effettuare più calcoli, ottenendo quindi una simulazione più accurata, al costo ovviamente di un incremento del tempo necessario per effettuare la simulazione stessa.

Cerca nei Tutorial

Cerca inserendo una frase o più parole chiave, separate da virgole.

Modelli 3D, tutorial e risorse di computer grafica di Francesco Milanese. Le licenze d’uso dei modelli 3D sono acquistabili tramite gli store esterni indicati nelle rispettive pagine, secondo le condizioni di licenza applicabili. Francesco Milanese — Partita IVA: 06321250877. Contatti: info@francescomilanese.com


INFORMATIVA ESTESA SULL'UTILIZZO DEI COOKIES