Vai al contenuto
Druigant

Dinamica Con Reactor

Recommended Posts

Salve sono troy mc clur, mi ricorderete per 1001 tutorial su 3Dsmax... :hello:

Eheh, scherzi a parte vorrei condividere con tutti voi un mio esperimento sull'utilizzo di reactor!

Lo scopo è semplice, riprodurre uno di quei tanti giochini scacciatempo da scrivania.

thumbnail%20giochino.jpg

Il tutto è basato sulla fisica degli urti elastici. La pallina che si solleva aquisisce energia potenziale, una volta lasciata, la trasforma in energia cinetica. Appena impatta con le altre palline di metallo trasferisce interamente (a parte la solita perdita d'attrito) la sua energia alla pallina con cui impatta fino alla più esterna che trasforma nuovamente l'energia cinetica in potenziale, portandosi cosi in alto...e via di nuovo!

Ora come riprodurre questo in 3dsmax? ma con l'aiuto di reactor e dei suoi potenti strumenti ovviamente.

Iniziamo innanzitutto a costruire la scena: abbiamo bisogno di due supporti laterali (a cui andranno legate le cordicelle), le cordicele appunto e delle 5 palline di metallo.

ecco una linea temporale per costruire uno dei due supporti laterali attraverso lo strumento "line" ( "Create"-->"Shapes"-->"line")

Una volta costruita la linea, create un piccolo cerchio (sarà lo spessore); usando il comando "compound"

("Create"-->"Compound object"-->"compound") create la geometria finale.

eccovi in breve i passagi:

creazione%20supporto.jpg

Usate il comando mirror per duplicare il supporto laterale, passiamo ora a creare il resto:

rifinitura%20gioco.jpg

Allora :

"C" è un semplice cilindro (usato come giuntura)

"G" è una geosfera (l'attacco del filo sul supporto laterale)

"L" una Line (il filo a cui è legata la sfera di metallo)

"T" un tubo (attraverso cui passa il filo per andare al supporto opposto)

Cambiamo il pivot point (Pannello "Hierarchy"--> "Affect Pivot Point"-->"Center to Object") del tubo e posizionamolo al suo baricentro.

Cambiamo anche il baricentro della sfera e posizionamolo+ in alto all'altezza del tubo.

La "Linea" è composta da 2 vertici (uno per ogni sferetta ai due lati del supporto) e di altri due vertici in basso (uno all'entrata e uno all'uscita del "tubo" sulla pallina di metallo) (rendetela renderizzabile o una geometria con il compound object

Ora entriamo nel sub-object "point" della linea e selezioniamo i due vertici in basso all'altezza del tubo (quelli che dovrebbero tenere la pallina) e scorriamo la lista dei modificatori (tenendo attivo il sub-object) e selezioniamo il modificatore "LinkedXForm". Qui utilizziamo "Pick Control Object" e selezioniamo la nostra sfera di metallo! (in questo modo quando la sfera si muoverà si porterà appresso anche il filo)

ecco la scena nella vista laterale

front%20view%20point%20to%20point.jpg

Ora cominciamo a usare reactor. (se non l'avete già visibile, uscite fuori la barra di reactor per avere rapidamente i vari sistemi).

Creiamo un "rigid Body colection" (qui andranno selezionati tutti i cilindri e le sfere di metallo, ovvero tutti gli oggeti che rientrano nel calcolo di reactor)

Ora creiamo un "point-point constraint" (questo creerà il vincolo tra il filo e la sfera)

Point%20to%20point.jpg

come vedete ho segnato le tappe da seguire:

1) attivate l'opzione "Parent" e selezionate sotto parent il cilindro di destra e sotto child la sfera

2) sotto "Constraint Type" attivate l'opzione Stiff spring (questo dirà a reactor che il filo ha una lunghezza predeterminata e non è quindi un elastico che può allungarsi)

3) settiamo la lunghezza del filo, sotto "Stiff lenght" selezioniamo "set", che andrà a misurare la lunghezza del filo e la renderà fissa.

4) ora settiamo bene come in figura i baricentri (in caso fossero mesi diversamente), e riclicchiamo sul pulsante set (sotto Stiff lenght), per aggiornare la lunghezza.

