VSD for GPS

ダウンロード

vsd_filter_gps106c.lzh (2010/02/07 更新)

概要

機能概要

 
VSD for GPS (以下,VSD) は,GPS データロガーで記録したログファイルと,車載ビデオカメラの映像を合成してメーターを合成表示 (スーパーインポーズ) するソフトです.主に以下のような機能があります.
読み込み可能な GPS ログファイル形式は,以下のとおりです.

VSD は,フリーの .avi 編集ソフトとして有名な AviUtl のプラグインモジュールとして動作しますので,別途 AviUtl が必要です.

動作確認環境

アーカイブ内容

vsd_filter_gps.aufAviUtl 用プラグイン本体です
manual.url今ごらんのマニュアルです
avisynth\vsd_filter_gps.dllAviSynth 用プラグイン DLL です.AviSynth を使用しない場合は必要ありません.

インストール

  1. まずはじめに AviUtl をインストールします.
  2. ダウンロードした vsd_filter_gps???.lzh を解凍し,vsd_filter_gps.auf を AviUtl.exe と同じ場所にコピーしてください.

    最低限のインストールは以上ですが,AviUtl でさまざまな動画ファイルをオープンするためには,続けて以下をインストールしてください.(これ以下は VSD というより AviUtl の設定になりますので,より詳細な説明は他の解説サイトを参照してください)

  3. ffdshow をインストールします.→参考リンク
  4. mp4input.aui をインストールします.こちらのリンク先の「AviUtlを使ってMP4のファイルを無圧縮でカットする」の項を参考にしてください.
  5. DirectShow File Reader プラグイン for AviUtl をインストールします.→参考リンク
  6. AviUtl メニューの ファイル→環境設定→入力プラグイン優先度の設定 を選択し,「入力プラグインの優先度」ダイアログを表示します.そこで DirectShow File Reader を選択し,「下に移動」ボタンを押し一番下にした後,OK ボタンを押します.
     

画面表示説明


メニューの 設定→VSDメーター合成の設定 を選ぶと,「VSDメーター合成」ダイアログが表示されます.設定ダイアログの各設定項目の意味は以下のとおりです.

動画と GPS ログの同期の取り方

 動画に正しくメーター表示を行うためには,動画と GPS ログの同期 (タイミング合わせ) を行う必要があります.ここでは,同期の取り方の例を説明します.
  1. AviUtl を起動して,適当な動画を開きます.
  2. メニューの フィルタ→VSDメーター合成 にチェックを入れます.
  3. メニューの 設定→VSDメーター合成の設定 を選ぶと,「VSDメーター合成」ダイアログが表示されます.

  4. 設定ダイアログの GPS ログオープンボタンを押すと,ファイル選択ダイアログが表示されるので,そこで GPS で記録したログファイル (*.nmea) を選択してリードします.
  5. 動画と走行ログの同期を取ります.まず「VSDメーター合成」ダイアログの「同期情報表示」を ON にしてください.また Vid先頭・GPS先頭 のスライダを 0 に設定します.また Vid最後・GPS最後 のスライダを最大値に設定します.
  6. AviUtl のメインスライダなどを使って,走行を開始したとき (車が動き出した瞬間) の映像を表示させ,この状態で Vid 先頭の set ボタンを押してください.(そうすることで,同期情報の「Vid」の「cur.pos」の値を「Vid先頭」スライダにセットできます.)

  7. 「GPS先頭」スライダを調整して,走行を開始したとき (車が動き出した瞬間) のスピードグラフを表示させます.スピードグラフが 0km/h から立ち上がった箇所と画面下中央の縦棒が重なるよう,「GPS先頭」スライダを調整します.
  8. 同期情報の 2つの「range」が最も近くなるよう,「Vid最後」または「GPS最後」スライダを調整します. (表示の意味は画面表示説明を参照してください.)
    完全に値を一致させる必要はありません.「Vid最後」か「GPS最後」どちらか一方のスライダを調整すれば十分です.
  9. AviUtl メニューの表示→再生ウィンドウの表示 で実際に再生してみて,同期にずれがないか確認します.動画とメーターがずれているときは,以下を参考にスライダを微調整してください.
    Vid先頭 付近のずれ Vid最後 付近のずれ
    動画よりメーターが早い GPS先頭 の数値を下げる or
    Vid先頭 の数値を上げる
    GPS最後 の数値を下げる or
    Vid最後 の数値を上げる
    動画よりメーターが遅い GPS先頭 の数値を上げる or
    Vid先頭 の数値を下げる
    GPS最後 の数値を上げる or
    Vid最後 の数値を下げる
  10. ラップタイムを計測・表示する場合は,下の「簡易ラップタイム計測」を行ってください.
  11. 必要であれば,「*.cfg ロード・セーブボタン」で,各種設定・mark 情報 (ラップタイム情報) をセーブすることができます.
  12. すべての調整が終わったら,「VSDメーター合成」ダイアログの「同期情報表示」を OFF にしてください.後はメニューの ファイル→AVI出力 で avi ファイルの書き出しを行ってください.

