Vai al contenuto
marla

Un Telecomando

Recommended Posts

Ciao a tutti!

Sto cercando di creare un telecomando da utilizzare durante la mia animazione, spulciando nella rete ho trovato delle rare informazioni sulle GUI ma il termine "GUI" sia nel forum che su google mi porta a un sacco di termini che non centrano nulla con le GUI che intendo io, dunque ho provato a inventarmi delle barre con cursori che guidano, tramite driven key, altri attributi;

dunque ho creato una barra orizzontale (io ho fatto un parallelepipedo molto largo) e un cursore (un cubo) posizionato all'inizio della barra:

_ho eliminato i canali che non mi intaressano del mio pcube ossia tutti tranne il "translate X"

_tramite driven key ho fatto in modo che il cursore, a seconda di dove si trovi lungo la barra (da 0 a 1 per capirci), guidi una serie di eventi collegati anche a una dinamiche come gravità ecc...

il mio obiettivo è, una volta premuto play, di comandare questi attributi tramite questo cursore ma, ovviamente, mi sono contrato su una serie di problematiche:

1: spostando il cursore durante l'animazione mi capita spesso che mi scappi via tipo in valori negativi o superiori all' uno; imagino che ci sia bisogno di un'espressione che mi permetta di limitare il movimento del mio cursore solo in valori compresi tra 0 e 1, ma non so nè come nè dove applicarla

2: quando premo play il move tool diventa invisibile dunque l'oggetto cursore, a meno che io lo abbia selezionato in precedenza, non lo posso muovere

oltre a risolvere questi problemucci mi piacerebbe sapere se mi sto muovendo nella direzione giusta e avere, se possibile, qualche informazioni in più sulle GUI

grazie mille

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ehm.. non ho capito.. ma questa slide fatta in casa la devi renderizzare?

1 - Per limitare lo spostamento, vai nel nodo trasform del tuo cubo e nella sezione "limit information" trovi tutte le opzioni per limitare gli spostamenti del tuo oggetto.

2 - Perché questo non è il modo giusto, se proprio vuoi fare così puoi andare a nCloth e far partire una animazione interattiva, ma ci sono metodi migliori. Quello che vuoi fare te si usa di solito per il animare il volto dei personaggi, ma non è una cosa che si fa interattivamente durante lo scorrere dell'animazione.

Da quello che ho capito vuoi fare uno slider che comanda un parametro durante un animazione, giusto?

Allora, ti prendo pari pari l'esempio della guida e te lo spiego:

per fare uno slider che appare nella viewPort c'è il comando hudSlider.

A questo oggetto maya gli puoi dire dove deve stare, che tipo di dati prendere, il limite inferiore ed il limite superiore più altri parametri. Inoltre puoi specificare di chiamare una funzione durante un determinato evento. Gli eventi supportati sono "quando premi con il mouse sopra", "quando trascini lo slider", "quando rilasci il mouse".

Devi definirti una funzione che legge il valore dello slider e cambia il parametro che ti interessa e associarla all'evento "quando trascini lo slider", questo evento si chiama dragCommand. La funzione che chiami nell'evento deve essere globale!!

Definita la funzione crei lo slider passandogli i parametri che vuoi.

