九州のごみすてば

九州のごみすてば

あああああ

MENU

【AviUtl】字間を揃えて文字を左からシャッフルできるスクリプト、遂にできる

4年越しの悲願が達成されました

記事を読む前に

さっさと使い方教えろって人はもくじから「つかいかた」に飛んでください

 

前回の記事ではクソめんどくさいやり方で字間の揃った文字シャッフルを「再現」しましたが、ePiさんの「指定範囲の文字シャッフル」スクリプトの登場により実用性が0.0000001くらいだったのがゼロになりました

なので前回の記事は完全にエンタメとして読んでください


あと私はしがない音MAD作者であり、スクリプトの扱いに関してはド素人なので間違ってるところがあるかもしれません コメントで遠慮なく指摘してください

 

従来のシャッフル系スクリプトの残念ポイント

要はテキストが左からブワアァァって出てきて、左から順にブワアァァってシャッフルが止まっていくのがやりたかったんですよ

しかしテキストをシャッフルするスクリプトは世の中に数あれど、このAviUtlユーザーのニーズを満たすものはこれまでなかなかありませんでした 主語をでかくしない

 

TAランダム文字で登場スクリプト

例えば皆さんご存じさつきさん謹製のスクリプト

たぶん全人類のAviUtlに入ってます

 

↓一番の問題点はこれ

このように字幅が異なるプロポーショナルフォントでは字間がクソガバになります

仕様上カーニングもできません ナンテコッタイ

中国語やハングルをシャッフルしたいときに使いましょう 等幅フォントって使う機会ある?

 

文字スワップ(ミックスレター)スクリプト

こちらはrikkyさん謹製のスクリプト

 

↓問題点はこれ わかりますか?

※「文字スワップスクリプト」単体では左からブワアァァって登場させることはできないので、さつきさんのTA標準登場をかけてます

これシャッフルの完了する順序がランダムなせいで、見栄えがよろしくありません*1

左から順に止まってくやつがやりたかったのに

根気強く乱数調整すればできないこともないのかもしれません

 

ほかにもシャッフル系のスクリプトはいくつかありますが割愛

 

「指定範囲の文字シャッフル」スクリプトを使おう

なにそれ

AviUtlでキレイな文字シャッフルをやりたいオタクの奮闘記」を公開してからたったの2時間後、ePiさんが作ってしまったようです つよい

しかも上記にあった残念ポイントを克服してしまいました 圧倒的感謝っ・・・!

この4年間の涙はなんだったのだ

このスクリプトの本質はePiさん曰く、

「テキストの設定ダイアログのテキストボックスの中身を並び替える」ものだそうで、

これ単体でテキストが左からブワアァァって登場するようになるわけではありません あくまでできるのはシャッフルのみ

 

つかいかた

必要なもの

ここでは「指定範囲の文字シャッフル」のページ最下部にある「もっともっと楽したい」のやり方を採用します

 →指定範囲の文字シャッフル - ePi

 

必要となるのは「シャッフルテキスト定義.obj

普段スクリプトを置いているフォルダに入れておけばいいと思います

 

それとLuaJITのver2.1.0-beta3も必須になります

→バージョンは(多分)問いませんがこれ使うのを推奨します

導入方法は↑のePiさんの記事を参照してください たぶん躓くところはないはず

 

あとAviUtlの環境ですが、拡張編集はver0.92を使ってください というかそれ以外使ってはいけない

 

これで合ってますかね? 不安です

 

試してみよう

まずテキストオブジェクトを用意して、テキストボックスに

任意のテキスト<?shuf()?>

と入力します

ここでは任意のテキストを「MINAMI-NOBEOKA」とします

あと「文字毎に個別オブジェクト」にチェックを入れてください

テキストの拡大率は100にしましょう

 

f:id:ArchivE_NcaxaR_9:20210909185720p:plain

こんな風になったらOKです

 

次にカスタムオブジェクトから「シャッフルテキスト定義」スクリプトを呼び出します

カスタムオブジェクトはテキストのあるレイヤーの上に置いてください

f:id:ArchivE_NcaxaR_9:20210909190021p:plain

この時点で、「置換数」のパラメータをぐりぐり動かしてみて、テキストがシャッフルしたら導入成功です おめでとうございます

 

