tgifanime

Tgifanmieとは

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 ファイルの中での保存の順番は変わりません. これを利用して,それぞれの図形がどこに移動するかを検出します.

こうした原理から,以下の限界があります. 基本的には,図形の移動や,簡単な変形の範囲でしかうまく動作しません.

FAQ

作り方の手順

一番トラブルの少ない手順は,

  1. よ〜く考えて図を描く.
  2. 全体を大きな見えない四角で囲む(理由は次のFAQ参照).
  3. 『最初の図』が完成した段階で,ファイルに名前をつけて保存する.
  4. このファイルを,『最後の図』の名前で保存する.
  5. 最後の図になるように,部品を移動する. このとき「矢印で図形を指定して移動/変形する」という操作以外はしない方がよいです.
  6. 保存する

という感じです.ステップ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へ貼り付けるときの注意(1)

単純に考えると,

  1. 最初に『最初の図』を貼りつけておき,
  2. マウスをクリックしたら『最初の図』は消して
  3. 作成したアニメーションを表示する

とやるとうまくいきそうです.しかしPowerPoint 2002 の「アニメーションの設定」でこれをやると, なぜか,私の環境ではあまりうまく動きません. スライドが1枚目なら大丈夫なのに,途中のスライドだと, 作成したアニメーションが『ちょっと進んだ段階』で表示されます. これはたぶん私のせいではないようです. 次の方法で貼りつけた方が,ずっときれいに表示されます.

  1. 最初に『最初の図』を貼りつけておいたスライドを作る
  2. まったく同じスライドをその後にコピーして作る
  3. 2枚目のスライドの『最初の図』を削除して,作成したアニメーションをかわりに貼っておく

要するにPowerPointの「アニメーションの設定」は使わない,ということです. なお,PowerPointのアニメーションと,アニメーション化した gif ファイルのアニメーションは, PowerPoint 上では同時には動きません.これは仕様です.

また,ちょっと古いPowerPointも,うまく動きません. 国際会議などで,先方の用意したPowerPointを使わないといけないときは, こっそり事前にテストをしておかないと,泣きを見る可能性があります. Microsoft のWebによると,PPT2000 以降はサポートしているそうです. 私の PowerPoint2002 では大丈夫でした. 香港の XP マシン上の PowerPoint でダメでしたが,その PowerPoint のバージョンは見るのを忘れました.

PowerPointへ貼り付けるときの注意(2)

PowerPoint へ gif ファイルを貼ると,画像が勝手に小さくされてしまうことがあります. 例えばテキストが書かれていたりすると,テキストを左に,画像を右に,それぞれ小さくして貼ってしまいます. これを拡大すると,上記の「注意(1)」のように複数の画像を貼る時にうまくいきません. 人手で複数の画像を拡大しても,どうも同じサイズになりません. そこで,画像をオリジナルサイズのまま貼る方法を考えました.私は以下の手順でやっています.

  1. 画像を貼る.小さくされたら,同じ画像を繰り返し貼る.
  2. 3枚目あたりから,小さくされないので,必要な画像を全部貼る.
  3. 画像たちをぴったり同じ位置になるように移動する.これならなんとかなる.
  4. この「すべての画像をぴったり同じ位置になるように貼ったスライド」を必要な枚数複製する.
  5. それぞれのスライドで,不要な画像を削除する.

それほどスマートな方法とは思えません.もっといい方法を知っている人がいたら教えて下さい.

(2006年5月1日追記) PowerPointのカスタマイズで上記の機能をキャンセルできることに気づきました. (できてしかるべき,ですが.) 具体的には[ツール]→[オートコレクトのオプション]→[入力オートフォーマット]の中の, 一番下の[挿入したオブジェクトの自動レイアウト]のマークを解除すればOKです.

PowerPointへ貼り付けるときの注意(3)

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)
Valid HTML 4.0!