REACTOR. SIMPLE CONSTRAINT.

 

 

Per realizzare una simulazione dinamica occorre assegnare dei corpi rigidi a un RBCollection e definire per essi delle propietà fisiche. In questo modo però i corpi risenton della forza di gravità e collidono fra di essi.....ma nulla più. A volte è utile impostare dei vincoli, come ad esempio i cardini per una porta che si apre. I vincoli riducono i gradi di libertà di movimento di un oggetto.

Vediamo più da vicino come sono fatti questi vincoli.

i vincoli sono usati per definire delle limitazioni al movimento degli oggetti. Senza di essi gli oggetti sarebbero limitati solo dalle collisioni e dalle deformazioni.
Nel caso in cui si abbia un sistema composto da più oggetti vincolati frea loro, un singolo vincolo si risente sugli altri. In questo caso occorre raggruppare i vicnoli insieme in modo da venire simulati come un sistema unico. In questo caso si parla di Cooperative Contraint. Richiedono un tempo di calcolo maggiore ma producono soluzoini più accurate rispetto ai vincoli semplici (Simple Constraint).

Nella dinamica dei corpi, ogni oggetto ha 6 gradi di libertà: 3 per la traslazioe e 3 per la rotazione. Quando stabiliamo un vicnolo su un oggetto viene rimosso uno o più di questi gradi di libertà. Questi limiti vengono definiti in base al sistema di coordinate del vincolo o dello spazio in cui agisce.

Ogni vincolo può avere 2 oggetti su cui agisce: l'oggetto genitore e l'oggetto figlio, in modo da definire il movimento dell'oggetto figlio relativo a quello dell'oggetto parente.
Per la maggiorparte dei vincoli, lo spazio di riferiemento del vincolo è allineato con quello locale dell'oggetto figlio. Gli unici vincoli ad avere il propio sistema di riferimento allineato a sè stessi sono Sprint e Point-To-Path. Quindi ogni vincolo ha due caratteristiche: gli oggetti linkati su cui agisce e lo spazio utilizzato per allineare il propio sistema di riferimento.

 

SIMPLE CONSTRAINT

 

I Simple Contraint non richiedono di essere inseriti in un Constraint Solver, come i Cooperative Constraint (li vediamo dopo). Tutti i vicnoli validi nella scena sono automaticamente considerati nella simulazione.

 

SPRING.


Questo helper serve a definire una molla tra 2 corpi rigidi, oppure tra un corpo rigido e un punto nello spazio. Questi sono i suoi parametri.

Per attaccare la molla fra due oggetti attiva PARENT, altrimenti per definirla fra un oggetto e un punto nello spazio lascialo disattivo: basterà solo il CHILD a indentificare l'oggetto.
Ad esempio uniamo la ciambella e la teiera con una molla e avviamo il calcolo della simulazione.

Per spostare i punti di attacco della molla, utilizza i suoi sottolivelli:

Per default i punti di attacco sono posizionati in corrispondenza del Pivot Point degli oggetti.

ALIGN SPACES TO.
Allinea gli spazi del vincolo (cioè i punti di attacco della molla) ai Pivot Point dei due oggetti oppure al rispettivo spazio di vincolo.

LOCK RELATIVE TRANSFORM.
Quando è attivo la trasformazione tra gli spazi di vincolo del child e del parent è bloccata: spostando lo spazio di vincolo del child, quello del parent segue, e viceversa.

STIFFNESS.
Forza della molla.

DAMPING.
Indica quanto velocemente l'oscillazione della molla decade. Per risultati realistici conviene impostare Damping= Stiffness/10.

REST LENGHT.
La molla applica delle forze sugli oggetti nel tentavito di raggiungere la sua lunghezza originale. Questa viene visualizzata con il colore blu lungo la linea che unisce i due spazi di vincolo.

SET.
Imposta la Rest Lenght della molla al valore corrente di distanza fra i due spazi di vincolo.

ACT ON COMPRESSION/EXTENSION.
Abilita la molla in compressione/estensione.

DISABLED.
La molla non viene considerata nella simulazione.

 

LINEAR DASHPOT.

Questo vincolo può agire fra 2 oggetti o su uno solo. Corrisponde a una molla con Rest Lenght=0 e con un valore Damping elevato. Durante la simulazione il Dashpot cerca di mantenere i due oggetti alla stessa distanza relativa al passare del tempo. Gli oggetti sono ancora liberi di ruotare intorno gli spazi di vincolo. Quidi è come se fossero attaccati tramite una corda.


Come si nota, la teiera è vincolata a restare a una distanza costante dalla ciambella, però può ancora ruotare liberamente rispetto ai sui assi locali.

Questi sono i suoi parametri:

STRENGHT.
Forza dell'impulso che il Sashpot applica a ogni corpo attaccato. Questo comunque dipende anche dalla massa degli oggetti.

DAMPING.
Decadenza delle oscillazioni. Per risultati realistici conviene avere Damping= Stiffness/10.

ALLOW INTERPENETRATION.
Le collisioni vengon disabilitati fra gli oggetti vincoladi dal dashpot, e sono in grado di passare l'uno attraverso l'altro.

 

 

ANGULAR DASHPOT.

L'Angular Dashpot si utilizza quando si vuole vincolare l'orientamento relativo di 2 corpi rigidi, oppure l'orientamento di un corpo rigido singolo rispetto al sistema World.


Confrontiamo i due casi senza Angular Dashpot e con il vincolo invece attivato.

Questi sono i suoi parametri:

Praticamente già sappiamo a che servono. Ricordiamoci che comunque l'effetto della STRENGHT varia a seconda della massa dell'oggetto su cui agisce.