いじるパラメータは基本的に「置換数」「範囲(左)」「範囲(右)」の3項目だけです

 

「置換数」は文字をシャッフルする回数です 0だとなにも入れ替えません

 

「範囲」ではシャッフルするテキストの範囲を決めます

例えば「範囲(左)」が0で「範囲(右)」が100のときに置換数を動かすと、テキスト全体がシャッフルされます

 

「範囲(左)」が50で「範囲(右)」が100の場合、テキストの後半部分がシャッフルされます

 

範囲の値が左>右だと挙動がバグります やめましょう

何も起こらないように修正されました 動かねえってときは左右の値を疑ってみてください

 

作ってみよう

それでは「シャッフルテキスト定義」のパラメータをいじって、MINAMI-NOBEOKAをブワアァァしてあげましょう

 

まずシャッフルが止まり始めるところに中間点を打ちます

スクショで表すとこんな感じ

f:id:ArchivE_NcaxaR_9:20210909224145p:plain

 

「置換数」はひとまず300→0で動かします

移動方法は「中間点無視」にセット

起点の置換数が小さすぎると入れ替わらない文字が出てきてしまうので大きい方がいいと思います

「一部の文字が入れ替わらない」という問題が発生した場合は起点の置換数の数値を大きくしてみてください

 

「範囲」は(左)のほうを0→0→100で「直線移動」

(右)はここでは100で固定にします

ここまでのパラメータ設定はこんな感じ

f:id:ArchivE_NcaxaR_9:20210909224849j:plain

それぞれ中間点より前の部分、中間点より後の部分

 

これでちょっと再生してみましょう

ちゃんと左からシャッフルできてますね

ここまで来たらもう後は勝ち確です

 

最後のとどめとして、テキストを左から登場させるために、さつきさんの「TA標準登場」のメディアオブジェクトをテキストの下のレイヤーに設置しましょう

設置方法は「タイムラインを右クリック→メディアオブジェクトの追加→フィルタ効果の追加→基本効果→アニメーション効果」から

※ていうか「拡張ツールバー」使って

※ていうかテキストオブジェクトの表示速度いじればよくね???

※そもそもわざわざこんなことしなくても普通にテキストオブジェクトに直接かければいいじゃん やらかし

パラメータはお好みです

MINAMI-NOBEOKAを左からブワアァァさせることに成功しました やったね

かがくのちからってすげー!

 

TA標準登場の時間[s]と拡大率もいじるとワンランク上のブワアァァになります

 

ちなみに「範囲(左)」を0で固定して、「範囲(右)」を100から0に動かすと右側からブワアァァすることもできます

※TA標準登場の「登場順」を1にするのも忘れないでね

また、1フレームずつ文字がシャッフルされるのが嫌なら時間制御でコマ落ちをかけるといいと思います

これはこれでイカ

 

それと、「なんかシャッフルしないんだけど」と思ったら設定ボタンから「再定義」にチェックを入れて、すぐ外してみてください 直るかもしれません

※ePiさん曰くデバッグ用の側面が強いとのこと これが本来の用途ではないらしい

 

こんなもんですかね? 解説記事とかほぼ書いたことないので説明不足な点とかあったらどしどしご抗議ください

 

【余談】「MINAMI-NOBEOKA」ってなんだよ

宮崎県延岡市構口町(かまえぐちまち)一丁目5429-2にある九州旅客鉄道JR九州)・日本貨物鉄道JR貨物日豊本線の駅である[1]南延岡駅(みなみのべおかえき)さんじゃないですか

f:id:ArchivE_NcaxaR_9:20210909161013j:plain

隣駅表示の書体がなぜか平成ゴシックなのクソキモくてすき

f:id:ArchivE_NcaxaR_9:20210909160237j:plain

小さい駅舎の脇にある階段上った先に入口があって、2階から入場します

駅舎と跨線橋が直接連絡してるんですね

バリアフリーとかクソくらえと言わんばかりの構造

f:id:ArchivE_NcaxaR_9:20210909160828j:plain

おもしろい駅舎でしょ

 

え、おもしろくない? そうですか…

 

 

*1:逆にそっちの方が重宝するって人もいるかも