アニメーションライブラリJavis.jlを試す!


Juliaアドベントカレンダー19日目です。

Javis.jlという簡単にアニメーションを作成できるライブラリを使っていきます。

導入

例のごとく

julia> ]add Javis
julia> using Javis

で使えるようになります。

LaTeXを使いたいのであれば、


> npm install -g mathjax-node-cli
julia> ]add LaTeXStrings

で使えるようになるようです。

他に、画像処理用のモジュールとして、ImageIO QuartzImageIO ImageMagick等必要に応じて追加が必要なようです。

まずは簡単な例を動かす!

Javis.jlのExampleからJuliaのロゴを描くサンプルを実行してみます。

上記実行した感じ特に問題なく、動きました。

基本的な使い方

Video = video(width, height)で表示領域作成します。

あとは、作りたい図形を定義して、そこにアニメーションを付加していくだけです。


function ground(args...)
    background("white") # canvas background
    sethue("black") # pen color
end

# 100フレーム作成
Background(1:100, ground)
# 四角形作成
obj = Object((args...) -> rect(O, 50, 50, :fill), Point(100, 0))
# 0を起点に一回転
act!(obj, Action(1:50, anim_rotate_around(2π, O)))

Jupyter Notebookで動かす

このライブラリで、保存される成果物はgifです。

gifの表示は
display("image/gif", read(filename))でいけるため、それ使います。


function ground(args...)
    background("white") # canvas background
    sethue("black") # pen color
end

myvideo = Video(500, 500)

Background(1:100, ground)

obj = Object((args...) -> rect(O, 50, 50, :fill), Point(100, 0))

act!(obj, Action(1:50, anim_rotate_around(2π, O)))

display("image/gif", read(render(myvideo)))

Weave.jlで表示

Weave.jlでJavie.jlの機能を使いたいという特殊な場合があれば、以下ですればいいと思う。


    ```julia;echo=false;results="hidden"

    using Javis, Plots
    function ground(args...)
        background("white") # canvas background
        sethue("black") # pen color
    end

    myvideo = Video(500, 500)

    Background(1:100, ground)

    obj = Object((args...) -> rect(O, 50, 50, :fill), Point(100, 0))

    act!(obj, Action(1:50, anim_rotate_around(2π, O)))

    render(myvideo; pathname="sample.gif")

    ```

    ![Alt txt](sample.gif)

上のは、ターミナル表示も結果表示も切って、動的?に作られたgifを表示するためのものです。

いちいち、gifを作りなおして、再リンクしなおすのが面倒とかいう場合には使えるかもしれません。

例えば、自分のホームページ上にgifを使うって、いちいち書き出すのが面倒とか。

感想

基本的な動きはサポートされてるみたいなので、簡単なアニメーションを作成する時に敷居は低くなりそうですね。