How to | アニメーションをインポートしたりエキスポートしたりする方法
Wolfram言語内でアニメーションを作成したり編集したりしてから,それを別のプログラムで使うようにエキスポートすることが可能である.Wolfram言語ではさまざまな形式でアニメーションをインポートしたりエキスポートしたりすることができる.
This page requires that JavaScript be enabled in your browser.
Learn how »
Wolfram言語のドキュメントのExampleDataディレクトリにあるQuickTimeファイルの中で,Importに使用できる要素を見る:
Import["ExampleData/clip.mov", "Elements"]QuickTimeファイルをアニメーションとしてインポートする:
Import["ExampleData/clip.mov", "Animation"]Lengthを使ってアニメーションの中にいくつフレームが含まれているかを調べる:
Import["ExampleData/clip.mov", "Frames"]//LengthImport["ExampleData/clip.mov", {"Frames", 1}]{"Frames",All}を使ってリストのフレームをすべてインポートする.{"Frames",All}の代りに"GraphcisList"を使っても同じことが行える:
g1 = Import["ExampleData/clip.mov", {"Frames", All}];ImageResizeをScaledと一緒に使って,各フレームをもとの大きさの半分にする:
g2 = ImageResize[#, Scaled[1 / 2]]& /@ g1;Sharpenをフレームのそれぞれに使う:
g3 = Sharpen /@ g2;ListAnimateを使って,処理されたフレームから新しいアニメーションを作成する:
ListAnimate[g3]新しいアニメーションをFlashに基づいた形式であるSWFにエキスポートする.%の記号は最後の出力(この場合はアニメーション)を指す:
Export["walter1.swf", %]エキスポートされたアニメーションを開くと,機能しないコントロールが上の部分に含まれていることが分かる.アニメーションは,基本的に映画の映画である.エキスポートしたアニメーションからこれらのコントロールを削除するには,フレームのリストをアニメーションがサポートするファイル形式に直接エキスポートするだけでよい.
以下では,フレーム(記号g3に保存される)のリストは,直接SWFにエキスポートされる:
Export["walter2.swf", g3]Wolfram言語で作成したアニメーションのインポートとエキスポートを行うこともできる.
まず,Tableを使って,
である5つの
のプロットを作成する:
plots = Table[Plot[Sin[a + x], {x, 0, 10}], {a, 5}]ListAnimateを使ってプロットのリストからアニメーションを作成する:
ListAnimate[plots]上と同じように,フレーム(この場合はプロット)のリストをアニメーションで使う用にサポートされたファイル形式に直接エキスポートすることによって,フレームのアニメーションを作成する:
Export["animate.avi", plots]一旦アニメーションがエキスポートされると,Wolfram言語にそれをもう一度インポートし直すこともできる:
Import["animate.avi", "Animation"]Manipulateのオブジェクトをアニメーションとしてエキスポートすることもできる.
ManipulateをPlot3Dと一緒に使って,
の値が0から4まで変化する
のインタラクティブな3Dプロットを作成する:
m = Manipulate[Plot3D[Sin[x y + a], {x, 0, 6}, {y, 0, 6}], {a, 0, 4}]次の3つのステップは,コントロール等も含めてManipulateオブジェクト全体をアニメーションにエキスポートする方法に等しい.
以下では,最後の出力(この場合はManipulateオブジェクト)をエキスポートする:
Export["manipulate1.avi", %]Manipulateはmにも保存されているので,mをエキスポートしても同じ結果が得られる:
Export["manipulate2.avi", m]Manipulate式をExport式の中に置くこともできる:
Export["manipulate3.avi", Manipulate[Plot3D[Sin[x y + a], {x, 0, 6}, {y, 0, 6}], {a, 0, 4}]]3つのアニメーション"manipulate1.avi","manipulate2.avi","manipulate3.avi"はまったく同じものである.また,これらのアニメーションはWolfram言語のManipulateオブジェクトに典型的なフレームとコントロールを含む.
フレームやコントロールを含まないアニメーションをエキスポートするには,Manipulateで使うのに適切な数の刻み幅を表すグラフィックスのリストを生成してから,そのリストをアニメーションで使われるファイル形式にエキスポートする.
例えば,Tableを使って
のリストプロットを作成し,
が0.2の刻み幅で0から4まで動くことを指定する:
plots2 = Table[Plot3D[Sin[x y + a], {x, 0, 6}, {y, 0, 6}], {a, 0, 4, 0.2}];グラフィックスのリストをファイル"manipulate4.avi"にエキスポートする:
Export["manipulate4.avi", plots2]Tableで使われた刻み幅を小さくすることによって,より長く滑らかなアニメーションを作ることができる.例えば,刻み幅を0.2から0.1に減らすと,リスト中に2倍の数のプロットができ,結果としてアニメーションとしてエキスポートしたときに2倍の数のフレームが作られる.
それに比例して,アニメーションのファイルサイズとWolfram言語がプロットとアニメーションを作成するのにかかる時間も約2倍になる.