Jump to content
bn-top

Animazione Facciale: Morph Vs Bones...


icer
 Share

Recommended Posts

mi sono guardato il file Bones-FacialBonesAnim.max ke riguarda l'animazione facciale tramite ossa. Devo dire molto efficiente e molto espressivo, xò come si fa ad usare quesa tecnica in modo agevole? Nel senso, con il morph tramite semplici slide io agisco sulla espressione del viso ma con le bones nn posso avere ciò edevo muovere con link ogni volta ke animo, cosa davvero impensabile in un corto di 15 minuti. Ovviamente avere ampia libertà è utile xkè se si vuole in un momento una particolare espressione la si può fare con facilità, ma c'è qualche metodo x avere "animazioni predefinite" delle ossa del viso?

:hello:

"La potenza è nulla senza controllo" del mouse.

Link to comment
Share on other sites

bn-top

Allora...

entrambi i sistemi hanno pro e contro:

i morph hanno il pro che sono facili da impostare e da gestire in contro xò non ti permettono di avere un gran controllo...

i bones l'esatto contrario cioè riggarli è abbastanza difficile ma poi hai controllo totale sulla faccia...

la soluzionè ideale sarebbe quella di usarli entrambi ma in max non ho mai visto un setup simile (in maya si fa attraverso cluster e script tipo rivet ect)

un setup con le bones online è questo:

LINK

fatto da tyson ibele :)

il quarto dvd della serie di paul neale tratto proprio di questi setup ;)

te lo consiglio se vuoi approfondire

buona domenica :)

Edited by micle
Link to comment
Share on other sites

ahhh ok :)

non è difficile:

allora ti modelli il sorriso partendo dalla mesh base

aggiungi alla mesh base un modificatore morpher

nel modificatore ci sono vari slot empy, clicca su uno poi su pick objcect from scene e clicca sul target che hai modellato

muovendo lo slider vicino al pulsante la mesh si deformera fino ad ottenere un sorriso :)

andare ogni volta nel modificatore morph puo essere scomodo quindi si usa aggiungere i morph ai custom attributes

Per fare cio aggiungi ad un controllo del rig i custom attributes e poi attraverso il wiring li connetti al modificatore morpher

x creare i ca usa il maxscrpit che fai prima

ca=attributes morphCtrls

(

	parameters morphP rollout:morphR

	(

		smile type:#float ui:(smileSp,smileSl)

	)


	rollout morphR "Morph Controls"

	(

		spinner smileSp "Sorriso" range:[0,100,0]

		slider smileSl "" range:[0,100,0]

	)

)

custAttributes.add $.modifiers[1] ca

con questo crei una semplice interfaccia x i controlli del morpher

:hello:

Edited by micle
Link to comment
Share on other sites

scusa, nn sono stato preciso :blush:

So fare il morpher (vedi nella firma "Obo") ma mi interessava tantissimo le bones.

Xò le bones nn permettono di preimopostare delle animazioni facciali, quindi se volessi fare un sorriso dovrei muovere le bones ogni volta (e di conseguenza nn saranno mai uguali), cosa alquanto laboriosa se facessi un corto da 15 minuti. :wallbash:

se si potesse preimpostare dei movimenti basi con le bones attraverso semplici slide (ad esempio), sarebbe invece molto comodo.

:hello:

Edited by icer

"La potenza è nulla senza controllo" del mouse.

Link to comment
Share on other sites

