Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@h-nabata

Juliaで3Dのgifアニメを作りたい!

Juliaで3Dのgifアニメを作るために格闘したのでメモ。
使用しているJuliaはv1.5.1で、エディタはAtomを使っています(筆者はWindowsユーザーです)。

・3Dのgifアニメを作りたい!

Juliaで出力された3D画像について色々と調べていると次のページに巡り合いました。

"Depth" - cormullion’s blog
https://cormullion.github.io/pages/2020-09-22-depth/index.html

このページの一番下には以下のようなgifムービーが掲載されていました。これは冥王星の5つの衛星の周回軌道を、カロン(Charon)が公転する分だけ3Dプロットした動画です。
plutoniansystem.gif
なかなか綺麗なので自分の環境でも出力してみようと思い立ち、色々やってみました。

・準備

これを動かすには「Thebes」と「Luxor」という2つのパッケージが必要です。

パッケージのインストールは、JuliaのREPLを起動してパッケージモードで add Thebes などとすれば可能です。もしくは、コードの冒頭に import Pkg; Pkg.add("Thebes") などと書いておけばインストールできます(※一度インストールすればそれ以降は書かなくてOKです)。

「PyPlot」が無くても出力されるかどうかについては、試していないので分かりませんが、併せてインストールしておくのが良いと思います。

また、Juliaとは別に「FFmpeg」というフリーソフトウェアが必要です。これは動画・音声を記録・変換・再生するためのソフトウェアで、以下のページからzipファイルがダウンロード可能です。

FFmpeg Windows Builds(Windows環境の場合)
https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.zip を選びます。

MacやLinuxをお使いの方は Download FFmpeg のページから適するものをダウンロードして下さい。

ダウンロードしたら展開し、C:\Program Files の下などに FFmpeg などと名前を変更しつつ移動します。その後、ユーザー環境変数のPathの中に C:\Program Files\FFmpeg\bin とパスを通してください。これでプログラムがFFmpegを使えるようになります。

この辺りの操作は「Plots.jlで動画出力するにはffmpegまたはimagemagickが必要」の記事などを参考にさせて頂きました。

・出力してみた

元コードをそのまま実行してもgifがうまく出力されないので、コードの最初の行に

using Thebes, Luxor

を付け加え、最後の pathname の部分を

pathname  = "C:/Users/user/AppData/Local/Temp/plutonian.gif"

などと書き替えます(場所は適当。user の部分は適宜書き換える)。これにより C:/Users/user/AppData/Local/Temp/ の中に plutonian.gif が作成されます。他人様のコードを丸ごと載せる訳にはいかないので、コード全体については元ページのソースコードを適宜参照して下さい。

実際に自分で作成したgifも載せておきます。オリジナルとは少し配色を変えてみました。
plutonian2.gif

・他にも出力してみた

いかにもJuliaのロゴマークっぽい配色です。
ferriswheel.gif
amovie.gif

コードは先ほどの cormullion’s blog のページを参考にアレンジしました。

・Pyplotパッケージを使う場合

Pyplotパッケージを使うとPythonのmatplotlibが呼び出せます。これによりmatplotlibを用いた3Dグラフが出力可能になります。Pythonと同じ書き方ができるので非常にラクです。(ただし、使う場合はPyCall、PyPlot、matplotlib本体をインストールしておいて下さい)
PyPlot_plot_rwalk.gif
PyPlot_plot_rwalk2.gif
PyPlot_plot_rwalk3.gif

いずれも乱数により生成した点列をプロットしたものです。コードはこちらのページを参考にアレンジしました。

・あとがき

・・・という訳で、表題の通りJuliaで3Dのgifアニメを色々と作ってみました。
特にPythonユーザーからしてみると、using PyCall, PyPlot とすればPythonと同じ書き方ができるのは嬉しいですね。Plotsパッケージを使った2Dのgif画像については「JuliaでグラフのGIFアニメを作ってみた」や「Julia言語と Plots + GR で複素関数のgifアニメーションを作る」などのページに色々な例が紹介されているので、参考にしてみて下さい。

その他のJuliaの基本的な部分については「Julia初心者がJuliaをさわってみた」などのページを参考にしてみて下さい。

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
h-nabata
化学反応の研究に従事している大学院生です。 計算化学を専攻していますが、プログラミングは必要に応じて時々やる程度です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?