REACTOR. CORPI DEFORMABILI: CLOTH e DEFORMABLE MESH.

 


II corpi deformabili sono quelli che variano la propia geometria al passare del tempo, durante la simulazione.
In generale occorre prima creare la mesh o la spline che definisce la forma base dell'oggetto, poi applicare un modificatore speciale. Successivamete è possibile definire ulteriori propietà fisiche per questi oggetti.

Esistono 4 oggetti deformabili in Reactor:
- Cloth: tessuto (mesh bidimensionale deformabile)
- Soft Body: mesh chiusa deformabile.
- Rope: corda (catena di vertici unidimensionale deformabile)
- Deforming Mesh: mesh deformabile i cui vertici sono stati già animati.

Come i corpi rigidi, i corpi defomabili devono essere inseriti in un Collector per essere considerati nella simulazione. i corpi deformabili hanno ognuno un propio Collector, quindi non occorre inserirli nel RBCollector, che è dedicato infatti alla gestione dei corpi rigidi.

Possono essere stabiliti dei vincoli per limitare il loro movimento.
Questi corpi sono più complessi rispetto ai corpi rigidi, quindi il tempo di simulazione per questi è maggiore.

 

 

CLOTH.

Crea unoggetto mesh che rappresenta il telo di stoffa. La segmentazione influisce sul comportamento del tessuto: tenderà a piegarsi lungo segmenti contigui (comportamento anisotropico), oppure si allungherà maggiormente se la mesh è maggiormente segmentata. La soluzione migliore è realizzare una topologia a trinagoli (triangolazione Delaunay), in modo che il tessuto si comporta nello stesso modo in tutte le direzioni (comportamento isotropico).

Creiamo nella scena un pezzo di stoffa con un piano e un ClothCollector.

Per potere rendere il piano valido per il ClothCollector occorre aggiungere un modificatore ReactorCloth.

I parametri del ClothCollector sono questi:

INTERNAL STEPS.
Popihè i corpi deformabili sono più complessi da simulare, in genere è necessario aggiungere dei passi di simulazione in più per aumentare la stabilità del sistema. Gli Internal Steps indicano quanti passi ulteriori di simulazoine vengono calcolati per ongi SubStep ordinario di simulazione.
La precisione della simulazione in generale è definita dal numero di SubSteps, mentre quella riguardanti gli oggetti appartenenti al ClothCollector hanno una precisione di simulazione definita da SubSteps x Internal Steps.

Il piano, dato che dovrà deformarsi come un tessuto, dovrà essere sufficientemente segmentato. Conviene distribuire una segmentazione con un pattern il meno regolare possibile. A volte però saremo costretti a tenerci la segmentazione quadrangolare della superficie. Niente paura: il tessuto si comporterà in maniera decorosa ugualmente.
A qualcuno potrebbe venire in mente di applicare un modificatore Tessellate prima del ReactorCloth.

Be', questo metodo rende instabile il sistema. Il metodo migliore è creare una superficie NURBS e segmentarla utilizzando il metodo Delaunay, che sparpaglia dei triangoli sulla superficie.
Per realizzare questo si fa così:


- Crea la superficie NURBS.

Vai al pannello Modify e apri la tendina Surface Approximation.

Clicca su Advanced Propeties e nella finestra che si apre scegli la voce Delaunay.

 

 

 

 

A questo punto la superficie cambia tipo di segmentazione.

Certo, per come stiamo messi questo pezzo di stoffa si comporta più o meno come una tavola di legno. Aumentiamo la segmentazione riducendo il parametro Edge.

Questa è la migliore superficie che si possa utilizzare per simulare tessuti. Tuttavia si possono ottenere buoni risultati anche con le segmentazioni quadrangolari a cui siamo più abituati.

Teniamoci il piano segmentato così:

Creiamo la simulazione di un tessuto che scivola sopra a una sfera e cade su un piano.
La sfera e il piano devono essere associati a un RBCollector, mentre il piano del tessuto a un CCollector.


I parametri del ReactorCloth sono questi:

 

MASS.
Massa della stoffa. influenza le collisioni con gli altri oggetti e il suo allungamento (all'aumentare di Mass l'allungamento possibile si riduce).

FRICTION.
Coefficiente di frizione della superfici del tessuto. Al diminuire del valore il tessuto scivola meglio sopra la superfici.