簡易ラップタイム計測

 VSD では,簡易的にラップタイムを計測し,画面に表示することができます.2種類の計測モードがあります.

自動計測モード

  1. 「VSDメーター合成」ダイアログの「ラップタイム」チェックボックスにチェックを入れます.
  2. 「VSDメーター合成」ダイアログの「Start幅」スライダでスタートラインの幅を設定します.幅[m]×10 の値を設定します.(必ず 0 以外の値を設定してください)
  3. AviUtl のスライダバーを使うなどして,スタートラインなどの目印になる場所を通過する瞬間のフレームを表示させます.
  4. 「M」キーを押します.タイトルバーに [mark] と表示され,またラップタイム表示が更新されるのを確認してください.マークを解除するには,もう一度「M」キーを押します.

    ※「M」キーを AviUtl のショートカットキーに割り当てている場合は,別のキーに割り当てなおしてください.
  5. スタートラインを通過し損ねている,または間違って通過したと認識されたラップがないか確認します.必要であれば「Start幅」を調整したり,マークするフレームを別のラップに変えてみてください (マークするフレームを変えるときは,マーク済みのフレームのマークを解除してください).
    また「同期情報表示」ON 時は,走行軌跡にスタートラインが表示されますので,調整の目安にしてください.
    ちなみに,自車方位が ±45度以上ずれているときは,スタートラインを通過しても新しいラップとは認識されません.

手動計測モード

  1. 「VSDメーター合成」ダイアログの「ラップタイム」チェックボックスにチェックを入れます.
  2. 「VSDメーター合成」ダイアログの「Start幅」スライダを 0 に設定します.
  3. AviUtl のスライダバーを使うなどして,スタートラインなどの目印になる場所を通過する瞬間のフレームを表示させます.
  4. 「M」キーを押します.タイトルバーに [mark] と表示され,またラップタイム表示が更新されるのを確認してください.マークを解除するには,もう一度「M」キーを押します.
    ※「M」キーを AviUtl のショートカットキーに割り当てている場合は,別のキーに割り当てなおしてください.
  5. 次にスタートラインを通過するフレームを表示させ,マークをつけます.動画のスタートラインを通過するフレームごとに,この作業を繰り返します.

AviSynth 用プラグインについて

 v1.00 から AviSynth 用プラグイン DLL を同梱しました.MediaPlayerClassic 等,*.avs (AviSynth スクリプト) を直接再生できるプレイヤーを使うと,AviUtl で再エンコード出力せずにメーター合成後の動画を再生できます.
 「*.cfg ロード・セーブボタン」で *.cfg を保存してある場合,その内容がほぼそのまま AviSynth スクリプトとして使用できるようになっています.

 残念ながら AviSynth については説明しきれませんので,ここではプラグインで利用できるフィルタの説明のみします.

