23
animação smil Helder da Rocha ([email protected])

animação smil - argo navis 09_Anim.pdf · Animação básica • A forma mais simples de animação consiste em variar o valor de um atributo de um elemento, por determinada duração

  • Upload
    vokien

  • View
    232

  • Download
    0

Embed Size (px)

Citation preview

animaçãosmil

HelderdaRocha([email protected])

argo

navi

s.co

m.b

r AnimaçãoemSVGcomSMIL

•  Maissimplesquescrip.ng,porémmenossuportenosbrowsers•  Chrome,Opera,FF4emdiante),IE9.0(suporteparcial)

•  Elementoseatributosparaanimaçãodegráficosegrupos•  BaseadosnaespecificaçãoSMIL–SynchronizedMul:media

Integra:onLanguage(h7p://www.w3.org/TR/smil‐anima?on/)

•  EspecificaçãoSVGusapartedoSMILeacrescentaextensões:h7p://www.w3.org/TR/SVG/animate.html

•  Suportascrip.ng,eventos,es.loeoperaçõescomSVGDOM

•  Elementos•  SMIL:<animate>,<set>,<animateColor>,<animateMo:on>

•  Extensões:<animateMo:on>com<mpath>,<animateTransform>

•  Oalvodaanimaçãopodeserindicadodeduasformas•  viaxlink:href="#id"•  sendooelementopaideumbloco<animate>,<set>,etc.

2

argo

navi

s.co

m.b

r Animaçãobásica

•  Aformamaissimplesdeanimaçãoconsisteemvariarovalordeumatributodeumelemento,pordeterminadaduração•  PodeserumatributodoCSSoudoXML

•  Osvaloresemcadainstantesãocalculadosporinterpolação•  Ainformaçãomínimapodeserumvalorfinal,pardevalores,etc.•  Valoresintermediáriossãocalculadosporinterpolação•  Pode‐sepassarmaisvaloresintermediários,paramaiorcontrole

•  Exemplo:Aoclicarnoretângulovermelho,eleirámover‐separaadireitaatéficarsoboretânguloazul,em3segundos

<rectx="50"y="50"width="100"height="50"fill="red"><animate attributeName="x"to="200"dur="3s" begin="click"fill="freeze"/></rect><rectx="200"y="50"width="100"height="50"fill="blue"opacity="0.5"/>

3

argo

navi

s.co

m.b

r <animate>

•  Atributosessenciais•  aLributeName:nomedoatributoqueteráseuvaloralterado

(deveconterumvalorinterpolável*)•  from:valorinicial(senãoes.verpresente,seráconsideradoo

valoratualdoatributo)•  to:valorqueseráa.ngidonofimdaanimação•  by:alterna.vaato–byésomadoafromparaobtervalorfinal•  dur:tempoqueiráduraraanimação(ovalorpodeserexpresso

emváriosformatosdetempo)•  begin:ocorrênciasquecausarãooiníciodaanimação–

.picamenteumeventoouinstante(senãohouverbegin,aanimaçãocomeçaquandooelementoforcarregado)

•  fill:oqueacontecequandoaanimaçãotermina.Podeserfreeze(oúl.moestadoépreservado)ouremove(voltaaoestadoantesdaanimaçãoiniciar)

•  Osvaloresdosatributospodemserdiferenteseteremoutrossignificados,emdiferentescontextos

4*Oqueéounão'interpolável'dependedeoutrosatributos.Ex:númerosgeralmentesão;stringsàsvezes.

argo

navi

s.co

m.b

r Múl:plasanimações

•  Pode‐setermúl.ploselementos<animate>,cadaumlidandocomumaanimaçãoespecífica<rectx="50"y="50"width="100"height="50"fill="red">

<animateattributeName="x"to="200"dur="3s"begin="click"fill="freeze"/><animateattributeName="fill"to="yellow"dur="3s"begin="click"fill="freeze"/>

</rect>

5

0s

1s

2s

3s

argo

navi

s.co

m.b

r <set>

•  Aceitaosmesmosatributosque<animate>,massimplesmentemudaoatributo(semanimação)•  Oatributodurnestecasorepresentaotempoemqueoatributo

permanecealterado

•  Nofinaldotempo,elevoltaaovaloranterior(amenosquesedefinafill="freeze")

6

0s(depoisdoclick)

<rectx="50"y="50"width="100"height="50"fill="red"><setattributeName="x"to="200"begin="click"fill="freeze"/><setattributeName="fill"to="yellow"dur="3s"begin="click"fill="remove"/></rect><rectx="200"y="50"width="100"height="50"fill="blue"opacity="0.5"><setattributeName="x"to="50"dur="3s"begin="click"fill="remove"/></rect>

3s

argo

navi

s.co

m.b

r Atributosdetempo

•  Atributosdetempo(max,min,end,dur,repeatDur)aceitamtempoexpressonasseguintessintaxes•  02:30:03 =2horas,30minutose3segundos

•  50:00:10.25 =50horas,10segundose250ms

•  02:33 =2minutosand33seconds

•  00:10.5 =10.5segundos=10se500ms

•  3.2h =3.2horas=3horase12minutos

•  45min =45minutos

•  30s =30segundos

•  5ms =5milissegundos

•  12.467 =12segundose467milissegundos

•  Ex:<animatedur="10s"...>

7

argo

navi

s.co

m.b

r Atributosdetemporização

•  begin=""•  Listadevaloresqueespecificaquandoaanimaçãoinicia(podeconter

umtempo,evento,referênciaaoutraanimação,oucombinaçõesdetudoisto)

•  VejasintaxedetalhadanaspecSVGseção19.2.6•  Ex:begin="click+3s"

•  end=""•  Aceitavaloressimilaresabegin

•  restart="always|whenNotAc.ve|never"•  Seaanimaçãodevereiniciar,ecomo

•  repeatCount="número|indefinite"•  Númerodevezesqueaanimaçãodeverepe.r•  Seindefinite,animaçãorepeteatéodocumentoterminar

•  repeatDur="tempo|indefinite"•  Duraçãototalparaasrepe.ções•  Seindefinite,animaçãorepeteatéodocumentoterminar

8

argo

navi

s.co

m.b

r Animaçõesadi:vasecumula:vas

•  Atributoaddi:ve="sum|replace"•  Seforsum,valordoatributoésomadoavaloranterior,pré‐existente,ouvalordeanimaçõesdemenorprioridade(definidasantes)

•  Seforreplace(default)valorespréviossãoignorados•  Atributoaccumulate="none|sum"•  Consideradoparaanimaçõesqueserepetem

•  Seforsum,cadarepe.çãonovapartedovalorfinaldoatributonaanimaçãoanterior

•  Sefornone(default)cadarepe.çãoéindependente

9

argo

navi

s.co

m.b

r values

•  Valoresdoatributoaseremusadosnocursodaanimação•  Segmentaçãopermitemaiscontrolequefrom‐byoufrom‐to

•  Valoresdevemserseparadosporponto‐e‐vírgula

•  ComooobjetosemovenotempodependedoatributocalcMode

•  Exemplo:opeixelevaomesmotempoparaatravessarcadatrecho

10

<svgxmlns="http://www.w3.org/2000/svg"><imageid="abissal"xlink:href="TheFish.png"height="100"width="250"x="50"y="50"/><gstroke="blue"stroke‐width="2"><linex1="200"x2="200"y1="175"y2="225"/>...</g>...<animateattributeName="x"values="50;150;200;500"dur="4s"begin="click"fill="freeze"xlink:href="#abissal"/></svg>

argo

navi

s.co

m.b

r AtributocalcMode

•  Modocomoécalculadaaanimação•  calcMode="linear|discrete|paced|spline"

•  linear:interpolaçãolinearsimplescalculavaloresintermediáriosentreospontos

•  discrete:duranteotempodaanimação,saltadeumvalorparaooutro(permaneceumtempoemcadavalor)

•  paced:médiadosvaloreséusadaparaobterumavelocidadeconstanteentreopontoinicialefinal

•  spline:calculaumafunçãodetemponão‐linear,comdadosfornecidosseparadamente(atributokeySplines)

•  Paravaloresnuméricos,defaultélinear•  Paravaloresnãointerpoláveis,comostrings,default(eúnicovalorpermi.do)édiscrete

11

argo

navi

s.co

m.b

r Modosdeinterpolaçãolineares

12Fonte:W3CSMILspec

<animatedur="30s"values="0;1;2;4;8;15"calcMode="discrete"/>

<animatedur="30s"values="0;1;2;4;8;15"calcMode="linear"/>

<animatedur="30s"values="0;1;2;4;8;15"calcMode="paced"/>

argo

navi

s.co

m.b

r Intervalosirregulares:keyTimes

•  Comvaluesotempo(dur)édivididoempartesiguaisparacadasegmento•  Ex:havendo4valores,edur="4s",cadasegmentodura1s

•  ComoatributokeyTimes,épossívelinformarquantotempopermaneceremcadasegmento•  Valoresentre0e1,representandouminstante:valor

acumula.voeproporcionalàduraçãodaanimação

•  Cadavalorsucessivodevesermaiorouigualaovaloranterior

•  Oprimeirovalordevesersempre0

•  Paraanimaçãolinearouspline,oúl:movalordeveser1

•  Esteatributoestárelacionadocomoatributovalues•  CadavaloremkeyTimesestárelacionadoaumvaloremvalues

•  ÉprecisotermesmonúmerodevaloresemkeyTimesevalues

13

argo

navi

s.co

m.b

r ExemplocomvaluesekeyTimes

•  Há3intervalos:0.0–0.1,0.1a0.9,0.9a1.0•  Avelocidadenoprimeiroeúl.motrechoéamesma(opeixepassa

10%dotempoemcadaum)

•  Opeixeleva80%dotempoparapercorrerotrechointermediário

14

<svgxmlns="http://www.w3.org/2000/svg"width="100%"height="100%"><imageid="abissal"xlink:href="TheFish.png"height="100"width="250"x="50"y="50"/><gstroke="blue"stroke‐width="2">...</g><animateattributeName="x"values="50;200;350;500"dur="4s"begin="click"keyTimes="0.0;0.1;0.9;1.0"fill="freeze"xlink:href="#abissal"/></svg>

0s 0.4s 3.6s

argo

navi

s.co

m.b

r Movimentonão‐linear:keySplines

•  Possibilitavariaçãonão‐lineardomovimento

•  OatributokeySplinesdefineumconjuntodepontosdecontroleBéziercúbicosdefinemumafunçãoquedeterminacomovariaotempodeumsegmento•  CadapontodecontroleBézierconsistedequatrovaloresx1,y1

x2,y2(doispontosdecontroleporsegmento)

•  Valoresnafaixade0a1•  calcModedeveserspline

•  Ospontossãoseparadosporponto‐e‐vírgula•  RelacionamentoentreosatributoskeySplines,keyTimese

values:•  ParacadanvaloresdekeyTimesevalues,devehavern‐1

pontosdecontroleBézier

15

argo

navi

s.co

m.b

r ExemploscomkeySplines(W3C)

16Fonte:W3C(specSVG,19.2.7)

<animatedur="4s"values="10;20"keyTimes="0;1"calcMode="spline"keySplines="0,01,1">

<animatedur="4s"values="10;20"keyTimes="0;1"calcMode="spline"keySplines="0.5,00.5,1">

<animatedur="4s"values="10;20"keyTimes="0;1"calcMode="spline"keySplines="0,0.750.25,1">

<animatedur="4s"values="10;20"keyTimes="0;1"calcMode="spline"keySplines="1,00.25,0.25">

0s1s2s3s4s01

20

15

10

SãográficosdevariaçãodeTEMPO(nãodeespaço)!(1)

(2)

(3)

(4)

argo

navi

s.co

m.b

r ExemplocomkeySplines

•  Noprimeirotrecho,omovimentoélinear(gráfico1–slideanterior)•  Nosegundotrecho,opeixecomeçadevagar,aceleranomeioe

depoisdesacelera(gráfico2)•  Noterceirotrecho,opeixedisparanoinícioedepoisvai

gradualmentedesacelerandoatéparar(gráfico3)

17

<animateattributeName="x"values="50;200;350;500" dur="4s" keyTimes="0;0.333;0.667;1" begin="click" keySplines="0.0,0.01.0,1.0; 0.5,0.00.5,1.0; 0.0,0.750.25,1.0;" calcMode="spline" fill="freeze"

xlink:href="#abissal"/>

argo

navi

s.co

m.b

r <animateMo:on>

•  Permitefazerqueumobjetosemovaporumcaminho(path).

•  Ocaminhopodeserreferenciadodetrêsformas•  Atributoxlink:href="#path"(referênciaparaum<path>)

•  Elementofilho<mpathxlink:href="#path"/>

•  Atributopath:mesmasintaxedoatributoddoelemento<path>

•  AtributokeyPoints•  CadavalorkeyTimespodeserassociadoaumpontodocaminho

•  Valoresentre0e1(proporçãodadistânciapercorrida)•  Atributorotate="número|auto|auto‐reverse"

•  Serotateforauto,objetoficarásemprealinhadocomovetortangencialdomovimento;auto‐reverse=auto+180graus.

•  Seforumnúmero,éoângulofixoderotaçãodoobjetosobreoeixox.

•  Paravariaroânguloduranteaexecuçãopode‐seusarJavaScript.

18

argo

navi

s.co

m.b

r Sintaxedeatributoscomuns

•  from,by,to,values•  Em<animateMo:on>essesatributosrecebemumpardevalores,representandocoordenadasx,y

•  Ex:values="20,50;50;100;100;100"•  keyPoints,keyTimes,keySplines

•  SekeyPointsforusado,valueséignorado.•  Sepathou<mpath>forusado,valueséignorado.

•  Sevaluesforusado,from,byetosãoignorados•  OvalordefaultdecalcModeépaced,logokeyTimesserá

ignoradopordefault:parausar,mudeovalorparalinearoudiscrete)

