patch.aul
↑なまえがかっこいい
DL: https://github.com/ePi5131/patch.aul/releases
今の最新: r40 patch.aul 旧バージョン
https://youtube.com/watch?v=MM5ZL7xxv7g
https://nico.ms/sm39491708
https://twitter.com/ePi5131/status/1449662856144642055 RT用
概要
AviUtl version 1.10 / 拡張編集 version 0.92のバグを直したり機能を追加するプラグインです
修正
AviUtl
脱字修正
メニュー文字列を実態に即したものに変更
拡張編集
0.93rc1で直ったもの
オブジェクトファイルの入力でトラックバーの-1超0未満の値が正になってしまう
オブジェクトファイルをインポートした時にトラックバーの値が正しく読み込めない場合があったのを修正した。
オブジェクトファイルの入力でトラックバー変化方法スクリプトの名前にASCII以外の文字が含まれているとパラメータを読み込めない
オブジェクトファイルをインポートした時にトラックバー変化方法の設定値が正しく読み込めない場合があったのを修正した。
オブジェクトファイルの入出力でシーン番号を扱えない
オブジェクトファイルをエクスポートした時にシーン番号が正しく保存されないのを修正した。
0.93rc1でも未修正
制御文字<s>でサイズのみを指定していると正しい動作をしないことがある テキストオブジェクトの制御文字のバグ
拡張編集以外のフィルタ(例:拡張色調補正)を使ったプロジェクトをオブジェクトファイルに出力しようとすると例外になることがある
オブジェクトファイルの入出力で、特定色域変換のstatusが2つあって正しく入出力できない
一部フィルタ効果の高速化
現在放射ブラー/極座標変換/閃光が対象です
フィルタ自体のバグも直しました アーティファクトとかいうやつらしいです
テキストの軽量化
Luaの環境の統一 Luaの環境が変わっちゃうやつ、バグだった
obj.randで例外になることがあるものの修正 obj.rand
obj.getvalueで中心座標の情報を取得できるようにした
obj.getvalueでlayerX.timeが正しい値を取得できるようにした
拡張編集ウィンドウと設定ダイアログの描画の最適化
拡張編集ウィンドウの上部をドラッグしても正常にリサイズができるように
レイヤー削除→元に戻すで他シーンのオブジェクトが消える の修正
Ctrlで複数オブジェクトを選択しながら設定ダイアログのトラックバーを動かすと一部オブジェクトが正常に戻らない の修正
オブジェクトの左端をつまんで動かすと再生位置パラメータが変わるが、それが元に戻らない の修正
一部フィルタのファイル参照を変更→元に戻すで設定ダイアログが更新されない(音声波形など) の修正
部分フィルタのマスクの種類を変更してもUndoデータが生成されない の修正
テキストオブジェクトのフォントを変更してもUndoデータが生成されない の修正
テキストオブジェクトの影付き・縁付きを変更してもUndoデータが生成されない の修正
テキストオブジェクトの文字配置(左寄せ上など)を変更してもUndoデータが生成されない の修正
テキストオブジェクトの字間を変更してもUndoデータが生成されない の修正
テキストオブジェクトの行間を変更してもUndoデータが生成されない の修正
グループ制御とかの対象レイヤー数を変更してもUndoデータが生成されない の修正
テキストを変更してもUndoデータが生成されない の修正
スクリプト制御・スクリプト制御(カメラ制御)を変更してもUndoデータが生成されない の修正
左クリックよりレイヤーの表示状態を変更してもUndoデータが生成されない の修正
右クリックメニューよりレイヤーの表示状態を変更してもUndoデータが生成されない の修正
右クリックメニューよりレイヤーのロック状態を変更してもUndoデータが生成されない の修正
右クリックメニューよりレイヤーの座標のリンク状態を変更してもUndoデータが生成されない の修正
右クリックメニューより上クリッピング状態を変更してもUndoデータが生成されない の修正
右クリックメニューより他のレイヤーを全表示/非表示を押してもUndoデータが生成されない の修正
ショートカットよりレイヤーの表示状態を変更してもUndoデータが生成されない の修正
カメラ制御の対象にするかどうかの変更でUndoデータが生成されない の修正
上のオブジェクトでクリッピングの変更でUndoデータが生成されない の修正
テンキーによるオブジェクトへの操作でUndoデータが生成されない の修正
Ctrlを押しながら複数選択した状態で元に戻すをしてオブジェクトが消えると幽霊オブジェクトが出現するのを修正
拡張編集以外のフィルタのトラックバーにトラックバー変化方法スクリプトを適用していると例外になる問題の修正
追加
AviUtl
コンソールの表示
Console Pluginでやっていたものです
標準入出力・エラー出力を流します
表示 メニューに「コンソールの表示」が追加されています
例外への対応
例外発生時にこんなダイアログが出るようになります
https://gyazo.com/103a551ece36e6ef72118266a980fa96
「詳細」を押すと、標準の例外を知らせるメッセージボックスと同等の情報を得られます
「編集プロジェクトの保存」を押すと、現在時点のプロジェクトの保存を試みられます
「詳細情報」には、原因究明に有用な情報が書かれています。
patch.aulのデバッグ情報について
メニューにアクセスキーを追加
ファイル(F) みたいになるやつです
Alt+括弧内のキー を押すと飛べます
拡張編集
Luaのエラー内容のコンソールへの表示
これは赤い文字で表示します エラーが起きていることがわかりやすい
debug_printの内容のコンソールへの表示
これは青い文字で表示します
これらの表示は先頭に時刻を付けられるようになりました
https://gyazo.com/8ee44f91cbee2ba533cc03fdb9fc2717
テーマ変更
ConstChangerで出来ていたことを持ってきました
ConstChangerに無いパラメータもあります
現状jsonファイルを直接弄ってもらうことになります そのうちGUIが生えるんじゃない?
https://gyazo.com/6a770d2562b657737e934307cef29d1b
動画ファイル と 音声ファイル で中間点を打っていないときでもファイルを再参照しても再生位置などの情報を変更しない 設定を追加
どんなときでもpackage.path,cpathにはscriptフォルダを含めるようにした
package.path,cpathにmoduleフォルダを追加
やり直す 実装
動作環境
AviUtl version 1.10
拡張編集 version 0.92
背景
静的変更だけでは,今後直すバグが増えるにつれやれることが少なくなってしまいます
じゃあプラグインから動的に変更して,ついでに1つのプラグインでまるっとやってしまえばいいじゃないかということで作りました
FAQ
なんで1.10/0.92専用なの
逆にそれ以外使ってるの?
1.00じゃなくて1.10なのは、1.00を使う意味が無いからだが...?
1.10対応Aulsメモリ参照 → Aulsメモリ参照プラグイン
1.10/0.92対応rikky_module →
なんか1.00じゃないとどうたらという声は聞いたことがあります 原因を調べるので教えてくれ 直せたら直す
なぜpatch.aulはAviUtl version 1.00に対応させないのか
AviUtl1.00を使っている人は今すぐ1.10に更新しよう
0.93rc1は解析もパッチ当てるのもとてもつらいです
あちこちがインライン展開されてたり、キャッシュの原理をまだ理解してなかったり
解析は0.92でずっと進めてきたので、このほうが楽
そんなに0.93rc1の機能がほしいならpatchで付けに行くから待ってろ
拡張編集 0.93rc1→0.92 移行ガイド 既に0.93rc1を入れてしまっていた方は、こちらを参考に
これ入れたら〇〇のプラグインが動かない
知るか
他の人の作ったプラグインについてはあまり考えたくないです
自分のプラグインばっかりの環境で自分用に作ってたから
そのうち全部配布できたらいいですね
特に他の黒魔術系プラグインとはガンガン競合すると思う
余裕があればなんとかしますが、あまり期待しないこと
なんでこんなにいろんな機能を詰め込んでるの?分けて欲しい
やだ
入れられるプラグインの数には上限があります
や、この方法を使うなら上限関係ないんだけどさ
この手の黒魔術プラグインが増えると、必ず競合が起きてきます
競合を防ぐためには、1つのプラグインができるだけ多くの機能を管轄できるようにすべきです
黒魔術が広まることへの懸念
patch.aul.jsonのswitchを制御することで、その機能に必要になる機能以外の副作用を完全に制御できることを保証します
patch.aulの導入確認はどうやるの?
その他patch.aulというメニューが増えていれば導入に成功しています
認識してくれない
最新のVisual C++ 再頒布可能パッケージを入れてください
OpenCL Effectは使用できませんと表示される
お使いのデバイスがOpenCLに非対応であるために出るものです このままではOpenCLを利用したパッチを使うことはできません
何かソフトウェアをインストールすれば良くなるというものではありません CPUだかGPUだかを新しいものにしてください
patch.aul.jsonのswitch\fast.clをfalseにすることでメッセージの表示を抑制できます
もしOpenCLに対応したデバイスを持っているのに使えないというのであれば、それはバグです 報告して下さい
既知の不具合
patch.aulのデバッグ情報について スタックの目盛りがズレています
r3で直りました
ショートカットキーの設定がずれることがあります
https://misskey.io/notes/8ryx7nfae8
調査中
短時間で連続して例外を出すと「例外ダイアログの生成に失敗」になることがあります
そんなこともあろうかとこのメッセージを用意していましたが、なんとか出来ないか考えますr3で大幅に減ったはずです
Sysinfo::infoのバージョン文字列がおかしな事になってた (r3から)
r5で修正
正常に終了できなくなることがある
条件がわからない
これになるとpatch.aul.jsonが生成されない
OSSにしてから誰かになんとかしてもらおうかな
競合情報
r1
拡張編集RAMプレビューで出力ダイアログが表示されてしまう (r2で解消)
IATフック以外の方法でフックする
拡張編集が...消えた? が使えない
メニューの編集が良くないらしい r5でアクセスキーを付加するかの設定を追加する予定です
r6 beta2で実装 r6でリリース予定されました
patch.aul側で同等の機能を用意することも検討しています
v_func_WndProcをフックするようなプラグインとの競合 (r10で解消)
r3
rikky_moduleの特定機能を使うとrikky_memory.auf+fca6になる (r4で解消)
テーマ機能でレイヤー幅を変更するとごちゃまぜドロップスのD&Dが動作しない
これはごちゃまぜ側にがんばってほしいです https://www.nicovideo.jp/watch/sm39460313 と同じ方法を取ればうまくいくはずです
https://github.com/oov/aviutl_gcmzdrops/releases どうやらv0.4系で直ったらしい?いいね
r11
FlatShadowなど一部のスクリプトが動作しないpatch.aulに対応していないスクリプトについて 1
これはスクリプトの書き方が悪いので、スクリプト作者に↑を読ませてきてください
自分で編集してやるぜ!という人は https://twitter.com/ePi5131/status/1492416595783655424 を読んでがんばって
r13でデフォルト設定をfalseにしました やりたくなかったんだけど...
一部のスクリプトの組み合わせで意図しない挙動になる
r15以降に更新してswitch\lua.envはfalseにしてください
さっぱりわからん なんで?
r13
スクリプト並び替えプラグインのドラッグ&ドロップができない
r14で解消
爆速と競合する(多分)
これ入れたら爆速はいらんだろ笑
r17?
DragFilterとOptimizeEditBoxと競合 起動しなくなる
蛇色さん助けてくれ
r17
Redo.aufと当然競合する気がします
eclipse_fastのredoとも競合する気がします
不明
PSDToolKitと相性が悪いらしいです 断片的な情報しか見れていないのと私が使わないので具体的にどうなるのかはわかりません
なんか同時にLua 5.4を入れてるとか言う話を聞きました どういうことですか?? 【迷信】AviUtlをLua 5.4で高速化する
他に情報を聞かないので↑のせいだと思います 多分競合はしません
集中線で落ちる マジ?そんなにひどいのかこのプラグイン
switch\luaをfalseにしてみる?
集中線は極座標変換をつかうので、OpenCL関係でコケると死にそう そうならswitch\fast.polartransformをfalseにする
技術情報
黒魔術をたくさんしました
なぜ言語拡張リソース(.aul)として作ったか
AviUtlで最初に読み込まれるプラグインがaulだから
aul>auc>aui>auf>auoの順
早く読まれれば読まれるほどいろいろできるようになる
patch.aulは正しい言語拡張リソースとしては読まれません
リソースの書き換え
リソース関連の関数をすり替えた
ユーザーに言語を選択させる手間を掛けさせたくなかった
正しい言語拡張リソースとして読ませると面倒なことになる
選択しないとキャッシュが効いてLoadLibraryしてくれなくなって、何もできない
プラグインとコーデックの情報をキャッシュする?
キャッシュの回避方法は見つけたけど、今の方法を思いついてから没になった
Luaのエラーとdebug_print
Console PluginではOutputDebugStringA全体をフックしていましたが,それぞれのOutputDebugStringAを呼ぶ場所を書き換えることにしました
呼ぶ場所によって関数を変えられるようになったので、文字の色を区別できるようになります
例外ダイアログ
1.10でなんか__fastcallになっててビビった
どうにか自前の関数までジャンプさせるように機械語を書く
任意の関数をフックする
拡張編集のウィンドウの高速化
10036a70の書き換え方
patch.aulがいかにしてダブルバッファリングを実装したか
任意の関数をフックする 2
関連ツール
https://github.com/hebiiro/AviUtl-Tool-patch.aul.json.gui
GUIでpatch.aul.jsonを編集できます jsonわけわからんって人は使ってみるといいんじゃないでしょうか
https://github.com/masteralice3104/aviutl_Plugin_Update_Checker
patch.aulの自動アップデータです patch.aul以外でも使えるらしいです
その他
exoファイルでシーン番号を正しく入出力できないのを直すやexoを読み込むとトラックバーのパラメータが0になってしまうやつを直す、ConstChangerでのテーマ変更をしていた人は、編集前のexedit.aufを使うようにしてください
Console Pluginを入れていた人は、これが完全上位互換になるので抜いて下さい(なんかうまく動いてなかったらしいね)
翻訳システムは自分で作ったので、うまい言語拡張リソースを使うことでやってください
今のラインナップは、特に安定している機能だけ選んできたものです
安定性が確認されればどんどん機能が追加されていくはず
苦節1年
いよいよ0.93rc1を使う意味が消えたと思うので、帰ってこい
#AviUtl #AviUtlプラグイン #配布
#パッチ