Creati un controller neutro, e tramite il modificatore "PEN Attribute Holder 2" (lo trovi free in rete, sul sito dell'autore Paul Neale) fai un wire bidirezionale con le tue bones.

Questo modificatore di permette di storare in dei preset i valori di tutti i tuoi CA, in modo che ti generi con le bones la posizione del sorriso, quindi salvi i dati nel preset e lo puoi richiamare quando vuoi.

Cerca in rete qualche esempio di questo script (probabilmente anche nel sito dell'autore, oppure mi ricordo che il cecofuli si era fatto un setup parecchio elaborato con bones e questo modificatore).

Altrimenti se hai una GUI per i tuoi controlli facciali ti puoi fare uno script che ti salvi la posizione dei controlli in dei preset appunto: il concetto é comunque simile a quello del modificatore a cui accennavo prima, forse un pó piú lineare :)

Edited by kage_maru
Link to comment
Share on other sites

scusa ho letto male :blush::blush::blush:

cmq segui quello che ha detto kage: cerea l'UI e poi connetti col wiring ;)

X l'UI ti posso dare questo sript che ho fatto x un vecchio rig :

ca=attributes HeadCTRL

(

	parameters topBlendShapesP rollout:topBlendShapesR

	(

	TopL type:#float ui: (TopLSp, TopLSl)

	TopLM type:#float ui: (TopLMSp, TopLMSl)

	TopM type:#float ui: (TopMSp, TopMSl)

	TopMR type:#float ui: (TopMRSp, TopMRSl)

	TopR type:#float ui: (TopRSp, TopRSl)

	)

	parameters botBlendShapesP rollout:botBlendShapesR

	(

	BotL type:#float ui: (BotLSp, BotLSl)

	BotLM type:#float ui: (BotLMSp, BotLMSl)

	BotM type:#float ui: (BotMSp, BotMSl)

	BotMR type:#float ui: (BotMRSp, BotMRSl)

	BotR type:#float ui: (BotRSp, BotRSl)


	)

	parameters eyesP rollout:eyesR

	(

	eyeRUp type:#float ui: (eyeRUpSp, eyeRUpSl)

	eyeRLo type:#float ui: (eyeRLoSp, eyeRLoSl)

	eyeLUp type:#float ui: (eyeLUpSp, eyeLUpSl)

	eyeLLo type:#float ui: (eyeLLoSp, eyeLLoSl)

	)

	parameters mouthP rollout:mouthR

	(

	mouthUpCntX type:#float ui: (mouthUpCntXSp, mouthUpCntXSl)

	mouthUpCntY type:#float ui: (mouthUpCntYSp, mouthUpCntYSl)

	mouthUpCntZ type:#float ui: (mouthUpCntZSp, mouthUpCntZSl)

	mouthUp_RX type:#float ui: (mouthUp_RXSp, mouthUp_RXSl)

	mouthUp_RY type:#float ui: (mouthUp_RYSp, mouthUp_RYSl)

	mouthUp_RZ type:#float ui: (mouthUp_RZSp, mouthUp_RZSl)

	mouthUp_LX type:#float ui: (mouthUp_LXSp, mouthUp_LXSl)

	mouthUp_LY type:#float ui: (mouthUp_LYSp, mouthUp_LYSl)

	mouthUp_LZ type:#float ui: (mouthUp_LZSp, mouthUp_LZSl)

	mouthUpMd_RX type:#float ui: (mouthUpMd_RXSp, mouthUpMd_RXSl)

	mouthUpMd_RY type:#float ui: (mouthUpMd_RYSp, mouthUpMd_RYSl)

	mouthUpMd_RZ type:#float ui: (mouthUpMd_RZSp, mouthUpMd_RZSl)

	mouthUpMd_LX type:#float ui: (mouthUpMd_LXSp, mouthUpMd_LXSl)

	mouthUpMd_LY type:#float ui: (mouthUpMd_LYSp, mouthUpMd_LYSl)

	mouthUpMd_LZ type:#float ui: (mouthUpMd_LZSp, mouthUpMd_LZSl)

	mouthLoCntX type:#float ui: (mouthLoCntXSp, mouthLoCntXSl)

	mouthLoCntY type:#float ui: (mouthLoCntYSp, mouthLoCntYSl)

	mouthLoCntZ type:#float ui: (mouthLoCntZSp, mouthLoCntZSl)

	mouthLo_RX type:#float ui: (mouthLo_RXSp, mouthLo_RXSl)

	mouthLo_RY type:#float ui: (mouthLo_RYSp, mouthLo_RYSl)

	mouthLo_RZ type:#float ui: (mouthLo_RZSp, mouthLo_RZSl)

	mouthLo_LX type:#float ui: (mouthLo_LXSp, mouthLo_LXSl)

	mouthLo_LY type:#float ui: (mouthLo_LYSp, mouthLo_LYSl)

	mouthLo_LZ type:#float ui: (mouthLo_LZSp, mouthLo_LZSl)

	mouthLoMd_RX type:#float ui: (mouthLoMd_RXSp, mouthLoMd_RXSl)

	mouthLoMd_RY type:#float ui: (mouthLoMd_RYSp, mouthLoMd_RYSl)

	mouthLoMd_RZ type:#float ui: (mouthLoMd_RZSp, mouthLoMd_RZSl)

	mouthLoMd_LX type:#float ui: (mouthLoMd_LXSp, mouthLoMd_LXSl)

	mouthLoMd_LY type:#float ui: (mouthLoMd_LYSp, mouthLoMd_LYSl)

	mouthLoMd_LZ type:#float ui: (mouthLoMd_LZSp, mouthLoMd_LZSl)

	)

	parameters otherP rollout:otherR

	(

	jawUpDw type:#float ui: (jawUpDwSp, jawUpDwSl)

	jawDxSx type:#float ui: (jawDxSxSp, jawDxSxSl)

	lipsUpDw type:#float ui: (lipsUpDwSp, lipsUpDwSl)

	lipsDxSx type:#float ui: (lipsDxSxSp, lipsDxSxSl)

	tongueUpDw type:#float ui: (tongueUpDwSp, tongueUpDwSl)

	tongueDxSx type:#float ui: (tongueDxSxSp, tongueDxSxSl)

	tonguestretch type:#float ui: (tongueStretchSp, tongueStretchSl)

	NoseX type:#float ui: (NoseXSp, NoseXSl)

	NoseY type:#float ui: (NoseYSp, NoseYSl)

	NoseZ type:#float ui: (NoseZSp, NoseZSl)

	)

	rollout topBlendShapesR "Top Blend Shapes"

	(

		label lab1 "L" pos: [10,7]

		spinner TopLSp "" range:[-100,100,0] width: 35 pos: [0,25]

		slider TopLSl "" range:[-100,100,0] orient:#vertical pos: [0,40]

		label lab2 "LM" pos: [40,7]

		spinner TopLMSp "" range:[-100,100,0] width: 35 pos: [33,25]

		slider TopLMSl "" range:[-100,100,0] orient:#vertical pos: [33,40]

		label lab3 "M" pos: [74,7]

		spinner TopMSp "" range:[-100,100,0] width: 35 pos: [66,25]

		slider TopMSl "" range:[-100,100,0] orient:#vertical pos: [66,40]

		label lab4 "MR" pos: [105,7]

		spinner TopMRSp "" range:[-100,100,0] width: 35 pos: [99,25]

		slider TopMRSl "" range:[-100,100,0] orient:#vertical pos: [99,40]

		label lab5 "R" pos: [140,7]

		spinner TopRSp "" range:[-100,100,0] width: 35 pos: [133,25]

		slider TopRSl "" range:[-100,100,0] orient:#vertical pos: [133,40]	 

	)

	rollout BotBlendShapesR "Bottom Blend Shapes"

	(

		label lab1 "L" pos: [10,7]

		spinner BotLSp "" range:[-100,100,0] width: 35 pos: [0,25]

		slider BotLSl "" range:[-100,100,0] orient:#vertical pos: [0,40]

		label lab2 "LM" pos: [40,7]

		spinner BotLMSp "" range:[-100,100,0] width: 35 pos: [33,25]

		slider BotLMSl "" range:[-100,100,0] orient:#vertical pos: [33,40]

		label lab3 "M" pos: [74,7]

		spinner BotMSp "" range:[-100,100,0] width: 35 pos: [66,25]

		slider BotMSl "" range:[-100,100,0] orient:#vertical pos: [66,40]

		label lab4 "MR" pos: [105,7]

		spinner BotMRSp "" range:[-100,100,0] width: 35 pos: [99,25]

		slider BotMRSl "" range:[-100,100,0] orient:#vertical pos: [99,40]

		label lab5 "R" pos: [140,7]

		spinner BotRSp "" range:[-100,100,0] width: 35 pos: [133,25]

		slider BotRSl "" range:[-100,100,0] orient:#vertical pos: [133,40]	 


	)

	rollout eyesR "Eyes"

	(

		local posneg=[-90,90,0]

		group "Eye Right"

		(

			spinner eyeRUpSp "Right Eye Up" range:posneg

			slider eyeRUpSl "" range:posneg

			spinner eyeRLoSp "Right Eye Lo" range:posneg

			slider eyeRLoSl "" range:posneg

		)

		group "Eye Left"

		(

			spinner eyeLUPSp "Left Eye Up" range:posneg

			slider eyeLUpSl "" range:posneg

			spinner eyeLLoSp "Left Eye Lo" range:posneg

			slider eyeLLoSl "" range:posneg

		)

	)

	rollout otherR "Other Parametres"

	(

	group "Jaw"

		(

			spinner JawUpDwSp "Up Down" range:[-100,100,0]

			slider jawUpDwSl "" range:[-100,100,0]

			spinner JawDxSxSp "Right Left" range:[-100,100,0]

			slider jawDxSxSl "" range:[-100,100,0] 

		)


	group "Upper Lip"

		(

			spinner lipsUpDwSp "Up Down" range:[-100,100,0]

			slider lipsUpDwSl "" range:[-100,100,0]

			spinner lipsDxSxSp "Right Left" range:[-100,100,0]

			slider lipsDxSxSl "" range:[-100,100,0] 

		)

	group "Tongue"

		(

			spinner tongueUpDwSp "Up Down" range:[-100,100,0]

			slider tongueUpDwSl "" range:[-100,100,0]

			spinner tongueDxSxSp "Right Left" range:[-100,100,0]

			slider tongueDxSxSl "" range:[-100,100,0]

			spinner tongueStretchSp "Stretch" range:[-100,100,0]

			slider tongueStretchSl "" range:[-100,100,0]  

		)

	group "Nose"

		(

			spinner NoseXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider NoseXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner NoseYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider NoseYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner NoseZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider NoseZSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

		)

	)

	rollout mouthR "Mouth Parameters"

	(

		group "Upper Centre"

			(

			spinner MouthUpCntXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider MouthUpCntXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner MouthUpCntYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider MouthUpCntYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner MouthUpCntZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider MouthUpCntZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)

		group "Upper Right"

			(

			spinner mouthUp_RXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthUp_RXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthUp_RYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthUp_RYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthUp_RZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthUp_RZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)

		group "Upper Left"

			(

			spinner mouthUp_LXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthUp_LXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthUp_LYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthUp_LYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthUp_LZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthUp_LZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)

		group "Middle Upper Right"

			(

			spinner mouthUpMd_RXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthUpMd_RXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthUpMd_RYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthUpMd_RYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthUpMd_RZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthUpMd_RZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)

		group "Middle Upper Left"

			(

			spinner mouthUpMd_LXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthUpMd_LXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthUpMd_LYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthUpMd_LYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthUpMd_LZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthUpMd_LZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)


		group "Lower Centre"

			(

			spinner mouthLoCntXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthLoCntXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthLoCntYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLoCntYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthLoCntZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLoCntZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)

		group "Lower Right"

			(

			spinner mouthLo_RXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthLo_RXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthLo_RYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLo_RYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthLo_RZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLo_RZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)

		group "Lower Left"

			(

			spinner mouthLo_LXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthLo_LXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthLo_LYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLo_LYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthLo_LZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLo_LZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)

		group "Middle Lower Right"

			(

			spinner mouthLoMd_RXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthLoMd_RXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthLoMd_RYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLoMd_RYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthLoMd_RZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLoMd_RZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)

		group "Middle Lower Left"

			(

			spinner mouthLoMd_LXSp "X" range:[-100,100,0] width: 53 offset: [-75,5]

			slider mouthLoMd_LXSl "" range:[-100,100,0] offset:[54,-35] width: 100

			spinner mouthLoMd_LYSp "Y" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLoMd_LYSl "" range:[-100,100,0] offset:[54,-35] width: 100	 

			spinner mouthLoMd_LZSp "Z" range:[-100,100,0]  width: 53 offset: [-75,5]

			slider mouthLoMd_LZSl "" range:[-100,100,0] offset:[54,-35] width: 100 

			)		

	)

)


CustAttributes.add $.modifiers[1] ca

E' un buon inizio ma poi devi adattare questa UI al tuo rig...

Viene fuori qualcosa del tipo

untitled1cx6.jpg

:hello:

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...