•  keySplinesésuportadonormalmente

19

argo

navi

s.co

m.b

r Exemplode<animateMo:on>

•  Opeixegirandoemórbitaelíp.ca•  Eleaceleraquandose

aproximadoSol

20

<pathid="orbita"stroke‐width="1"...d="M20,175A244,22001,0493,175A244,22000,020,175"/>

<imageid="abissal"x="0"y="‐100"xlink:href="TheFish.png"height="80"width="200"><animateMotiondur="10s"

repeatCount="indefinite" rotate="auto" calcMode="spline"

keyTimes="0;1" keyPoints="0;1"

keySplines="0.75,0.25 0.25,0.75">

<mpathxlink:href="#orbita"/></animateMotion></image>

argo

navi

s.co

m.b

r <animateColor>

•  <animateColor>permitevariaracordepreenchimentooudecontornoaolongodotempo•  Osatributosfrom,byetoouvaluesrecebemvaloresdecor(ex:#fff,red,rgb(100%,0,0),etc.)

•  AinterpolaçãoéfeitapercorrendovaloresentrecoresdeacordocomoespaçosRGB(padrão)

•  Éomesmoalgoritmousadoparacomputargradientes

21

GamutsRGB

<animateColorvalues="red,pink,yellow,blue".../><animateColorfrom="rgb(0,0,0)"to="rgb(255,255,255)".../>

argo

navi

s.co

m.b

r <animateTransform>

•  Permitequeaanimaçãovarieodeslocamento,rotação,escalaoucisalhamentodeumobjeto

•  Atributotype="translate|scale|rotate|skewX|skewY"•  Determinao.podetransformação

•  Atributosfrom,byeto•  Recebemvalorcompa}velcomo.podetransformação

