REACTOR. COOPERATIVE CONTRAINTS.
![]()
I Cooperative Constraints sono più stabili dei Simple Contraints, ma richiedono un tempo maggiore di simulazione. I Cooperative Contraints devono essere inseriti in un Constraint Solver affinchè facciano parte della simulazione. il Solver è una specie di RBCollector dedicato ai vincoli. il suo scopo è quello di fare lavorare insieme più vincoli.
Alcune proietà sono comuni a tutti questi vincoli.
STRENGHT
e TAU.
Insieme definiscono la forza del vincolo.
Strenght applica un impulso di base per mantenere il vincolo fra gli oggetti.
Tau è un impulsi correttivo quando Strenght non è sufficiente
a mantenere il vincolo. Indica la percentuale di impulso correttivo da applicare.
BREAKABLE
CONSTRAINTS.
Si tratta divincoli che si spezzano quando si supera una soglia specificata
(in corrispondenza di questo punto cessano gli impulsi che hanno la funzione
di mantenere il vincolo).

LINEAR/ANGULAR.
Soglie lineari e angolari da raggiungere prima che il vincolo si spezzi.
![]()
Il
Solver per i vincoli Cooperative si crea da qui:

Questi
sono i suoi parametri:

Clicca su RBCOLLECTION per assegnare appunto l' RBC contenente gli oggetti su cui verranno stabiliti i vincoli da assegnare al Solver. Successivamente inserisci nella lista i vincoli Cooperative impostati fra gli oggetti.
DEACTIVATION
THRESHOLD.
Definisce una soglia che disattiva tutti i corpi rigidi fra cui valgono i vincoli
presenti nel Solver.
DISABLED.
Vengono disabilitati tutti i vincoli presenti nel Solver.
HINGE
![]()
Il
vincolo Hinge si crea da qui:

La sua funzione è quella di simulare un cardine fra 2 oggetti.
Questi
sono i suoi parametri:

Ad esempio definiamo una scatola che ruota intorno al bordo di un'altra.
La
scatola gialla è linkata a quella blu, e il suo Pivot Point è
posizionato al confine tra le due scatole. La scatola blu ha Mass=0. Le collisini
fra i due oggetti sono disabilitate.
Creiamo un vincolo Hinge prendendo la scatola gialla come Child e quella blu come Parent, poi allineiamo lo spazio del vicnolo Hinge al child con il comando Child Body. L'Hinge si posizionerà in corrispondenza del Pivot point della scatola gialla.
Quando
selezioniamo l'Hinge compare una freccia grossa e una piccola.
In
realtà le frecce sono 4: 2 verdi per il livello Parent, 2 rosse per il
livello Child dell' Hinge. Solo che non si vedono tutte perchè risultano
coincidenti.
L'asse grosso specifica quello di rotazione per l'oggetto, quello piccolo invece serve a definire i limiti di rotazione. Occorre quindi allineare innanzitutto gli assi del Child(rossi) e del Parent (verdi) nel verso giusto.
Scendiamo
al livello Child Space e ruotiamolo di 90 gradi, in modo da posizionare l'asse
grosso lungo il confine delle due scatole.
Con
il comando Child Space allineiamo lo spazio Parent a quello Child.
Gli
assi piccoli servono a regolare la zona di limitazione della rotazione. Attivando
Limited apparirà un ventaglio, indicante l'ampiezza della rotazione possibile.
L'ampiezza
dell'arco consentino si regola con i parametri MIN/MAX Angle, mentre il suo
orientamento nello spazio si regola scendendo al livello Parent Space e ruotando
lo spazio attorno all'asse grosso.
A questo punto sarà visibile anche l'asse rosso piccolo, relativo allo spazio Child. A questo punto la scatola gialla potrà ruotare intorno all'asse rosso grosso, però soltanto in modo tale che l'asse rosso piccolo resti sempre all'interno dell'arco di limitazione verde.
Ad
esempio, partiamo da questa situazione:
La
posizione più estrema che la scatola gialla potrà assumere è
questa: l'asse rosso piccolo si trova al confine dell'arco verde.
POINT TO POINT.
![]()
Questo
vincolo permete di attaccare 2 oggetti insieme. Essi condividono un punto in
comune. Possono ruotare liberamete l'uno rispetto l'altro.

