4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Blender から透過アニメーションGIFを出力する方法

Last updated at Posted at 2020-07-21

Blender は MPEG などのアニメーションを出力することはできますが、アニメーションGIF (以下、AGIF) には直接出力できません。次のようなステップを踏む必要があります。

  1. 全フレームをアニメーションを透過PNGで出力する
  2. AGIF にコンパイルする
  3. 最適化・軽量化する

以下は Blender から AGIF を作る手順です。

作業環境

  • Windows 10 Home 1903
  • Blender 2.83.2
  • ffmpeg 4.3
  • Gifsicle 1.92

チュートリアル

Blender で透過画像を出力する

Render Properties

Output Properties

  • "Render プロパティー > Film > Transparent" = ON
  • "Output プロパティー > Output"
    • "File Format" = PNG
    • "Color" = RGBA
    • 出力パスは好きなパスを指定

上記を設定したら、 "メニューバー > Render > Render Animation (Ctrl+F12)" でアニメーション出力しましょう。

FFMPEG でコンパイル

伝統の FFMPEG を使って、複数画像を1枚の AGIF にまとめます。まずは FFMPEG をダウンロード&解凍してください。

Download FFmpeg

続いて、コマンドライン (Windows Terminal) で以下のコマンドを叩いてコンパイルします。

cd c:\tmp\animation

# シンプル版

ffmpeg.exe -i .\%04d.png -filter_complex "fps=24,split[a],palettegen,[a]paletteuse" -y output.gif

# パレット最適化版 (やや容量が小さくなる可能性あり)

ffmpeg.exe -i .\%04d.png -filter_complex "fps=24, setpts=PTS/0.5, split[a][b];[a] palettegen [p];[b][p] paletteuse=dither=none" -y output.gif

コマンドが何をやっているか、簡単に解説すると次のようになります。

  • -i: インプットファイル
    • 今回は4桁の連番ファイルをまとめたので、 %04d と記述
    • 3桁なら %03d
  • -filter_complex: FFMPEG 内部の GIF 処理コマンド群
    • GIF は256色しか表現できないため、最初に palettegen で元画像からカラーパレット画像を出力する
      • 1色は透過用なので、使えるのは実質255色
    • fps は Blender の出力時の値と合わせる
    • setpts: 再生速度の変更
      • PTS/2 -> 2倍 (倍速)
      • PTS/0.5 -> 0.5倍 (速度半減)
      • (スラッシュが除算に見えるが意味は逆なのがキモい)
  • -y: 出力ファイルが存在しても上書き

これでフォルダ内に AGIF が作成されます。

そのまま使ってもいいですが、ネット回線に優しくなるよう軽量化もしましょう。

軽量化

オンラインツールでは Optimize animated GIF を使うのが一番楽です。十分軽量化されますし処理も速いので、特に理由がなければこちらを使って軽量化しましょう。

あえて自分でコマンドラインで軽量化したい人のために、Gifsicle を使う場合の手順も示しておきます。

シンプルなツールなので上記マニュアル通りでサクッと軽量化できます。私が実験したところ、以下のパラメーターでそこそこ元の見た目を保ちながら、容量を 50% 程度削減できました。

gifsicle.exe -i input.gif --optimize=3 --lossy=500 -o compressed.gif
  • -i: FFMPEG で出力したファイルを指定
  • -o: 圧縮後のファイル出力先
  • --optimize: 1(default)~3
    • 3が一番遅いが、圧縮率が高い
  • --lossy: 値が大きいほど、画質が悪くなる代わりに圧縮率が上がる
    • GIF に含まれる色数にもよるが、200-500 で十分

以上で軽量な AGIF の作成が完了しました。

この手順を使って、クールなインターネット・ミームを生み出してください。

3d Saxophone GIF

参考リンク

4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?