%表題 gtool を用いたアニメーション作成のための手引 -*-text-*- % %履歴 96/10/27 竹広 真一 % この文章は gt3-dcl5 のサンプルプログラム gtcont を用いて カラーのアニメーションを簡単に作成するための手引である. ●作業を行なった環境 ・Sun Sparc 20 (SUNOS 4.1.4 non JLE) ・X11R6 ・dcl-5.0.1 ・gt3-dcl5 (96/09/06 版) ・netpbm (1mar1994) あるいは ImageMagick ・xanim (26978) ・tcsh-6.05 他の環境で作業する場合に最低限要請されることは ・dcl-5.0 の内部変数をコマンド引数として与える機能が使用可能なこと, ・gt3-dcl5 sample のコマンドオプションが機能すること であろう. ●gtool 形式 データをカラーで出力する方法 gtool の gtcont でカラートーンの図を作成するには次の 2 とおりの 方法がある. 1. おまかせトーン間隔設定 トーン間隔を等間隔に設定する場合は 次のようにお任せでトーンレベルを設定できる. % gtcont .... cont=2,10 range=-40,40 nocont=T \ color=40 cpat=18999,1000 cont=2,10 : 等値線間隔(小)がトーン間隔に設定される range=-40,40 : トーン色づけ範囲 nocont=T : 等値線描画のスイッチ color=40 : 用いる色の数. cont, range で設定される : トーン数に等しくしておく. : (range_max-range_min)/cont_small) cpat=20999,2000 : トーンの色づけ情報 : (最初のトーン番号,増分値) : この例だと 20999,22999,24999 の : 順にトーン番号が設定される. 2. マニュアル設定 トーン間隔を自分で設定したい場合には以下のようにオプションを 設定する. % gtcont .... tone=-999,-50,-10,0,10,50,-999 \ pat=-25999,35999,45999,55999,65999,75999 tone : トーンの塗り分け境界値 : -999 は欠損値. 最初の -999 は-∞, : 最後の-999 は∞をあらわしている. pat : tone で指定したトーンレベルに対する : トーン番号. 上の例だと : 値の範囲 : トーン番号 : -∞〜-50 : 25999 : -50〜-10 : 35999 : -10〜 0 : 45000 ●gtool 形式 データ --> gif アニメーション作成方法 0. X 仮想コンソールサーバー Xvfb を起動し, DISPLAY を 仮想コンソールに設定する. % Xvfb :1 & % setenv DISPLAY host:1 これで DISPLAY が仮想コンソールに設定される. 通常のコンソールを用いても以下の作業は可能であるが, 他の仕事ができなくなるので効率的でない. 仮想コンソールを使用して以下の作業を行なって 色がおかしくなったら % Xvfb :1 -fbdir /tmp ^^^^^^^^^^^ を試されたい. こうすると /tmp の下に仮想のダンプ (xwd で出来るやつ)がファイルの形で常に存在するので, これを使ってアニメーション原画を取得することもできる. 1. dcl-5.0 の内部変数設定オプションを次のように設定し, gtool 描画コマンドを起動する. % gtcont .... -sw:lwait=.false. -sw:ldump=.true. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -sw:lwait=.false. : 改ページで一時停止しない -sw:ldump=.true. : X ダンプファイルを作成する この結果, dcl_???.xwd なる一連の xwd 形式ファイルが 作成される. 作業が終ったら DISPLAY 変数をもとに戻しておこう. % setenv DISPLAY host:0 ○参考文献 ・dcl-5.0 マニュアル GRPH1/SWPACK ・dcl-5.0 マニュアル MATH1/概要 1.2 内部変数 2. xwd ファイルを gif ファイルに変換する. netpbm のツールと tcsh の機能を使って 次のように入力すれば OK. hogehoge_???.gif なる一連のファイルが作成される. % foreach i ( dcl_*.xwd ) foreach> xwdtopnm $i | ppmtogif > $i:s/.xwd/.gif/:s/dcl/hogehoge/ foreach> echo $i ^^^^^^^(a)^^^^^ ^^^^^(b)^^^^^^ foreach> end foreach 1 行目 : xwd から pnm を経由して gif 形式に変換. (a) $i の .xwd を .gif に置き換える (b) さらに dcl を hogehoge に置き換える foreach 2 行目 : 作業のモニターのためファイル名を echo している. netpbm の代わりに ImageMagick の covert コマンドを使うことも できる(こちらの方が速い?). その場合には foreach 1 行目が次の ようになる. foreach > convert $i $i:s/.xwd/.gif/:s/dcl/hogehoge/ tcsh でなく csh を用いている場合には, $i:s/.xwd/.gif/:s/dcl/hogehoge/ の部分を `echo $i | sed 's/xwd/gif/' | sed `s/dcl/hogehoge/'` に変えれは OK である. ○参考文献 ・tcsh マニュアル(man tcsh) 3. できた gif ファイルをアニメーションとして眺める. % xanim hogehoge_*.gif & % xanim -Ss0.5 hogehoge_*.gif & オプション -Ss0.5 はサイズを 0.5 へ縮小するという意味である. 小さめにした方が画面がスムーズに動いてアニメーションらしくな る. 4. 後かたづけ. Xvfb を kill しておく.