[研究報告の目次に戻る]

フリーウェアを用いたコンピュータシミュレーショ ン動画の一作成法

豊木博泰
(toyoki@phys.ksb.yamanashi.ac.jp)

目次

  1. はじめに
  2. 一連の静止画から動画を作成する方法
  3. シミュレーション動画作成例 -- 固相--液相転移の場合 --
  4. おわりに




1. はじめに

コンピュータネットワークの高度化にともなって,マルチメディアを教育手段と して利用する試みが,多くの教育機関で行われている.それらは次の3つに分類 されるであろう. 第1のものとして,衛星通信を利用した遠隔地教育の実験が全国的な規模で始まっ ている.しかし,教育効果をあげるには,まだ乗り越えなければならない問題は 多い. (1)

一方,ここ1,2年の技術革新は,第3の利用法の可能性をふくらませ た.高輝度軽量な液晶プロジェクタ,およびmpeg1程度のデジタル動画像 を再生できるだけの能力を持ったノート型パソコンの登場により,一般教 室でのマルチメディア教材の提示が可能になったのである.2年前,山梨 大学においてビデオオンデマンド(VOD)の運用実験を始めたころ,提示 装置としては3管式プロジェクタがほとんど唯一の現実的な選択肢であっ た.それに対して液晶プロジェクタの利便性は比較にならないほど大きい.

筆者は,物理学の講義を日頃担当しているが,実験や観測のビデオ画像やシミュ レーション動画を授業中に提示できることを長年望んできた.提示装置利用に十 分な可能性がでてきた今,問題は,デジタルコンテンツをいかに充実させるかで ある.もちろん,プロジェクタへの入力源としてVTRも使えるが,一つのコンテ ンツが比較的短時間であって,必要な部分へ即座にジャンプできることが授業支 援道具としては重要であることを考えると,コンテンツとしてはデジタルである ほうが望ましい.本稿では,X Window System(以下,X11とよぶ)上でのシミュレー ションをデジタル動画にする簡便な方法とその例を紹介する.提示用のコンピュー タが十分高速で,シミュレーション画像をリアルタイムで提示できる場合には, わざわざ動画を作成する必要は少ないのであるが,あとで示す例のように,1分 程度の動画として見せたいが計算には何時間もかかるというような場合には予め シミュレーションを行って動画ファイルを作っておく必要である.以下で示す方 法は,すべてソースが公開されており,無料で利用できるソフトウェアを用いた ものである.



2. 一連の静止画から動画を作成する方法