Questi
sono i suoi parametri:

Esempio:
la ciambella è fissa nello spazio e il vincolo è centrato su di
essa.
![]()
Nella sezione CONTRAINT TYPE si definisce il tipo di vincolo.
LIMITED.
Permette di definire dei limiti alla rotazione. Ad esempio permettiamo una rotazione
limitata soltanto rispetto a un asse.

Come
al solito, l'arco verde mostra la rotazione possibile per gli assi rossi del
Child.
![]()
In
modalità Stiff Spring è possibile definire una distanza da mantenere
costante fra i due oggetti durante la simulazione. In questo caso diventa disponibile
questo parametro:
SET.
Imposta la distanza come quella corrente fra i due oggetti.
In
questa modalità è possibile allineare gli spazi Child e Parent
sui rispettivi oggetti. Si bailita infatti il pulsante Each Body.
Rispetto al caso Standard, questa volta la teiera ruota anche localmente.
PRISMATIC.
![]()
Questo
vincolo permette a due oggetti di muoversi soltanto rispetto a un asse. Le traslazioni
lungo gli altri assi e le rotazioni sono bloccate.

Questi
sono i suoi parametri:


Come
al solito sono presenti 2 serie di assi: rossi per il Child, verdi per il Parent.
L'ase grosso con il suo orientamento definisce la direzione lungo cui gli oggetti
possono muoversi. L'asse piccolo non serve.
Con i parametri della sezione LIMITED si definisce un segmento lungo l'asse
(qui sopra evidenziato in bianco) indicante il tratto percorribile per l'oggetto.
CAR-WHEEL.
![]()
Questo vincolo si utilizza per attaccare una ruota a un oggetto (il telaio di un amacchina? E chi lo sa!). La ruota può appunto ruotare liberamente intorno a un asse di rotazione. Il suo movimento llineare è invece definito tramite un asse si sospensione. Il Child si comporta da ruota, il Parent di comporta da telaio.
Il vincolo si occupa di ruotare la ruota durante la simulazione

Costruiamo
una macchina rudimentale (con una ruota sola):
La scatola ha Mass=0, la ruota Mass=1.
Imponiamo
il vincolo Car Wheel definendo la scatola come Parent e la ruota come Child.
Questi sono i parametri del vincolo:

Quando
imponiamo il vincolo appaiono i sliti assi verdi (Parent) e rossi (CHild). L'asse
verde indica le sospensioni, quello rosso l'asse di rotazione.
Occorre
ovviamente orientare gli assi correttamente. Per farlo possiamo ricorrere al
livello Suspension Rotation per ruotare l'asse relativo alla sospensione.
Per
gli assi di rotazione occorre usare i livelli Parent Space e Parent Child (ne
esiste uno rosso e uno verde)
Con
i Suspension Parameters definiamo la traslazione della ruota lungo l'asse della
sospensione. Viene visualizzato con un segmento, come nel caso del vincolo Prismatic.
![]()
VELOCITY.
Velocità che la ruota dovrà raggiungere (espressa in rad/s).
GAIN.
Accelerazione angolare.
Esempi
con un valore =10 per entrambi i parametri.
POINT TO PATH
![]()
Questo
vincolo costringe il Child a muoversi lungo un percorso relativo al Parent (se
il percorso deve seguire un oggetto) o allo spazio World. L'orientamento del
Child non è vincolato. Quindi per utilizzare questo vincolo occorre definire
almeno un percorso.

Creiamo
una scatola e un percorso. e i vari elementi reactor che occorrono per la simulazione.
Occorre
innanzitutto posizionare l'ogeto sopra il percorso, in corrispondenza del punto
di partenza.
Questi
sono i parametri del vincolo:

Clicca
su CHILD e assegna la scatola al vincolo.
Clicca su PATH e assegna il percorso che l'oggetto dovrà seguire.
Per default è impostato Align Parent Space To Path, in modo che l'oggetto segua il percorso nello spazio in cui questo è definito.
Assegna
il Point-To Path al gestore dei vincoli Cooperative e fai partire la simulazione.
Attenzione: l'oggetto impazzisce se arriva agli estremi di un percorso aperto.
![]()