AviUtlでNCSのASもどきを作る
これが今回作るやつの完成例となります
https://scrapbox.io/files/662f139255130a00252e98fc.mp4
きょく:PIKASONIC - Friendship
発想としては2022年10月からあったやつです
こうして形にできてうれしい
───────前置き───────
NCSのオーディオスペクトラム(以降AS)は皆さん誰でも分かりますよね
真面目に作ろうとするとAfterEffects+Trapcode Formとかいう学生殺しの金額を提示されるハメになるあれです
あれです
https://www.youtube.com/watch?v=KLtn2qA7WxE
これです
これの右のやつ
です
ちなみにこの曲はSurvivioプレイヤーなら分かる人がいるはず
これをね、
これをだね、
AviUtlで作りたいと思うわけですよ、0円でね。
───そもそもこれはなんやねん───
結論から言うとこのASは
点の集まりをノイズに基づいて変位させたもの を 球面上に押し出したもの
です。
スクリプトを書いてる人の動画が分かりやすいのでこれ見てください(0:32~)
https://www.youtube.com/watch?v=19UrTG5fV_4
スクリプトあるやんけと思ったそこの君、これは有料スクリプトや
良心的価格なので別に買えないこともないけど俺はケチなので0円で追究するよ
LUAが書けちゃう人は仕組みさえ分かれば自作スクリプトで終わらせてしまえるのでしょうが、
アタマポンコツの俺にはそんな高度なことはできないということで既存スクリプトに頼っていきます。
この変なASが動いてる様を見るだけでは中々仕組みなんて分かんないもんですが案外単純なんです。
//球面上に押し出すってどういうこと
//こういうこと↓
https://scrapbox.io/files/662d014935178900264928a9.mp4
─────ほなやっていくか─────
要は点を敷き詰めて、ノイズで変位させて、球面に押し出す、という手順をAviUtl内で再現すればいいということですから、
点を敷き詰めると言えば!!
はい、Getcolorですね。いつもお世話になっております。
ということで主に使うスクリプトはRespectrum93さんのGetColorV2Rです。
もはやこれを作るためにあるかのようなスクリプト。
Getcolorの基本的な扱いについては(俺じゃなくとも説明してる人がたくさんいるので)省略します。
今回はNoiseとPositionでFractal Fieldを、
FieldでSpherical Fieldを作ります。
必要なものが揃いすぎていて、もはや今までGetcolor利用のNCSのASが作られていなかったのが驚きです。
◆必要なもの
GetColorV2R
rikky-module
音声同期tra
今回はrikky-moduleを使って自作
◆レイヤー構成
L1. 音声
ASの対象になる音声(音楽)
L2. カメラ制御
置くだけでいい
L3. AS本体
後述
L4. Spherical fieldの対象
後述
https://gyazo.com/8330a82ab752fc9af88bb4543c25e19f
この構成が一番望ましいと思われます。もっとも、これは作業するに耐えない重さを誇るので、別の動画内に直接組み込むというのは避けるべきです。黒背景で出力して後からスクリーン合成という手法をとるのが妥当でしょう。
あとこれはGetcolorの利点なんですが、本体が1レイヤーで済むためレイヤーは煩雑になりません(その1レイヤーの中身が命)。
◆レイヤー3 本体
◇←音声同期させるパラメーター
デフォルトからの変更点のみ記述していきます。
各パラメーターは様子を見ながら自分で調節してみてください。(←だいじ)
https://gyazo.com/7e49f9de757ed89771fb627f5fb4df4b
図形
四角形
カメラ制御ON
透明度
75±10くらいを推奨
余談:Ae他では基本"不透明度"なのに対しAviUtlは"透明度"なので面倒
サイズ
適宜調節
色
後からどうにでもなるので適当でいい
──────────────────
Noise
Scale
メインノイズの細かさ。Gainの調節を使いたいのでOctavesによるサブノイズを中心に作っていきます。よってこのScaleは基本2で固定で良いと思います。
Lacunary
Dialog内で設定する最大値を細分化したもの⇔サブノイズの細かさ
◇Gain
Fractal FIeldの変位の大きさ。下端は0固定ですが上端はtraでとる音域に大きく依存するので要観察
Affect
後述するPositionのRandomとノイズの影響度。これは100で固定します。下げると整列が崩れて粉みたいになります。
Dialog
Octaves
メインのノイズに加える細かいノイズ。実はこれが主人公
Lacunary
Octavesによるサブノイズの細かさ(トラックバーの最大値)
GainMax
0.25固定
Evolutiontime
ノイズの時間変化。下記Wind Zでも指定可
Wind X Y Z
ノイズの時間変化。本家NCSはYのみで-3ほど。なおZはEvolutiontimeと正負が逆な全く同じパラメーター。なにこれ
──────────────────
Field
◇Radius
球の影響半径。図形サイズなどに依存
◇Strength
押し出す力。これも図形サイズに依存
Dialog
FieldLayer
Spherical Fieldに使うレイヤー。ここでは4を指定
──────────────────
Position
Random
変位の大きさ。NoiseのGainで調節するので100固定くらいが適切
Dialog
RandAmount
Randomの値を単位にしたxyzそれぞれの影響度。今回は{1,1,2}だが適宜調節
──────────────────
Mein
Size
点一つひとつのサイズ。Dialog内の分割数と相談して決めましょう(3~6を推奨)
Dialog
分割数
悪魔の数字。x*yはエンコード時間に比例すると思った方が良いです。
編集中は x*y<1000 を推奨。エンコード直前に大きな数字にします(冒頭の動画は300*300)。
zは1で固定、z間隔は無いのでnil
◆レイヤー4
図形
カメラ制御ON
四角形
透明度
100。とにかく見えなければいい
Spherical Fieldの球の中心としての役割なので他は特に何も設定することはないです。
なんとこれでもうほぼ完成です。
が、分割数を減らしてもエンコードにかなり時間を要するし、プレビューは言うまでもないので、RAMプレビューを利用したりちまちまエンコードしたりして確認しながら根気よく編集していく必要があります。エンコード中に他ににできることを見つけてから作業に取り掛かりましょう。
https://gyazo.com/3d9c1fe7446636037db2b6bcd2fb079a
冒頭の動画はこんなに時間かかりました。まさに地獄
◆おまけ
無事にエンコードが終わったら、書き出した動画にグロー等後からできる処理をかけてまたエンコードしましょう。
https://scrapbox.io/files/662f1ef80a980300245944e0.mp4
↑グロー&サイズ処理前の冒頭動画
────────おわりに────────
GetColorの素晴らしさと古代兵器AviUtlのしぶとさが分かってもらえたでしょうか。
日本語がヘタクソなので至らぬ点がアホほどあると思いますが、最後まで読んでくれた人はありがとうございます。
256projects(ここ)ではたまにこういった音楽&映像研究のブログ的なものを書いてるので、暇な人は別のページも読んでみてください。といってもまだあんまり記事が無いんですがね。
2024/04/29