「ギャロップ!!」という仕掛け絵本があります 本を開くと窓の向こうに見える馬が走り出します

仕組みとしては 連続画像を重ねて作った一枚の絵の上に スリット入りのマスクを配置し これを動かすことによって絵が動いているように見せています この技術はスキャニメーションと呼ばれています

1年くらい前にRubyとShoesを使って この絵とマスクを作る方法を紹介しました これでコンピュータ上でスキャニメーションが実現できます

Ruby+Shoesでスキャニメーションを作ろう!

でもこの方法は工程が多くて不便でした そこで今回はRubyだけでこの絵とマスクを作れるようにしました

スキャニメーションの画像ができれば 以下のようなサイトを作ることができます

World of ScanAnimation

image

画像の作り方

*(1)スクリプトをダウンロードする

以下のサイトにある拙作scanimake.rbと scaniviewer.rbスクリプトをダウンロードします

melborne’s scanimaker at master - GitHub

使用に際してはImageMagickとRMagickライブラリが必要になります

*(2)連続画像を用意する

画像編集ソフトを使うなどして以下のような連続画像を用意します

image

画像の作成・編集にはMacであれば GimpをベースにしたSeaShoreがおすすめです

Seashore

melborne’s scanimaker at master - GitHub にはサンプルの画像データも置いてあります

*(3)Rubyスクリプトで画像を生成する

ダウンロードしたscanimake.rbスクリプトに引数として 作成した複数の画像データを渡します

$ ruby scanimake.rb images/horse1.png images/horse2.png images/horse3.png ...

これによって画像データのディレクトリに out.png mask_out.pngという画像が生成されます

scanimake.rbスクリプトのif FILE == $0以降を変更することで 出力ファイル名(ex. horse.png mask_horse.png)と マスクにおけるスリットの向き(:horizontal)を変えられます

if __FILE__ == $0
  sm = Scanimake.new(ARGV)
  path = File.expand_path(File.dirname(ARGV[0]))
  sm.create_layered_image(:horizontal).write("#{path}/horse.png")
  sm.create_mask_image(:horizontal).write("#{path}/mask_horse.png")
  exit
end

*(4)画像を確認する

このスクリプトで作成した画像は scaniviewer.rbスクリプトで再生することができます このスクリプトはRubyのGUI frameworkであるShoes用です Shoesのダウンロードは以下から行います

Downloads for shoes’s shoes - GitHub

Shoesでこのスクリプトを起動し 最初に開いたダイアログで画像(ex. out.png)を開き 次に開いたダイアログでマスク(ex. mask_out.png)を開きます 画像に問題がなければ絵が動いて見えます

image

さあ Rubyでスキャニメーションしましょう!



blog comments powered by Disqus
ruby_pack8

100円〜で好評発売中!
M'ELBORNE BOOKS