スクリプト

TextBackplate

概要

テキストの背面に図形を追加するスクリプト

詳細説明

AviUtl2-TextBackplate

AviUtl2用の、テキストの背面に図形を追加するスクリプト

作成者: [なたのこ/Natadecoco_2539]

概要

TextBackplateは、AviUtl2用のスクリプトです。
文字に対して、四角形・多角形・円形・ギザギザ形状などの背景を簡単に作成できます。
テキストの「個別オブジェクト」を有効にすると、各文字へ1枚ずつ背景を追加できます。無効の場合は、文字列全体に対して1枚の背景を追加します。

仕様

基本動作

本スクリプトは、対象の文字画像または文字列画像に対して、次の順番で処理を行います。

  1. 元の文字画像を一時的に保存
  2. 指定された形状の背景プレートを生成
  3. 背景プレートの上へ元の文字画像を重ねる
  4. 背景と文字を1枚の画像として合成
  5. 合成後の画像へ、サイズと文字別回転のアニメーションを適用
  6. 元の文字位置・本体側の回転・拡大率などを維持したまま表示

背景と文字を合成してからアニメーションを行うため、サイズや文字別回転を設定した場合は、背景と文字が同じタイミングで動きます。

個別オブジェクトの動作

テキストの「個別オブジェクト」を有効にした場合、AviUtl2から渡される文字番号と文字数を使用して、各文字を個別に処理します。

各文字には次の処理が個別に適用されます。

  • 背景プレートの生成
  • サイズアニメーション
  • X・Y・Z軸回転
  • 文字間隔による開始時間のずれ
  • 表示順の変更
  • 空白文字の背景非表示

「個別オブジェクト」を無効にした場合は、文字列全体を1つの画像として処理します。

背景サイズ

背景サイズは文字画像の幅や高さから自動計算せず、設定した値を全ての文字へ共通で使用します。

そのため、文字によって背景の大きさが変わらず、複数の文字を同じサイズのプレートへ揃えられます。

背景の高さは「背景サイズ」、横幅は「背景サイズ」と「縦横比」から決まります。

背景の高さ = 背景サイズ
背景の横幅 = 背景サイズ × 縦横比 ÷ 100

背景形状

背景形状は、指定した頂点数から多角形を生成して描画します。

  • 頂点数3:三角形
  • 頂点数4:四角形
  • 頂点数5:五角形
  • 頂点数6:六角形
  • 頂点数20:細かい多角形
  • 頂点数48~64:円に近い形状

偶数の頂点数では、四角形などが画面の軸に対して自然な向きになるように角度を調整しています。

内部では頂点数を3~256に制限しています。

角丸・くぼみ

「角丸・くぼみ」は、-100~100の範囲で形状の角を変更します。

正の値

多角形の角を丸めます。

各頂点の前後を切り取り、二次ベジェ曲線で補間して角丸形状を作ります。

30:軽い角丸
60:大きな角丸
100:最大に近い角丸

0

通常の多角形になります。

負の値

各頂点の間に内側の頂点を追加し、ギザギザや星形に近い形状を作ります。

-20:軽いギザギザ
-50:深めのくぼみ
-100:強い星形

オフセット

オフセットは背景プレートだけに適用されます。

  • X:背景だけを左右へ移動
  • Y:背景だけを上下へ移動
  • 回転:背景だけを回転

文字自体の位置や向きは変更しません。

空白文字の判定

「空白文字は描画しない」を有効にすると、現在の文字画像のアルファ値を確認します。

不透明なピクセルが1つも存在しない場合、その文字を空白として扱い、背景プレートを描画しません。

文字そのものは削除しないため、スペースの幅や文字間隔は維持されます。

ただし、本スクリプトより前の効果で文字を完全透明にした場合も、空白として判定されます。

アニメーション

対応している項目:

  • サイズ
  • 文字別X軸回転
  • 文字別Y軸回転
  • 文字別Z軸回転

サイズ

アニメーション欄の「サイズ」は、背景の形状サイズではなく、背景と文字を合成した画像全体の倍率です。

100:等倍
50:50%
150:150%

形状欄の「背景サイズ」は完成後の背景そのものの大きさ、アニメーション欄の「サイズ」は動作中の倍率です。

文字別回転

文字別X・Y・Z軸回転は、各文字の開始時間を基準にして動作します。

そのため、「文字間隔」を設定した場合は、各文字が表示されるタイミングから個別に回転が始まります。

標準描画の回転との違い

標準描画の回転と、本スクリプトの文字別回転は別の処理です。

標準描画の回転

  • 文字列全体の時間に従って進行
  • まだ表示されていない文字にも同じ回転状態が適用される
  • 文字列全体をまとめて傾ける、回す用途向け

本スクリプトの文字別回転

  • 各文字の開始時間を基準に進行
  • 文字が表示されるタイミングから個別に回転が始まる
  • 一文字ずつ開く、回りながら出る用途向け

両方は加算して適用されるため、併用できます。

文字間隔

「文字間隔」は、各文字のアニメーション開始時間をずらす秒数です。

例:

文字間隔:0.04

先頭から表示する場合、各文字の開始時間は次のようになります。

1文字目:0.00秒
2文字目:0.04秒
3文字目:0.08秒
4文字目:0.12秒

開始

「開始」は、全体のアニメーションが始まるまでの待機時間です。

開始時刻より前の文字は非表示になります。

順序

文字の開始順を次から選択できます。

  • 先頭から
  • 末尾から
  • 中央から
  • 外側から
  • 同時

中央から・外側からでは、文字列の中央位置からの距離を使用して開始順を決定します。

注意事項

  • フォントによっては、文字画像の内部基準や余白が文字ごとに異なるため、
    背景位置がずれる場合があります
  • 全体が均等にずれる場合は、オフセットのX・Yで調整してください
  • 「空白文字は描画しない」は、文字画像が完全透明かどうかで判定しています
  • 本スクリプトより前の効果で文字を完全透明にしている場合も、
    空白として扱われることがあります