Vai al contenuto
alessione

Simulare Vibrazione Cellulare

Recommended Posts

Ciao Ragazzi sto preparando una piccola animazione in maya di un cellulare che suona e vibra poggiato su un tavolo,

volevo applicare alla mesh uno scriptino che mi permettesse di simulare la vibrazione del cellulare: quindi sia la vibrazione che il movimento random del cell sul piano.

dato che sono una schiappa in matematica volevo chiedere a qualcuno se mi può dare una mano o magari conosce qualche tutorial che potrebbe fare al caso mio.

grazie

ciao Ale

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Diaciamo che ci sono riuscito :P

due espressioni molto semplici giocando con i paramtri si ottengono effetti simpatici:

pCube1.translateY = abs(sin(time));

pCube1.translateX = noise(time/2);

se qualcuno ha un consiglio migliore è ben accetto

ciao!!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

l'ho modificata un pò simulando gli intervalli tra uno squillo ed un altro:

$stop = sin(time);

if ($stop > 0){

pCube1.translateY = abs(sin(time*20));

pCube1.translateX = noise(time/2);

pCube1.translateZ = noise(time/2);

}else{

pCube1.translateY = 0 ;

pCube1.translateX = pCube1.translateX;

pCube1.translateZ = pCube1.translateZ;

}

ora il problema è che ho uno scatto di posizione da quando si arresta a quando riprende a vibrare, dato che comunque il time scorre ed ho valori diversi tra l'arresto e la ripartenza.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ho aggiunto un minimo di rotazione intorno a Y :

$stop = sin(time);

if ($stop > 0){

pCube1.translateY = abs(sin(time*20));

pCube1.translateX = noise(time/2);

pCube1.translateZ = noise(time/2);

pCube1.rotateY = pCube1.rotateY+0.1;

}else{

pCube1.translateY = 0 ;

pCube1.translateX = pCube1.translateX;

pCube1.translateZ = pCube1.translateZ;

}

complessivamente il movimento è discreto, parentando la mesh del cellulare al cubo che in scala è molto più piccolo, non si nota molto il problema dello scatto di posizione.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

mumble.... se ti posso dare qualche suggerimento...

  • aggiungi un attributo per controllare l'ampiezza della vibrazione e usalo come fattore di scala.
  • anima rotazione e l'attributo appena aggiunto con delle curve, in questa maniera avrai molto più controllo.

Così è come lo farei io

$stop = sin(time);


if ($stop > 0){

//la vibrazione di un cellulare è guidata dipicamente da un motorino elettrico che gira a 3000 giri/min

// che corrispondono a 50 vibrazioni al secondo.. ma per evitare discontinuità quando si ferma deve essere un multiplo di pi greco

//16*pi è circa 50

  pCube1.translateY = pCube1.vibrationGain*abs(sin(time*16*3.141592));

  pCube1.translateX = pCube1.noiseGain*noise(20);

  pCube1.translateZ = pCube1.noiseGain*noise(22);

// animare questo tramite 

//  pCube1.rotateY = pCube1.rotateY+0.1;

}else{

  pCube1.translateY = 0;

// non importa fare pCube1.translateZ = pCube1.translateZ;

}

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Grazie per il suggerimento :w00t:

ma non ho ben capito come setto vibrationGain e noiseGain

tieni presente che è il primo Mel script che scrivo quindi ci capisco poco ^_^

cosi come è adesso mi da come errore:

// Error: Attribute not found or variable missing '$': pCube1.vibrationGain //

// Error: Attribute not found or variable missing '$': pCube1.noiseGain //

// Error: Attribute not found or variable missing '$': pCube1.noiseGain //

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)
Grazie per il suggerimento :w00t:

ma non ho ben capito come setto vibrationGain e noiseGain

tieni presente che è il primo Mel script che scrivo quindi ci capisco poco ^_^

cosi come è adesso mi da come errore:

// Error: Attribute not found or variable missing '$': pCube1.vibrationGain //

// Error: Attribute not found or variable missing '$': pCube1.noiseGain //

// Error: Attribute not found or variable missing '$': pCube1.noiseGain //

Come ti ha suggerito all'inizio, devi crearti due customAttribute, per l'appunto chiamati vibrationGain e noiseGain (questo non l'ha scritto esplicitamente ma si capisce dai! ) che animerai con delle curve per avere piú controllo ;)


Modificato da kage_maru

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.

×