REL DENSITY.
Questo parametro definisce la densità del tessuto (1= densità dell'acqua). Il parametro è utile se il tessuto viene fatto galleggiare o affondare nell'acqua.

AIR RESISTANCE.
Resistenza dell'aria. E' un indice della quantità di energia che il tesuto perde mentre si muove.

SIMPLE FORCE MODEL.
Modello standard di simulazione delle forze che agiscono sul tessuto.

STIFFNESS.
Rigidità del tessuto.

DAMPING.
Indica quanto velocemente il tessuto dissipa energia mentre cambia forma.

COMPLEX FORCE MODEL.
Modello più accurato per la simulazione del tessuto.

STRETCH.
Resistenza all'allungamento.

BEND.
Resistenza al piegamento.

SHEAR.
Resistenza allo strappo.

DAMPING.
Indica quanto velocemente il tessuto dissipa energia mentre cambia forma.

FOLD STIFFNESS.
Resistenza alla formazione di pieghe.

UNIFORM MODEL.
Aggiunge pieghe uniformemente su tutta la superficie del modello, indipendentemente dalla topologia.

SPATIAL MODEL.
E' un modello più accurato per il calcolo delle pieghe. Si utilizza quando si utilizzano pezzi di stoffa complessi, come vestiti.

STIFFNESS.
Rigidità dela piega.

DISTANCE.
Grado di rigidità delle pieghe per unità di area.

SPREAD ANGLE.
Indica la quantità di pieghe da aggiungere alle zone del tessuto non piatte considerando l'angolo formato dalle normali dei poligoni adiacenti. Se il valore è 0 il Fold Stiffness è applicato solo alle parti piatte del tessuto.

SPLIT ANGLE.
Indica la concentrazione di rigidità lungo i segmenti della mesh.

AVOID SELF-INTERSECTIONS.
Il tessuto non si interseca con se stesso durante la simulazione.

CONSTRAIN DEFORMATION.
Limite all'allungamento del tessuto.

START WITH CURRENT STATE.
Il tessuto inizia la simulazione usando lo stato corrente. Per fare in modo che lo stato corrente diventi quello iniziale questa è la procedura:
- Aprire la finestra Preview Window e avviare la simulazione fino al punto in cui si desidera avere lo stato iniziale.

- Va qui:

A questo punto il frame corrente su cui ci si trova (generalmente 0) viene aggiornato a questo stato della simulazione nella vista di Max, e la simulazione può essere fatta partire di nuovo, cominciando da qui.

CLEAR KEYFRAMES.
Le chiavi di animazione del tessuto vengon memorizzate a parte, e non insieme alle restanti chiavi di simulazione. Per cancellarle utilizza questo comando.

USE SOFT SELECTION.
Permette di utilizzare il Soft Selection per smussare la transizione tra i vertici keyframed e quelli simulati. Lo tratteremo più avanti.

CONSTRAINTS.
In questa tendina si trovano i parametri per definire dei vincoli sul tessuto.

Quando si lavora con i corpi deformabili occorre specificare i vertici della superficie che si desiderano vincolare; i tipi di vincoli applicabili sono i 4 qui sopra.
I corpi deformabili possono essere vincolati soltanto a punti nello spazio World, a corpi rigidi o a Deforming Mesh (le vediamo dopo). Esiste però una scappatoia:

- Simulare un pezzo di stoffa.
- Dopo il completamento della simulazione, rimuove la stoffa dal CCollector e aggiungerlo a un DeformingMesh Collector (vediamo dopo cos'è). A questo punto è possibile attaccare un altro corpo deformabile al primo pezzo di stoffa.

Vediamo come funzionano i 4 tipi di vincoli.

FIX VERTICES.
Fissa i vertici selezionati nella loro posizione corrente.

KEYFRAME VERTICES.
Il voncoo permette ai vertici selezionati di seguire la loro animazione corrente in 3DStudio, trascurando la simulazione.

ATTACH TO RIGID BODY.
I vertici selezionati vengono linkati a un corpo rigido.

ATTACH TO DEFMESH
I vertici selezionati seguono una Deforming Mesh.

I veritici di interesse devono essere selezionati a questo livello:

Dopo avere effettuato la selezione si può uscire dal livello Vertex: questa resterà memorizzata e i vincoli si applicheranno ad essa.

Caso di vincolo Fix Vertices.

 

Caso di vincolo Keyframe Vertices:

Definiamo una animazione del pezzo di stoffa prima della simulazione.

Selezioniamo i vertici di interesse e applichiamo il vincolo Keyframe Vertices. In questo caso i vertici selezionati seguono l'animazione 3dsmax, mentre i restanti fanno riferimento soltanto alla simulazione.

 

Caso di vincolo Attach To Rigid Body:

Definiamo nella scena un corpo rigido a cui attaccare il pezzo di stoffa.

Al corpo rigido è assegnata Mass= 0 e una animazione predefinita che lo sposta orizzontalmente.
Scendiamo al livello Vertex (senza ancora selezionare i vertici) e applichiamo un vincolo Attach To Rigid Body.

Sopra apparirà in alto questa tendina:

Con il pulsante NONE si seleziona il corpo rigido a cui linkare la selezione di vertici. Ricordati di uscire prima dal livello Vertex altrimenti perderai la selezoine creata.

DO NOT AFFECT RIGID BODY.
Quando è attivo il corpo defomabile linkato non influenza il comportamento del corpo rigido. Quindi i vertici seguiranno il corpo rigido ma nessuna forza sarà applicata a questo.

IGNORE COLLISIONS.
Attivala per trascurare le collisioni fra il corpo rigido e quello deformabile.

Seleziona i vertici da vincolare.

Esci dal livello Vertex e avvia la simulazione.

ATTENZIONE!!
Il corpo rigido deve avere attivata l'opzione UNYELDING nella tendina Properties del Reactor.

In questo modo verrà considerato nella simulazione mantenendo però la sua animazione 3dsmax.

Non occorre invece attivarla nel caso in cui desideriamo che il corpo rigido venga sottoposto alla simulazione al 100%.

 

OGGETTI DEFORMABLE MESH.

Indtroduciamo gli oggetti Deformable Mesh analizzando il caso del vincolo Attach to DefMesh per gli oggetti Cloth.

Uan Deforming Mesh è una mesh i cui vertici sono già animati. E' ilc aso di un modelloche simuove in base all'animazione dello scheletro cui è attaccato tramite un modificatore Skin oppure Physique.

Le Deforming Mesh non vengon influenzate dalla collisioni con gli altri oggetti Reactor, mentre invece questi risentono della collisione con la Deforming Mesh. Quindi un omino con un vestito nonsi accorge del vestito.....ma il vestito si accorge dell'omino!

Le eforming Mesh non hanno bisogno di avere assegnati dei modificatori reactor particolari o delle propietà fisiche; basta inserire la mesh deformabile all'interno di un Deforming Mesh Collector per considerarla nella simulazione. Essa continuerà a muoversi in base alla sua animazione preesistente.

Per gli oggetti Cloth il vincolo Attach To DefMesh costringe i vertici a seguire la superficie di un corpo deformabile (es.: personaggio con applicato un modificatore Physique o Skin). Si utilizza soprattutto per simulare vestiti.

Seleziona i vertici e imposta il vicolo. Selezionandolo in alto apparirà questa tendina:

Da qui si seleziona la mesh che si deforma.

Durante la simulazione i vertici vincolati saranno costretti a mantenere la loro posizione relativa alla superficie della mesh.

 

 

 

 

Ad esempio creiamo un cilindro animato tramite uno scheletro, e mettiamo intorno al cilindro una gonnella, creata tramite l'estrusione di un cerchio.

Nel tempo pieghiamo il cilindro così:

A questo punto il cilindro deve essere gestito, durante la simulazione, dal Deformable Mesh Collector. Pre crearlo vai qui:

I suoi parametri sono più o meno come quelli degli altri Collector:

FREEZE.
Quando è attivo la mesh deformante resta immobile durante la simulazione. E' utile ad esempio per adattare vestiti intorno al modello dalla Preview Window, prima di usare il comando Update Max.

Applichiamo un ReactorCloth alla gonna e impostiamo un vincolo DeformableMesh, scegliendo come mesh deformabile il cilindro appunto.
I vertici vincolati sono questi:

I vertici selezionati si muoveranno rigidamente con la superficie, mentre gli altri si adatteranno in base alla collisione tessuto/cilindro.

In generale è possibile scendere al livello Vertex e selezionare differenti insiemi di vertici. Per ognuno di questi insiemi si può definire un vincolo differente. Si ottiene un errore si si prova a vincolare uno stesso vertice utilizzando due vincoli differenti.

 

Torniamo alla questione del comando USE SOFT SELECTION.

I vincoli applicati ai corpi deformabili specificano quali vertici del corpo devono seguire una animazione specificata, mentre il resto della superficie possiede una animazione completamente simulata. A volte però si nota il confine tra queste zona con animazione vincolata e quelle con animazione simulata; per risolvere questo esiste il parametro Use Soft Selection, che permette di smussare la transizione fra queste zone.

Ad esempio riprendiamo il cilindro con la gonnella: il cilindro si piega e i vertici in cima alla gonnella seguono la superficie. In quesot caso la simulazione non produce una superficie in qui si nota un confine netto fra le due superifi vincolata e simulata, ma vediamo ugualmente per questo caso come funziona il Soft Selection.

 

Applichiamo al cloth un modificatore MeshSelect PRIMA del modificaotre ReactorCloth.

Scendi al livello Vertex e seleziona i vertici simulati al 100%, cioè che non risentiranno dei vincoli stabiliti nella tendina Constraints.

Attiva il SoftSelection e stabilisci il gradiente.

Poi attiva l'opzione USE SOFT SELECTION fra i parametri del ReactorCloth.

Non occorre ridefinire la simulazione. I vertici rossi seguiranno la simulazione già definita al 100%, mentre quelli nel gradiente la seguiranno in percentuale minore. Quelli blu invece rimarranno nella loro posizione originale.
Con Use Soft Selection disattivo, anche se rimane la selezione di vertici al livello Mesh Select il cloth si comporta come se questa non esistesse.

La famosa smussatura fra le due zone di cui parlavamo prima ovviamente nonla otteniamo così. Occorrerà selezionare come rossi i vertici già vincolati e regolare il gradiente del Soft Selection.