時間的に変化する対象のシミュレーションを動画化する方法を紹介する.
  1. 時系列静止画データの作成・保存

    一般ユー ザが生にX11ライブラリの描画関数を 使うのはかなり骨が折れるので,簡易な描画のための上位ライブラリが幾つ か作られている.ここではYgl (2)を紹介する. Yglは,SGI社が開発した描画ライブラリGLのエミュレーション ソフトでX11上で動作するものである.Yglは,GNUのソフ トウェアライセンスに則って配布されており, 本家のGLよりもかなり高速であること,X11がのっているほとんどのUNIX機で 動作すること,fortranのインターフェイスが用意されていること,描画を ppm形式でファイルに出力する関数などの便利な関数が付加されていることな どの点で,2次元描画にとっては高い有用性をもつ.

    Yglには,残念ながら,簡略なマニュ アルしかついていないので,関数の引数や機能を知るにはソースやヘッダー ファイルを見るか,GLがのったマシーンのmanページをみる必要がある(配布 ソフトのReadMe.htmlは配布元のコンピュータにあるGLのマニュアルページを cgiで読み出せるよう設定されてはいる.).以下に, よく用いられる関数と用法例を紹介する.

      prefsize(x, y);          ... ウィンドウサイズ(x,y)をドット数で指定.
      win = winopen("test");   ... ウィンドウを開く
      linewidth(1);            ... 線の太さの指定
      color(BLACK);            ... 線の色の指定
      clear();                 ... ウィンドウのクリア
    
      move2(x,y);              ... 座標(x,y)へペン先を移動
      draw2(x1,y1);            ... 現在のペン先から(x1,y1)へ線を引く
      
      circ(x,y,r)              ... (x,y)を中心とし半径rの円を書く
    
      cmov2(x,y);              ... (x,y)へ文字描画用ペン先を移動
      charstr("string");       ... 現在のペン先の位置に文字列stringを描画
    
      sprintf(out_file, "| /usr/local/netpbm/ppmtogif > test.gif"); 
                               ... 下記gl2ppmの出力を外部プログラムに渡す
      winset(win);             ... gl2ppmの出力すべきウィンドウの指定
      gl2ppm(out_file);        ... ウィンドウ全体をout_fileへppm形式で出力
    
    ウィンドウの大きさを指定して開き,描画し,ファイルに書き出すという一連の 作業が簡単できそうだということがわかっていただけるであろう.最後の3行が, 描画を標準的な画像形式のファイルに書き出すための独自の機能ある.下から3 行目にあるppmtogifはppmからgif形式への画像形式の変換ソフトで,netpbmと呼 ばれるフリーの画像形式変換ソフトパッケージに含まれている.

    Yglには上 記のほか,多角形,扇型など基本的な2次元描画関数,ウィンドウの一部を unsigned char arrayに保存し,必要に応じて画面に戻す関数などがそろってい る.

  2. 一連の静止画を動画化

    一連の静止画を動画化するソフトはいくつか市販されているが,UNIX上で の動画化には,mpegの初期の開発者たちが作ったものを用いるのが簡便で ある.StanfordとBerkleyでつくられたものがあるが,ここでは,前者, The Portable Video Research Group at Stanford(1994年末に解散)により 作成され配布されているものを用いる.オリジナルは havefun.stanford.eduにMPEGv1.2.1.tar.Zという名でおかれていたが,現 在では,多くのanonymous ftpサイトで見出すことができる.

    これに含 まれているSETUPという文書をみながらmakeすると,実行ファイルmpegがで きる.mpegは,YUV形式の静止画とmpeg形式の動画の相互変換プログラムで ある.YUVは,ヨーロッパのTVのフォーマットであるPALなどで用いられて いる標準的な色空間の形式のひとつであり,デジタルのRGB表示の各成分と は線形な関係にある.

    用い方は,まず,test0.Y, test0.U, test0.V, test1.Y, test1.U, test1.V, test2.Y, test2.U, test2.V,...,test100.V のように一連の番号が付されたYUV形式の画像ファイルをつくり,

      mpeg -a 0 -b 100 test -s test.mpg
         
    のように最初と最後の番号,および出力ファイル名をオプションで指定し てmpegを実行する.オプションで -dを指定すると,逆に,mpegからYUVへ の変換ができる.

    YUV形式は圧縮されていないビットマップファイルなので保存用には向かな い.前項の静止画作成のあとタイトルをつけるなど,静止画の順序づけの 段階で細工することが多いが,そのような作業の段階では静止画は圧縮して保存しておく方がディスクスペースの点で現実的である.gif, jpeg等よく用いられる圧縮形式で保 存されているファイルをYUV形式に変換しmpegをつくるシェルスクリプトを 作るのがよいだろう.下記の動画作成では,シミュレーションが出力する 静止画はgif形式で保存し,タイトルを別に作り,番号順にならべ, mpegを用いるというスクリプトを書いた.mpegを用いる部分のスクリプト には, Minnesota Supercomputing CenterのWebページ http://www.arc.umn.edu/GVL/Software/mpeg.htmlに紹介されている ものを利用した.



