tgifanime とは,tgif でごく簡単なアニメーションを作るために作ったソフトです. 具体的には,PowerPointに以下のようなアニメを貼りこむことを目的としています. (クリックすると動きます.Reloadすると何度も動きます.) 最初にお断りしておきますが,あまり難しいアニメはできません.
tgifanime version 0.1 のソースはここです.Perlスクリプトです. ディレクトリ名などを調整して使って下さい. 以下のコマンドが使えれば,どこでも動作するはずです. 標準的な UNIX 系の OS ならたいてい大丈夫だと思います.
tgifで2つの obj ファイルを作成して,
tgifanime -f start.obj -t finish.objと起動すると,startanime.gif という名前の gif ファイルができあがります. オプションは以下の通り.
tgif では obj 形式のファイルにデータを保存します. 直線や文字など,それぞれの部品に対応したオブジェクトが属性とともに書き込まれています. objファイルを一つ作って,それをコピーして, ちょっと変形して保存して diff をとればわかりますが, 座標などの数値が変更に応じて更新されています. したがって,こうした手順で二つのファイルを作って,
という操作をすれば,簡単なアニメを作ることができます.これが簡単な原理です.
tgif では多少図形を移動,変形しても,obj ファイルの中での保存の順番は変わりません. これを利用して,それぞれの図形がどこに移動するかを検出します.
こうした原理から,以下の限界があります. 基本的には,図形の移動や,簡単な変形の範囲でしかうまく動作しません.
一番トラブルの少ない手順は,
という感じです.ステップ5で失敗したら『最初の図』を『最後の図』にコピーしてやり直した方が無難です.
全体のサイズが変わってしまう場合,端を揃えて表示しようとするために,動かしたくないものが動いてしまうことがあります. 例えば壁にボールがぶつかるアニメ1は,左のボールが右に移動するはず なのですが,全体の枠組が小さくなるので,壁が動いてしまいます. こうした場合は,大きな四角形で構図全体を囲んで下さい. 全体を囲んだ場合のアニメは 壁にボールがぶつかるアニメ2のようになり,ちゃんと壁が固定されます. 周囲に見えない枠があり,これが固定されているからです.
『途中経過』のファイルをいくつか作って,これらをジョイントすると,多少はなんとかなります. 例えば以下の5つの図を tgif で作っておいて(左から roll1.obj, roll2.obj, roll3.obj, roll4.obj, roll5.obj とします),
以下のように,tgifanime の -v オプションでファイルを残しておいて,最後にすべての gif ファイルを gifmerge でマージすると, 生成した gif ファイルをすべてつなぐことができます. ファイル名がアルファベット順(roll1<roll2<…<roll5)になるようにつけておくところがポイントです.
tgifanime -n 10 -m 100 -f roll1 -t roll2 -v tgifanime -n 10 -m 100 -f roll2 -t roll3 -v tgifanime -n 10 -m 100 -f roll3 -t roll4 -v tgifanime -n 10 -m 100 -f roll4 -t roll5 -v gifmerge *--*.gif > rollanime.gifできあがったものはこんな感じです. まぁ回転してるように見える,かな? 補間するファイルをたくさん用意すればもちろん動きは良くなりますが,大変そうです.
単純に考えると,
とやるとうまくいきそうです.しかしPowerPoint 2002 の「アニメーションの設定」でこれをやると, なぜか,私の環境ではあまりうまく動きません. スライドが1枚目なら大丈夫なのに,途中のスライドだと, 作成したアニメーションが『ちょっと進んだ段階』で表示されます. これはたぶん私のせいではないようです. 次の方法で貼りつけた方が,ずっときれいに表示されます.
要するにPowerPointの「アニメーションの設定」は使わない,ということです. なお,PowerPointのアニメーションと,アニメーション化した gif ファイルのアニメーションは, PowerPoint 上では同時には動きません.これは仕様です.
また,ちょっと古いPowerPointも,うまく動きません. 国際会議などで,先方の用意したPowerPointを使わないといけないときは, こっそり事前にテストをしておかないと,泣きを見る可能性があります. Microsoft のWebによると,PPT2000 以降はサポートしているそうです. 私の PowerPoint2002 では大丈夫でした. 香港の XP マシン上の PowerPoint でダメでしたが,その PowerPoint のバージョンは見るのを忘れました.
PowerPoint へ gif ファイルを貼ると,画像が勝手に小さくされてしまうことがあります. 例えばテキストが書かれていたりすると,テキストを左に,画像を右に,それぞれ小さくして貼ってしまいます. これを拡大すると,上記の「注意(1)」のように複数の画像を貼る時にうまくいきません. 人手で複数の画像を拡大しても,どうも同じサイズになりません. そこで,画像をオリジナルサイズのまま貼る方法を考えました.私は以下の手順でやっています.
それほどスマートな方法とは思えません.もっといい方法を知っている人がいたら教えて下さい.
(2006年5月1日追記) PowerPointのカスタマイズで上記の機能をキャンセルできることに気づきました. (できてしかるべき,ですが.) 具体的には[ツール]→[オートコレクトのオプション]→[入力オートフォーマット]の中の, 一番下の[挿入したオブジェクトの自動レイアウト]のマークを解除すればOKです.
Note PC を新調して,最新の PowerPoint 2003 にしたら,動かなくなりました. 以前動いていたスライドも動きません.ちょっと調べてみたところ, 動画を無限ループにすると動くことがわかりました.UNIX系であればとりあえず作成したファイルを
gifsicle --loopcount=0 < in.gif > out.gif
と処理して,動画を無限ループにすると一応動きます. しかしこれはあまりよい解決方法ではないです.もっと良い対処方法は調査中です. 要するに PowerPoint はアニメーションGIFに真面目に対処する気持ちはないんだな,というのが 当面の結論です.
(2005年10月5日追記) [PPT2003] スライド ショー上で一部のアニメーション GIF が再生できない というそのものズバリのページを見つけました.PowerPoint 2003 に特有の症状で, 一応問題として認識してくれていました.良かった.早く直してもらいたいです.
透明化gifへの対応は,netpbm の giftopnm と ppmtogif -transparent を使えばすぐできるので,そのうちに. それ以外は特にやる気なし.
Last modified: Mon May 1 10:00:51 JST 2006
by R.Uehara (uehara@jaist.ac.jp) |