VSDFilter (clip, string "gps_file", string "font",
	int "video_start", int "video_end", int "gps_start", int "gps_end",
	int "speed_meter", int "map_length", int "map_size", int "map_angle",
	int "g_length", int "start_width", int "aspect_ratio", int "lap_time",
	int "meter_pos", int "meter_cx", int "meter_cy", int "meter_r",
	int "g_scale", int "meter_adjust", int "font_size", string "mark")
パラメータ名説明
string "gps_file" 読み込む GPS ログファイル名 (*.nmea *.dp3) を指定します.
string "font" 表示に使用するフォント名を指定します.
int "video_start" 設定スライダの「Vid先頭」と同じ値・意味です.
int "video_end" 設定スライダの「Vid最後」と同じ値・意味です.
int "gps_start" 設定スライダの「GPS先頭」と同じ値・意味です.
int "gps_end" 設定スライダの「GPS最後」と同じ値・意味です.
int "speed_meter" 設定スライダの「スピード」と同じ値・意味です.
int "map_length" 設定スライダの「Map秒」と同じ値・意味です.
int "map_size" 設定スライダの「Mapサイズ」と同じ値・意味です.
int "map_angle" 設定スライダの「Map回転」と同じ値・意味です.
int "g_length" 設定スライダの「G長さ」と同じ値・意味です.
int "start_width" 設定スライダの「Start幅」と同じ値・意味です.
int "aspect_ratio"設定スライダの「Aspect比」と同じ値・意味です.
int "lap_time" 1を指定すると,ラップタイムが表示されます.
int "meter_pos" 1を指定すると,メーターパネルが右に表示されます.
int "meter_cx" メーターパネル中心の x 座標を指定します.
int "meter_cy" メーターパネル中心の y 座標を指定します.
int "meter_r" メーターパネルの半径を指定します.
int "g_scale" G ボールがメーターパネル外周にあるときの G の値 * 1000 を指定します.
例えば 1500 を設定した場合,1.5G のときに G ボールがメーター外周に位置します.
int "font_size" フォントサイズをピクセル数で指定します.
string "mark" 簡易ラップタイム計測で,マークしたフレーム番号を「,」で区切ってつなげた文字列を指定します.

既知のバグ

変更履歴

v1.06c ・*.cfg ロード時に不正終了する場合があるのを修正
v1.06b ・速度・方位が記録されていない NMEA ファイルに対応
・タイム差分表示の精度を改善
v1.06a ・細かいバグ修正
・default フォントを Arial にしてみた
v1.06 ・設定ダイアログを見直し
v1.05 ・解像度によってフォントの大きさを変え,高解像度の動画でのメーターパネルの見栄えを改善した.
・フォントを変更可能にした (方法わっかりにくいけど)
・[AviSynth] font パラメータ追加
v1.04c ・解像度の小さい動画で同期情報のフォントサイズが小さくならないバグ修正
v1.04b ・2本に分かれているスライダバーを 1本にした
・同期情報の表示を変更
v1.04a ・タイム計測の精度をちょびっと向上
・ラップタイム履歴の表示順序をまともにした
・直線描画ルーチンの微妙なバグを修正
v1.04 ・長い動画を扱えないことがあったので修正
v1.03 ・ラップタイム自動計測モードを追加
v1.02 ・*.dp3 で時刻を読み誤る可能性があったのを修正
v1.01 ・*.dp3 で走行軌跡の縦横比がおかしかったのを修正
v1.00 ・*.dp3 (LAP+ 用ログファイル) をリードできるようにした
・AviSynth 用プラグイン追加
βv0.92 ・メーターパネルのアスペクト比変更設定を追加
・4G 以上の横 G は異常なデータとみなし描画対象から外した
βv0.91 ・横G の動きが変になる場合があるのを修正
・スピードメーターに対して G ボールの動きが進んでいたのを修正
βv0.90 最初のバージョン公開
Special thanks: ふくながさん,373@dp3さん

戻る