•  Atributovalues•  Recebelistadevaloresseparadosporponto‐e‐vírgula

•  OefeitodeanimaçõestoéindefinidoemSVG.•  Recomenda‐seusarfrom‐to,from‐byouvalues(enãoapenas

to–devidoàformacomoopera,valorinicialéindefinido)

•  Atransformaçãoémul.plicadaaoefeitodasanimaçõesanteriores(quandoatributoaddi:ve="sum")*

22*VejamaisnaspecSVG,seção19.2.14

argo

navi

s.co

m.b

r Exemplode<animateTransform>

23

<imagexlink:href="TheFish.png"height="80"width="200"x="50"y="50"><animateTransformtype="rotate"from="0"to="15"attributeName="transform"dur="2s"begin="click"fill="freeze"/><animateTransformtype="translate"to="300,0"fill="freeze"dur="2s"begin="click"calcMode="spline"attributeName="transform"keyTimes="0;1"keySplines="0.0,0.50.5,1.0"additive="sum"/><animateTransformtype="rotate"to="‐30"attributeName="transform"dur="4s"begin="click+1.5s"additive="sum"fill="freeze"/><animateTransformtype="translate"to="200,0"attributeName="transform"dur="4s"begin="click+5s"calcMode="spline"fill="freeze"keyTimes="0;1"keySplines="0.25,0.750.25,1.0"additive="sum"/><animateTransformtype="rotate"to="15"attributeName="transform"dur="6s"begin="click+10s"additive="sum"keyTimes="0;1"keySplines="0.25,0.750.25,1.0"fill="freeze"/></image>

•  Váriasanimaçõessimultâneaseadi.vas