Copia questo (leggi anche i commenti che c'ho messo) nello script editor e poi CRTL+invio, seleziona un oggetto e muovi lo slider che si è creato.

//Questa è la funzione, prende come parametro una stringa che è il nome dello slider (per andare a leggere i valori)

global proc translateXSlider( string $HUD )

{

//Questo disabilita l'undo, gli slider generano un sacco di eventi e non si vuole che la coda di undo si riempia

	undoInfo -swf false;

//Prende la lista degli oggetti selezionati

	string $selList[] = `ls -sl`;

//In questo ciclo scorre la lista degli oggetti selezionati

	int $numItems = size($selList);

	for( $i = 0; $i < $numItems; $i++ )

	{

		string $object = $selList[$i];

//Le l'oggetto è di tipo trasform (cioè si può muovere, ruotare e scalare)

		if( `objectType -isType "transform" $object` )

		{

//Allora crea una stringa per l'attributo (traslazione sull'asse x)

			string $translateX = $object + ".tx";

//Legge il valore dello slider

			float $value = `hudSlider -q -v $HUD`;

//imposta l'attributo al valore letto

			setAttr $translateX $value;

		}

	}

//Riattiva l'undo

	undoInfo -swf true;

}


//Questo crea lo slider, per i parametri guardati la guida

//In particolare il type int impedisce allo slide di prendere numeri con la virgola

// il minValue e maxValue permettono di limitare i valori.

//sliderLength è la lunghezza dello slider

hudSlider -section 2

		  -block 5

		  -visible 1

		  -label "TranslateX:"

		  -value 0

		  -type "int"

		  -minValue -10

		  -maxValue 10

		  -labelWidth 80

		  -valueWidth 50

		  -sliderLength 100

		  -sliderIncrement 1

		  -pressCommand "translateXSlider( \"HUDTranslateXSlider\" )"

		  -dragCommand "translateXSlider( \"HUDTranslateXSlider\" )"

		  -releaseCommand "translateXSlider( \"HUDTranslateXSlider\" )"

		  HUDTranslateXSlider;
Brevissimamente le nozioni molto base: tutti gli oggetti da mel si prendono tramite il loro nome (che deve essere univoco), in questo caso il nome dello slider è l'ultimo parametro "HUDTranslateXSlider". I nodi funzionano in tre modalità; la modalità create che viene attivata quando crei un oggetto (finestra, pulsante, sfera, slider, shader); la modalità query che si indica passando il parametro -q che serve per interrogare il tuo oggetto su i parametri attuali. Per esempio
float $value = `hudSlider -q -v $HUD`;
chiede allo hudSlider di nome $HUD quale è il suo valore "-v", cioè il valore attuale dello slider. Se volevi sapere se lo slider è visibile o meno potevi scrivere
int $isVisible = `hudSlider -q -vis $HUD`;
Puoi fare la query di un solo parametro alla volta poi c'è la modalità edit che si attiva con il parametro -e, questa serve per modificare il valore dell'oggetto. Se per esempio adesso vuoi nascondere lo slider perché ti da noia
hudSlider -e -vis false HUDTranslateXSlider;
e lo slider scompare. Questo fa apparire lo slider se era nascosto, e lo nasconde se era visibile.
int $isVisible = `hudSlider -q -vis HUDTranslateXSlider`;

if($isVisible == true)

hudSlider -e -vis false HUDTranslateXSlider;

else

hudSlider -e -vis true HUDTranslateXSlider;

Copia nello script editor, seleziona e trascina con il tasto centrale in una shelf, per creare un nuovo tasto nella shelf.

Per creare finestre bottoni e altre cose ti rimando alla guida e agli esempi:

La guida che parla di questo sta in

Using Maya->General->MEL and Expression->Creating interface

e in fondo in appendice c'è l'elenco dei comandi MEL, nella sezione Windows trovi tutti i comandi relativi alla creazione di bottoni, interfacce, ecc..

Ciao!!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

grazie ilmale :hello:

scusami se nn ti ho risposto prima ma non spesso non mi arrivano le notifiche...

1_preciso.. ;)

2_per quello che mi serve ho trovato una soluzione: "interactive playback" che mi permette di muovere ruotare ecc.. e cambiare selezione senza problemi durante lo scorrere del tempo...

in questo modo ho creato uno slider poligonale che, parentato con la camera, funziona perfettamente come come una levetta di un telecomando;

grazie tante per le nozioni mel, sono utilissime, ne farò tesoro; credo che a breve comincerò a studiarle

per quanto riguarda le interfaccie GUI ho trovato questo

sto cercando di capire analizzando le varie connessioni ma faccio molta fatica... puoi darmi una mano?

grazie ancora

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Quello che vuoi fare te si usa di solito per il animare il volto dei personaggi,

/me ilmale fischietta...

:D

In quella testa ci sono applicate tante blend shape.

(Se non sai cos'è una blend shape leggi qui)

Una blend shape è un deformatore che agisce sui vertici facendo un morph tra due forme con lo stesso numero di vertici.

Si usa prendendo la forma base e duplicandola. A questo punto si modificano le posizioni dei vertici della shape copiata (target). Il blend shape ti permette di creare uno slider che passa dalla forma base a quella target.

Per esempio ti puoi fare una blend shape con un occhio chiuso, e lo slider che ti passa dalla shape target a quella base ti apre e chiude un occhio. ;)

In questo caso (come si fa di solito) sono state fatte tante blend shape per ogni movimento della faccia (ne andrebbe fatta una per ogni muscolo per fare le cose fatte bene).

Se applichi più di una blend shape ad una mesh le deformazioni si sommano, è ottimo per fare le deformazioni facciali. Sulla guida è spiegato benissimo.

(fine blend shape)

Il movimento dei controllori (faccina a sinistra) ti permette di modificare il valore degli slider, in questa maniera hai un interfaccia più intuitiva.

In questo caso inoltre vengono spostati anche dei cluster per spostare la forma del viso stilizzato che rappresenta l'interfaccia (vedi quello che sposta il mento).

La lingua invece è deformata tramite un cluster controllato con il quadrato dentro la bocca.

La mascella è controllata da una bones, e la bones è spostata tramite quell'ellisse sotto il rettangolo che sposta la bocca.

Lo sguardo è controllato tramite il modificatore aim contrain, applicato a quegli occhi stilizzati (rossi e blu). La E sposta entrambi gli occhi, sono semplicemente parent. Inoltre la E controlla anche un blend shape, infatti quando lo fai guardare in alto l'omino alza le sopracciglia.. ganzo. :)

Se vuoi vedere tutti gli slider seleziona la testa e li trovi nel nodo-> mouthEyes_Blend

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Ospite
Rispondi

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×
×
  • Crea nuovo...