GIFアニメーション実験室

破棄モードって何? のページ



破棄モードの原理

 ここでは、破棄モードというものが、いったいどのように影響しているのかを紹介します。ま、知らなくても問題はありませんけどね。では、次の図を見てください。背景が紫の図は、論理スクリーンというものです。アニメーテッドGIFの各フレームは、いきなり画面に表示されるのではなくて、論理スクリーンという仮想領域にコピーされます。それを示しているのが@です。次に、WWWブラウザは、Aのように論理スクリーンの内容を画面にそのまま表示します。ここまでは理解できますね。
 問題はBです。破棄モードとは、この段階で影響してきます。





破棄モード0または1の場合

 これが指定されているとBの段階では何も行われません。すなわち、前の画像がそのまま論理スクリーンに残っているわけです。普通は、次のフレームがコピーされたときこの画像は上書きされてしまいます。しかし、透明色が指定されていたり、ポジションを移動していたり、各フレームのサイズが異なると、前の画像が上書きされずに、残ってしまいます。これが、残像ができてしまう理由です。



破棄モード2の場合

 これが指定されているとBの段階でGIF画像が消去されます(この消去は、論理スクリーン全体に対してではなくて、画像のサイズの範囲だけです)。つまり2回目の@の段階で画像が消えているので、残像が残らないというわけです。このことから推測できるように、画像のサイズが同じで、位置移動もなく、透明色が使われていない場合には、消去する処理は無駄なので破棄モード1を指定しておくのが親切です。



破棄モード3の場合

 これはほとんど破棄モード2と同じです。ただし、やはりBの段階に違いがあります。破棄モード2では単に消去するだけですが、破棄モード3では「1回前の状態に戻す」という処理をおこないます。
 次の図をみてください。上図は1フレーム目が破棄モード1で、2〜3フレーム目を破棄モード2に変更した図で、下図は1フレーム目が破棄モード1で、2〜3フレーム目を破棄モード3に変更した図です。
 上図では2フレーム目が表示された後、Bの段階でコピーした画像範囲を消去するので、1フレーム目のハムスターに2フレーム目が重なった範囲の四角形が消去され、ハムスターが半分だけ残っています。
 対して、下図では2フレーム目が表示された後、Bの段階でコピーした画像範囲をコピー前の状態に戻すので、1フレーム目のハムスターに2フレーム目が重なった部分も、そのまま残っているのです。あー説明しずらいなー。おわかりになりました?
 これを利用すると、顔のイラストの前でハエが飛ぶというアニメーションを作る場合、1フレームに顔、2フレーム以降をハエだけ描けばよい、というテクニックが生まれます。ただし、Netscaopeは破棄モード3をサポートしていません。やってみると破棄モード2と同じ動作になります。破棄モード3はIE3.0のみで正しく動作します。今のところは、使わないほうがいいでしょう。


破棄モード2だから、2つめのハムスターの範囲は、Bの段階で消される。


破棄モード3だから、2つめのハムスターの範囲は、Bの段階で前の状態に戻る。



Return IndexPage