SVG_TRACE
概要
画像やレイヤーをベクター化して SVG で描画・書き出す
詳細説明
SVG_TRACE
画像ファイルや別レイヤーの絵をトレースしてベクター(SVG)に変換し、その結果を表示するカスタムオブジェクトです。
白黒の二値か、2 ~ 16 色のカラーでトレースできます。トレースした SVG は、オブジェクトメニューから
SVG_H のオブジェクトとして取り込めます(線や塗りを編集するため)。「自動書き出し」を ON にすれば、ファイルにも書き出します。
- バージョン:
SVG_TRACE.obj2v0.1.3 / プラグイン svg_trace v0.1.3(スクリプトモジュールsvg_trace.mod2と汎用プラグインsvg_trace.aux2の組) - 作者: by HexBrowns
- 必要環境: AviUtl2 2.1.10 以上
インストール
- Releases から zip をダウンロードして展開する
- 中の
PluginフォルダとScriptフォルダを、AviUtl2 のデータフォルダ(既定はC:\ProgramData\aviutl2)へコピーする。
下の表の 3 つが置かれます - AviUtl2 を再起動する(起動中にコピーした場合も、再起動するまで読み込まれません)
- オブジェクトの追加から「SVG_TRACE」を置く(HexScript の中)
| パス | 内容 | 必須か |
|---|---|---|
Script\svg_trace\SVG_TRACE.obj2 |
カスタムオブジェクト本体 | 必須 |
Script\svg_trace\svg_trace.mod2 |
トレースとラスタライズを行うモジュール | 必須 |
Plugin\svg_trace\svg_trace.aux2 |
SVG の書き出し先の切り替えと、「SVG_Hへ送る」「最新SVGを確認書き出し」メニュー | 書き出し先をプロジェクトの隣にするとき・SVG_H へ送るときに必要 |
「SVG_Hへ送る」を使うには、SVG_H(Plugin\svg_h\svg_h.aux2)も入っている必要があります。
SVG_H は HexBrowns/svg_h の Releases から入れられます。
svg_trace.mod2 が読み込めないときや、トレースに失敗したときは、何も表示されません(エラーも出ません)。
ビルド(開発者向け)
リポジトリのルートで実行します。ビルドした .mod2 と .aux2、SVG_TRACE.obj2 を C:\ProgramData\aviutl2 の下(上の表の場所)へ配置します。
.\build.ps1
使い方
画像ファイルをトレースする
- 「SVG_TRACE」オブジェクトを置く
- 入力 をファイル(初期値)のまま、画像ファイル でトレースしたい画像を選ぶ
- モード を選ぶ。二値は黒いインクだけ、カラーは色ごとの面になる
- 二値なら 二値閾値、カラーなら 色数 で見え方を整える。細かいゴミが多ければ スペックル除去 を上げる
別レイヤーの絵をトレースする
- 入力 をレイヤーにする
- レイヤー位置 と レイヤー で読み込むレイヤーを決める。初期値(相対指定・1)は、SVG_TRACE の 1 つ下のレイヤー
- モードなどは上と同じ
読み込んだレイヤーは、そのまま画面にも描かれます(SVG_TRACE が隠すことはありません)。
SVG_H で編集する
- トレースした後、タイムラインのオブジェクトを右クリックし、「SVG_TRACE」→「SVG_Hへ送る」を選ぶ
- 最後にトレースした SVG を読み込んだ SVG_H オブジェクトが、マウスのあるレイヤー・フレームに作られる
SVG_H が読むのは、最後にトレースした結果(Plugin\svg_trace\latest_trace.svg。下の「SVG の書き出し先」)を
書き出し先のフォルダへ handoff_{時刻}.svg として複製したファイルです。後でトレースし直しても、作った SVG_H の中身は変わりません。
自動書き出しが OFF のままでも使えます。
SVG_TRACE を 2 つ以上置いているときは、どれであれ最後にトレースした方が送られます。
パラメータ
入力の設定
| 項目 | 範囲 / 選択肢 | 初期値 | 説明 |
|---|---|---|---|
| 入力 | ファイル / レイヤー | ファイル | トレースする元 |
| 画像ファイル | ファイル選択 | (空) | 入力がファイルのときにトレースする画像。空なら何も表示しない |
| レイヤー位置 | 絶対指定 / 相対指定 | 相対指定 | 入力がレイヤーのときの、「レイヤー」の数え方。絶対指定はレイヤー番号そのもの、相対指定は SVG_TRACE のレイヤーからの差(プラスで下のレイヤー) |
| レイヤー | -100 ~ 100 | 1 | 読み込むレイヤー。自分自身のレイヤーや 0 以下の番号になるときは何も表示しない |
トレース
| 項目 | 範囲 / 選択肢 | 初期値 | 説明 |
|---|---|---|---|
| モード | 二値 / カラー | 二値 | 二値は明るさで白黒に分け、黒い部分だけをインクとして残す(白い部分は透明)。カラーは色ごとの面に分ける |
| 色数 | 2 ~ 16 | 8 | カラーのときの色の細かさの目安。多いほど色の段階が細かくなる。二値では使わない |
| 二値閾値 | 0 ~ 255 | 128 | 二値のとき、明るさがこの値より暗い部分をインクにする。上げるほどインクが増える。カラーでは使わない |
| スペックル除去 | 0 ~ 64 | 4 | この大きさ(ピクセル)より小さい点やかけらを捨てる |
| 角閾値 | 0 ~ 180 | 60 | 輪郭の曲がり方を角として残すかの基準の角度(度) |
書き出し
| 項目 | 範囲 | 初期値 | 説明 |
|---|---|---|---|
| 出力SVG | ファイル選択 | (空) | 自動書き出しのとき、書き出し先フォルダとは別にもう 1 本書くファイル。空なら書かない |
| 自動書き出し | ON / OFF | OFF | ON のとき、トレースするたびに書き出し先フォルダへ SVG を書き、「出力SVG」も上書きする(下の「SVG の書き出し先」)。OFF なら書き出し先フォルダには何も作らない |
SVG の書き出し先
トレースするたびに、最後の結果を Plugin\svg_trace\latest_trace.svg の 1 本だけに上書きします(中身が同じなら書きません)。
「SVG_Hへ送る」と「最新SVGを確認書き出し」はこれを読みます。
自動書き出しが OFF のときは、これ以外のファイルを作りません。 ON にすると、トレースするたびに次のフォルダへ書き出します
(OFF から ON にしたときは、その場でトレースし直して書きます)。
| 状態 | フォルダ |
|---|---|
| プロジェクトを保存済み(開いた・保存したとき) | プロジェクトと同じフォルダの SVG_export\ |
| 未保存 | Plugin\svg_trace\export\ |
| 入力 | ファイル名 |
|---|---|
| ファイル | {画像名}_{000 からの連番}.svg(トレースし直すたびに番号が増える) |
| レイヤー | layer{レイヤー番号}_{フレーム番号}.svg |
どちらの場合も、同じフォルダの latest.svg が最新の結果で上書きされます。出力SVG にファイルを選んでいれば、そこにも同じ結果を上書きします。
エクスポートメニューの「SVG_TRACE」→「最新SVGを確認書き出し」を選ぶと、最後にトレースした結果(latest_trace.svg)を、
上の書き出し先のフォルダに trace_{時刻}.svg として複製します。自動書き出しが OFF でも使えます。
フォルダの切り替え(と「SVG_Hへ送る」「最新SVGを確認書き出し」で複製するフォルダ)は svg_trace.aux2 が決めます。
入っていないときは、前回の書き出し先か Plugin\svg_trace\export\ のままになります。
注意
- トレースは重い処理です。 設定を変えるとトレースし直します。レイヤー入力ではフレームごとにトレースし直します。
自動書き出しを ON にしていると、そのたびにlayer…_{フレーム}.svgが書き出され、動画を出力するとフレームの数だけ SVG ファイルができます - ファイル入力では、同じパスの画像ファイルを上書きして差し替えると(大きさか更新日時が変われば)トレースし直します
- 長辺が 2048 ピクセルを超える画像は、長辺 2048 に縮めてからトレースします。表示される大きさも縮めた後の大きさになります
- レイヤー入力では、読み込むレイヤーのフィルタ効果は掛かっていない状態の絵をトレースします
- カラーでは、半透明の部分は色をそのままにして不透明として扱います(完全に透明な部分だけが透明のまま残ります)
- SVG_TRACE を 2 つ以上置いても、それぞれが自分のトレース結果を表示します(v0.1.2 までは、別の SVG_TRACE の結果に入れ替わることがありました)。ただし「SVG_Hへ送る」で送られるのは、最後にトレースした方です