3. シミュレーション動画作成例 -- 固相-液相転移の場合 --

  1. 動機

    物質には,固体,液体,気体の3態があり,環境(温度,圧力など)を変化させて いくと,それらの間に相転移がおきる.相転移の際には,体積,比熱などが不連 続的に変化する.このような不連続性は,分子の相互作用は解析的であってもお こるもので,集団系(多体系)のマクロな量の特質である.分子の集団運動を直接 観察し,不連続的な変化が起こる様をとらえられることは不可能である.実験的 に可視化できないものに対する数値シミュレーションは直観的理解を助ける教材 として有用であろうというのが我々の作成動機である.

    あちこちを飛び回っていた気体分子が凝縮し液体になるには,分子間に引力がは たらかなければならないことは直観的にもわかる.では,固体(結晶)になるのに は分子間のどのような力が本質的なのであろうか.このような問いに対して,約40 年前,Alderらは,分子間に斥力だけがはたらくような系,つまり剛体球の集団にお いても結晶化が起こることを数値実験により見出した [Alder(1962) (3) およびその引用文献].これは大方の理論的予想に反した ものであり,物理学の分野にコンピュータ実験の威力示した 最初の仕事といわれている.今では同様なことがパソコンでも再現できるが,リアルタイムでみ るのはパソコンでは遅すぎる.そのため,動画をあらかじめ作成してお くことを考えた次第である.

  2. シミュレーションのアルゴリズム

    2次元平面に剛体球(2次元だから円盤)をならべ,適当に速度を与え,時間変化を 観察する.エネルギー をはかるメジャーはないので,この系では温度単位は存在しない.相転移をおこすパ ラメータは圧力あるいは体積である.ここでは,系の大きさは固定とし,球の半径,つまり 密度をパラメータとした. 時間発展の方法は,粒子は衝突がおこるまでは等速直線運動することに着目して 以下のようにする[上田(1990)(4)].

    1. すべての2体間について,他の球の存在を無視して衝突までの時間を計算 し,それらを小さい順に並べる.
    2. もっとも小さい衝突時間tcをもつ対が実際に衝突する.したがって,その時 間分だけすべての球を等速直線運動させる.
    3. 衝突した球対について衝突後の速度を計算する.また,衝突球に関係する すべての対(全体の個数をN個とすれば,2N-1対)について衝突時間を計算 し直す.衝突球に関係しない対間の衝突時間はtcだけ差し引 く.そして,新たに衝突時間を並べかえる.
    4. 以上をくりかえす.

    アップデートの時間刻みは一様でないために,スナップショットの保存に際して は,時間間隔を一様にするよう考慮する必要がある.

    作成した動画に解説をつけたものをWWW上で公開しているので,インターネット を通じてhttp://cosmos.ksb.yamanashi.ac.jp/~toyoki/hs-tr/alder.html にアクセスできる方は参照いただきたい.ただし,このページからたどれる 動画ファイルは,352x240ドットで1000コマ程度のもので10MB以上あるから,か なり高速でアクセスしていただけるサイトからでないと取得が困難であろう.そ のため,内容をそのままCD-ROMにやいたものを希望者には配布することにしてい る.

    ここでは,作成した動画の例をいくつか示す.以下の図は,いくつかの密度での シミュレーションの最終スナップショッ トであり,動画にリンクされている.図中の赤い線は粒子の軌跡を表している. また,拡散の度合がわかりやすいように一個の粒子の軌跡は黄色で示されている. mpegを再生できるツールがブラウザのプラ グインとして入っているか,再生のための補助ソフトとして設定されていれば, 絵をクリックすることにより見ることができるはずである.

    1. 希薄な場合(A/A0=8.0)
      A: 系の大きさ(面積)
      A0: 円盤を稠密に詰めたときの面積

    2. 固相になる寸前の流動相(A/A0=1.35)
    3. 固相(A/A0=1.25)
      (Alderらのシミュレーションによれば固相,流動相の共存領域はだいたい 1.27<A/A0<1.32のあたりである.)



4. おわりに

