今日(2011/5/11)のgoogleロゴはダンスのアニメーションになってて、
それがとてもキレイでかっこいいアニメーションだったので、
自分もアニメーション用のjsをちょこっと書いてみた。
「Google」の6文字が踊る――マーサ・グレアムさん生誕記念のホリデーロゴ
この人がロゴのアニメーション作ってた人。
ほんと細部までキレイなアニメーション。このアニメーターのモーション技術すっげぇ。。
んで、googleロゴの中身見てみると、gifアニメかと思いきやpngのポジションをずらす方法を取ってて
これがネタばらしの一枚絵。
そういえば、一昨日公開された、thaのFRAMED*のページでも使われてたなぁ、これ。と思い、
普通にjs書ける人には一瞬でできるだろうから関係ないけど、
この1枚絵さえ作れれば、誰でもアニメーションgifならぬ、
アニメーションjpgとか、アニメーションpngつくれるよねということでjs書いてみました。
使い方
・jQuery必要です。
・アニメとか映像の連番を縦につなげた1枚絵が必要です。こんなん。
(これの用意が一番大変なんだけど、なんかいい書き出しの方法があるのかな??)→ 2011.07.04 追記 なかったのでflashで書き出しツールつくった。
後はヘッダーに以下スクリプト。
<script src="jqueryまでのパス" type="text/javascript" charset="UTF-8"></script> <script type="text/javascript"> var id = "animation_target"; var width = 100; var height = 100; var fps = 30; var src = "./sample.jpg"; var frame = 0; var max_frame = 30; var onceFlg = false; $(document).ready( function (){ $("#"+id).css({ "background":"url("+src+")", "width":width, "height":height }); var interval = 1/fps*1000; animation = setInterval(intervalEvent, interval); }); function intervalEvent(){ $("#"+id).css({ "background-position":"0 "+ -height * frame +"px" }); frame++; if(frame>=max_frame){ if(onceFlg) clearInterval( animation ); frame = 0; }; } </script> </header>
んでhtml内には空divとかにid指定するだけでおk。
<body> <div id="animation_target"></div> </body>
では簡単にパラメータ説明を。
var id = “animation_target”; ← divに指定したid名
var width = 100; ← アニメーションの幅
var height = 100; ← アニメーションの高さ
var fps = 30; ← アニメーションのfps (Frame Per Secondね。何それ?って人はこっち。)
var src = “./sample.jpg”; ← 1枚絵までのパス
var frame = 0; ← 開始フレームなので0のままでおk
var max_frame = 30; ← 終了フレーム。要は何枚の絵でできた1枚絵かってこと。
var onceFlg = false; ← ループさせたくない、1回で終わらせたい人はtrueに。
で、実際にはこんな感じ。
おお、なんか滑らか!!w
(よく見ると並べるときに1pxズレたりしてて、がたついてますね。。w)
で、これが作った1枚絵。
今回はyoutubeにあったフリー映像(25s辺り)をPremiereで連番jpgに書き出して、
Photoshopで整列&一括色補正。そのまま1枚絵としてjpg書き出し。って方法だったのだけれど、
ここの書き出しでいい方法があるなら是非教えて下さい!!orz
と、まぁあの素晴らしいアニメーションが描けないと意味ないですよね、、w
jsにする迄もなかったかもですが。。orz
にしてもGoogleのは1枚絵のpngでブロックの連番を行で分けて、
止め絵を残して(透過pngかな?)文字を作っていくっていう素晴らしいアイデア。。
やっぱGoogle△ー!
you
2011.07.04 追記
上記の連番jpgを用意するのがとても面倒だと思うので、flashで書き出しツールをつくってみたよ。こっち。