Ora ripetiamo gli stessi passaggi ma per il lato sinistro del filo. Fatto questo selezioniamo i 2cilindri, le 2 sferette, il filo, e la sfera di metallo (con il suo tubetto) i 2"point-point constraint" e cloniamoli 5volte in modo in modo che le sferette siano praticamente a contatto tra di loro.

Ora dovete sistemare bene i vari "point-point constraint" che sicuramente no saranno a posto e saranno linkati ai "parent" e "child" sbagliati, selezionateli uno ad uno e controllate. (io ho avuto fortuna e tutti sono a posto al primo clonaggio, ma ripetendolo a volte mi sbaglia i link uno si uno no, quindi controllate bene, sopratutto di aver clonato in una volta solo tutti gli oggetti)

Ora creiamo un "constraint solver"

constraint%20button.jpg

qui dovremo raccogliere tuti i point-point constraint che saranno attivi nel calcolo di reator, nel nostro caso tutti.

menu%20Rb%20collection.jpg

Nella prima opzione andremo a selezionare il nostro RB collection (quello che gestisce la massa delle sfere e dei giunti), poi passeremo all'aggiunta di tutti i nostri point-point constraint. Importante è passare il valore di "Deactivation Thresold" a 0.

Selezionate le 5 sfere e nel pannello di reactor premete su "open Property editor", e settate la massa delle sfere a 10, l'elasticità e l'attritoa 0.9. (tutti i restanti oggetti non li setteremo in modo che non vengano influenzati dalla gravità di reactor)

piccola nota:

un valore basso di attrito implica una maggiore perdita di energia e quindi meno rivoluzioni

un valore basso di elasticità implica un minor passaggio di energa

e il contrario per valori alti. Inoltre i valori vanno da 0 a 1 (per riprodurre la realtà) ma possono arrivare fino a 5 per animazioni esagerate!

Bisogna ora sollevare una delle due palline esterne per conferirgli un pò di energia potenziale. Sollevatene una all'altezza desiderata (maggiore sarà, maggiore l'energia e quindi la durata delle rivoluzioni) e lanciate un breve calcolo ell'animazione (non importa i valori ora) in modo che sposti la sfera sollevata alla distanza predefinita con il filo. (una volta eseguito questo passaggio eliminate i frame creati)

Ora passiamo nel pannello "Preview & Animation" (Utility--->Reactor) e a vostro piacere cambiate i valori dell'animazione, la lunghezza, i substep.

Io personalmente ho impostato a 2.0 il Time scale, in pratica ho messo un 2x alla velocità dell'animazione.

Lanciate ora il calcolo con "create animation".

Potete anche attivare "Update Viewports" per vedere in real time la creazione dell'animazione da parte di reactor, ma dovete avere le directx come driver attivi per 3dsmax, o avrete un essaggio di errore che vi costringerà a chiudere il programma in modo forzato.

Andare alla tendina Wolrd, e cambiare il valore di "Col. Tolerance" da 10cm a 1cm (se avete le misure impostate a cm)

questo valore setta l'involucro "lowpoly" usato per il calcolo delle dinamiche degli oggetti. Minore il valore e più questo involucro si avvicina all'oggetto madre, insomma da un guanto largo in lana si assa ad un guanto in pelle stretto stretto....!

non badate alla scena intorno che è solo per riempire un pochino e non è certamente curata!

ecco la mini video dimostrativa

eccovi il file max con l'animazione finale

spero sia stato tutto chiaro e che vi sia piaciuto!

post-275-1130445470.jpg


Modificato da philix

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Una piccola precisazione, quando spostate i pivot dei "Point-point constraint" quello relativo alla sfera io l'ho posizionato al centro del tubo sia per quello di sinistra che per quello di destra.

se al contrario voi posizionate il pivot di destra all'entrata del tubo di destra, e quello di sinistra all'entrata del tubo a sinistra (come in teoria sarebbe più corretto, sopratutto fisicamente) rischiate di avere delle oscillazioni laterali non proprio simpatiche.

:hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Grazie!!!!!!!!!!!!!!!!!!!!!!!!!!!! gran bel tutorialino!!! era da un po' ke lo stavo cercando proprio appliccato a queste palline!!!! grazie grazie ancora!!!!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ciao bel tutorial ma ho un problema...dopo ke la prima sfera ha fatto muovere l'ultima sfera quando questa torna non fa muovere + niente. come mai?

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ciao Linkin,

i motivi potrebbero essere diversi,

dal semplice "Deactivation threshold" che non è a 0.

forse non hai dato abbastanza frame a reactor per il calcolo. (per questo prova a cambiare la Time scale aumentandone il valore...cosi da vedere se fa o meno + rivoluzioni)

*cosidera che la timeline di max e di reator non sono la stessa cosa.

potrebbe anche essere il valore di frizione che non hai settato!

comunque in caso prova a mandarmi la scena che hai fatto tu cosi che possa vedere i vari parametri direttamente e poi ti faccio sapere.

derotar@yahoo.it

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

il problema di Linkin è dovuto ad una mia piccola dimenticanza (dirò a D@ve di ediater il post se possibile per aggiungere questa piccola parte.

In pratica, reactor ha una tolleranza per ogni oggetto, una specie di involucro lowpoly per il callcolo della fisica.

Se questo valore è piccolo l'involucro sarà prossimo all'oggetto, quindi maggior accuratezza.

Il valore predefinito se le unità sono in cm, è10, bisogna settarlo a 1cm per il nostro caso, dato che les palline sono molto vicine. (lo stesso vale se posizioniamo dei mattoni in pila per un crash test....

Si trova in una delle tendine, chiamata WORLD di reactor, sotto Col. Tolerance:10, portate il valore a 1.0 (se avete in cm, se no fate 1/10 del valore e testate.)

:hello:


Modificato da Druigant

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

beh che devi farci con reactor?

una volta capito come si gestiscono i constraint...il resto è solo una repitizione o un maggior quantità di questi per creare un 'efffeto più complicato!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ciao ragazzi!

Ho seguito il tutorial (che è veramente fico!! :Clap03: ) ma non capisco perchè il mio modello non funzioni correttamente..eppure ho inserito tutti i parametri corretti, ma niente..o non mi si porta dietro il filo,oppure non si porta il tubetto..e poi l'animazione è una chiavica!! ma com'è?? :blink2:

Vi allego il file.. :wallbash: vi prego aiutatemi perchè sto impazzendo!!! :wallbash:

newton.rar

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

il problema del filo che non va dietro è che non hai linkato il tubicino alla sfera! una volta fatto questo se provi a muovere una pallin a tubo+fili gli andranno appresso!

poi guardando il tuo file ho notato le seguenti cose:

---attento le sfere sono troppo vicine le une alle altre, spostale un poco (insieme a filo e tubicino ovviamente) basta un piccolo spazio. l'importante è che no si tocchino neanche minimamente. Reactor ha bisogno di avere un pochino di spazio tra un oggeto e l'altro seno li considera compentetranti

---solo le prime 2 sfere hanno massa (e non uguali (tipo 10 e 3....porta tutte le sfere a 100..e non a 10 ocme nel mio tut per un semplice questione di scala diversa del file) e metti tutte a " bounding sphere " sotto Simulation geometry (sempre nel pannello delle proprietà di reactor

---la gravità è 10volte la normale nel tuo caso va scalata di 10 e quindi arrivare a -98.99 (la scala del World scale aprendo il tuo file è 1m, controla anche da te)

---metti gli end frame per l'intera durata dell'animazione e il time scale a 2.0

dai sempre un'occhiata agli errori che ti notifica reator sono spesso sintomi corretti di errori o sviste.


Modificato da Druigant

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Guarda sono piuttosto preso dal lavoro ufficiale + extra che non trovo tempo per nulla purtroppo, ho comunque provato ad aprire la scena al volo per dargli un occhiata dall'errore che noto è che il filo compenetra le sferette (mi dispiace ma dovrai rifare i vari link per spostare la sferetta).

dopo ciò riprova e in caso riposta che cerco di ridargli un occhiata con la correzione effettuata.

ciao

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×