X Window System上でシミュレーション動画を作成する一方法を述べてきた.こ の方法の利点は,特別な機材を用意する必要がなく,X11が動くコンピュータを 用意しさえすれば実行できることにある.入門級のパソコン一台で動画を作成で きる時代になったのである.簡単に実験による可視化ができるものをわざわざシ ミュレーションする必要はないが,分子原子の存在形態や運動のようにシミュレー ションによる可視化が教育や研究に役立つ例はいろいろあるはずである.そのよ うな題材に,本稿で述べた手法が役立てられれば幸いである.蛇足になるかも知 れないが,一つの応用として,ネットワークカメラを用い た長時間観察の動画化について付録する.

作った教材を教育に役立てられるためには,教室設備の充実が必要である. 安価な液晶プロジェクタの登場により,ほとんどすべての教室に提示装置が設備 できる状況になっているので,早い段階での設置が切望される.

教材化を意識した剛体球系のシミュレーションは,山梨大学教育学部物理学教室 所属の学生の卒業論文研究として進められきた.最後の,UNIX上での動画作成は 1996年度卒業の戸口智雄君との共同作業によるものである.ここに述べた方法は, 彼らとの議論の中で案出したものである.彼らに感謝したい.詳しい製作過程 はhttp://cosmos.ksb.yamanashi.ac.jp/~toyoki/hs-tr/alder.html の製作履歴に記した.


[付録] ネットワークカメラか ら得られた映像の動画化

ここをクリックするとインターネッ
 トカメラによるキャンパスの動画がロードされます CCDカメラとWWWサーバを一体化したネットワークカメラが比較的安価で出回って いる.総合情報処理センターでは,従来,防犯用に用いていた圧縮機能のあるビ デオ録画装置の代わりに,ネットワークカメラを導入しようとしている.試験的 に使ったネットワークカメラから一分に一コマづつ映像を取得し,それをまとめ てmpegエンコードする試みを行った.映像の取得にはmgetとよばれるフリーウェ アを利用し,mpeg化には本稿で述べた方法を使った.一日毎の動画を作成し,そ の動画をWWWページに登録するするまでを自動化するスクリプトを試作し,ほぼ 一月程度問題なく動かすことが出来た.サンプルとして,工学部キャンパスに向 けられたカメラ(5)からの映像の動画を右に示す.

このようなネットワークカメラ映像の動画圧縮法は,非常に変化の遅いものを長 時間にわたって観 測し,それを短時間でみたい対象の教材化や研 究手段のひとつとして役立つてることができるのではないだろうか.


[文献および注]

  1. 衛星通信による遠隔地教育の場合,講義参加者 (教授者,受講者)間の伝達可能情報量が同一教室にくらべて,はるかに少 ない,つまり,遠隔地受講者はせいぜい数個のカメラと一つのディスプレ イおよびマイクを通じてしか情報をやりとりできない.一つの教室での授 業では,教授者は,あらゆる感覚を使って受講者の反応をとらえ,授業の 進行に反映させるのがふつうであるのにくらべると,遠隔地教育での双方 向情報量の少なさは問題である.筆者は,それゆえ,衛星による遠隔地教 育に大きなものを期待できない.ただし,大講堂での講演会を中継,放送 するなどには有用であると思う. [本文に戻る]

  2. 著作者はFred Hucht(fred@hal6000.Uni-Duisburg.DE)で,オリジナルは ftp://ftp.thp.Uni-Duisburg.DEにある. 現在Ygl-3.1.tar.gzという名でおかれ ているものが正式版としては最新である.プレリリース版ではあるが,この サイトには3Dグラフィックスの関数を加えたバージョンもおか れている.[本文に 戻る]

  3. B. J. Alder and T. E. Wainright, Phys. Rev. Vol.127, 359 (1962)[本文に 戻る]

  4. 上田 顕 著 「コンピュータシミュレーション」(朝倉 書店,1990)[本文に 戻る]

  5. インターネットカメラの設置及び諸設定は塙 雅典 総合情報処理センター 員によって行われた.現在も, 総合情報処理センターのページ の「ただ今のキャンパス風景」にてリアルタイムでサービスしている.[本文に 戻る]