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.
![]()