見出し画像

・カメラスクリプト以外の演出

やっほーしょーちゃんだよー!

違います。パパです。はじめましての方ははじめまして。
普段はうちの子のしょしんしゃさんを裏から支えているMark_Xと申します。
今度のビー祭でもいわゆる謎技術を担当していました。別に謎じゃないです。

昨日はリュナンさんがカメラスクリプトについての記事を書いてくださったので、今日はそれ以外のやり方も使ってビートセイバーを装飾していこうと思います。映え映えです。
実のところ自分用の備忘録です。

この記事はBeat Saber Advent Calendar 2023の11日目の記事です。


・カメラスクリプト

みんな大好きカメラスクリプトです。
いろんな人が解説してくれているので、そちらを見れば設定できるでしょう。というかリュナンさんの解説を見れば分かるはず。
ねこまたGAMEさんのまとめも合わせて使いやすいです。
カメラの動きだけでなく、映す対象の切り替えも可能。(セイバーだけ表示とかノーツだけ非表示とか)
映えてくれるかどうかは1%の才能と99%の努力です。
後述するスクリプト制御で扱う[time]部分はChromapperを使って確認するのがラクチンだと思います。

・カメラエフェクト

snowさん作のcameraplusの機能の一部であるカメラエフェクト。
公式WIKIのカメラエフェクトのページを参照。
カメラプラス単体でも、デスクトップのゲーム画面を右クリックすることで色々と設定ができますが、カメラスクリプトと同様にスクリプト制御が可能です。
エフェクトは執筆時点(23年11月)で、
・DoF(被写界深度)
・アウトライン(エッジ)
・ワイプ
・グリッジ
の4種類。グリッジは現在1.30以降のみの機能。
これらの機能は複合して使うこともできます。
また、サブカメラ(2個目以降の追加カメラ)の制御も可能です。

・DoF(被写界深度)

被写界深度はピントのあってないところをボカしちゃうぞ

スクリプト制御することによって、開始時間~終了時間までのボカし強度などを変更できます。

・アウトライン(エッジ)

アバターだけでなく、ノーツやセイバー、トレイルなど画面に映るもの全てをアウトライン化。

アウトラインを強調させたり、アウトラインの色や、それ以外の色を変えたりすることができる。どのくらいエフェクトをかけるかも調整できます。
上の画はこの機能を使ってセピアっぽい感じに調整してみました。
これもスクリプトで効果の強弱や、色をシームレスに変更することができます。

・ワイプ

その名の通りワイプ機能。矩形の他にも丸形のワイプも可能。

使い方いろいろ。顔を表示させてよし、アバター全体を映してよし、カットインにしちゃってもよし。
どんな形のワイプにするか、どのくらい画面をカットするかを設定できます。
ただし、ワイプに使うサブカメラの移動やサイズ変更はできないので、予めそれ用にサブカメラを配置しておく必要があります。
※ワイプの変動量は設定できます。スクリプトを組めば開閉みたいなことも。

・グリッジ (BeatSaber 1.30以降)

筆者は1.27.0環境なので使ったことがないので分かりません。
君の目で確かめてくれ!

・サブカメラ制御

サブカメラで上下のクロップ、ワイプ表示、左右画面分割などを制御している。

とてもとても便利な機能。
メインカメラとは別に作れる追加サブカメラのON/OFFや移動が可能になります。
サブカメラ自体をスクリプト制御で増やしたり減らしたりはできないので、予め必要な分だけ用意しておきましょう。なお、サブカメラは一度に大量表示しない限りは(表示をOFFにしている限りは)負荷はかからない、らしいです。
ウィンドウサイズは変えられないので、これも予め設定が必要。
やりようによってはやってやれなくはないらしい…?

・スクリプトの組み方

基本的には公式WIKIのカメラエフェクトムービングスクリプトのページを参照。とはいえそれだけで導入できたら苦労はしないので、筆者が実際に行った手法をご紹介。もっといいやり方があれば教えてください。

0.まず分かる人に直接聞きます。
1.この機能を動かすということはカメラもグリグリ動かしてるはずなので、一通り動きをつけてからSongScript.jsonを出力する。
2.リュナンさんの便利なツールを導入する。
3.上記ページを参考にしながら、ChangeScript.jsonを作成する。
4.ツールを使ってSongScriptとChangeScriptを合体させ、新たなSongScript.jsonを作る。(上書きでも良い)
5.BeatSaberを立ち上げ、反映されているか実際にチェック。

チェック段階でとりあえず効果が確認できたら、あとはタイミングや効果量の微調整になるので、納得いくまで作りこんでください。
上記の参考ページだけでは分からない部分もあると思いますので、実際に使った合体前のChangeScriptも置いておきます。これも機能を完全に使いこなしてるというわけでもないですが、なんとなく雰囲気を掴めばいいんです。

なお、今回はサブカメラを6台ほど用意し、カメラスクリプトもメイン・カメラA用、B用の3種類用意しています。
カメラエフェクト用のChangeScriptもそれに合わせてメインとサブ用の2つ。
サブカメラのエフェクトはサブカメラ用のSongScriptに合体し、別途それぞれのサブカメラに適用しました。
ただし、サブカメラ制御の記述は、メインのChangeScriptに記述してください。
WindowControlうんぬんしている部分です。こんな感じの記述で試行錯誤してみてください。

      "WindowControl": [
        {
          "Target": "customcamera1.json",
          "Visible": true,
          "StartPos": {
            "x": 0,
            "y": 0
          },
          "EndPos": {
            "x": 0,
            "y": 445
          }
        },
        {
          "Target": "customcamera2.json",
          "Visible": false
        }

WindowControlはCameraEffectの記述とは別で管理したほうが分かりやすい気がします。
エディタはWindows標準のメモ帳でも可能ですが、VSCodeが便利で分かりやすいです。エラーチェックできて塊ごとに管理できる上に無料!

・NoodleExtensions

我ながらこの演出好きすぎる

お馴染みのBeatSaberぶっ壊し装置。あまりにもなんでも出来すぎてしまう。
今回は、ノーツの挙動やサイズ、カラーなどを弄りました。
使用ツールはScuffedWalls。あまりに奥深くて解説不能です。
Remapperなるものが使えれば更に強いらしいですが、筆者は導入で躓いてダメでした。
ScuffedWalls,NoodleExtensionsについてはmikuriさんのnote姚明さんのnoteを参考にしたり、ScuffedWallsNoodleExtensionsのドキュメントを見ながら頑張ってください。
今回作ったScuffedWalls用ファイルも参考になれば。

・カスタムセイバー

ネコチャン魔法陣展開!

BeatSpearと見せかけて実は二刀でした。
でも機能的にはAlternativePlayMODを利用して、右物理棒+左コントローラーでコントローラーは出番があるまで足元で待機な感じ。
ついでにタッチノーツのオプションで斬らなくても触れただけで判定が出るように…したつもりがなってない…?いや当たってないだけだコレ!プルプル

カスタムセイバーで魔法陣は基本非表示、ノーツHIT時のみ出現、一定時間で消える、といった動作を仕込んであります。
誤作動起こしてたのはご愛嬌。
作り方はこちらのノートや、そのリンク先を参考にしてください。

・CustomSongTimeEvents

セイバーが大きくなったり小さくなったり

ここではカスタムセイバー単体だけでは制御しきれない(厳密にはできるけど面倒くさい)曲の途中で片方だけセイバーのサイズを変える、ということをやっています。
またもや活躍するリュナンさんの便利なツールというわけです。
使い方は上記のページが全てです。unityと和解しましょう。
ちなみにこのツールは、セイバーだけでなくカスタムアバターやカスタムプラットフォームにも対応しているので、突然の衣装チェンジやプラットフォーム側のイベントをいい感じに発動させたりなど、任意にいろいろできるのでとても便利だから使えばいいんです。

・NalulunaAvatarsEvents

このシーンだけで表情3つ追加してます。

なるるなさんのMOD、NalulunaAvatarsの補助的なスクリプト。
有料ではありますが無料のLite版でも使えるのかな?分かりません。
なにができるかというと、端的に言えば自動で任意のタイミングで表情を切り替えてくれます。
前述のCustomSongTimeEventsを使って表情切り替えをすればいいという説もありますが、慣れの問題で筆者はこちらを使いました。

しょーちゃんは普段、スクリプトに頼ることなく表情をころころ変えていますが、物理棒使用時は仕組み上そうもいかないので、使わせていただきました。
なお、NalulunaAvatarsで設定できる表情は1アバターにつき8種までですが、このやり方だとアバターが保有しているブレンドシェイプが全て使えるので、種類が豊富であればあるほど表現も豊富になっていきます。
ただし、ブレンドシェイプが多くなればなるほどアバターのサイズもどんどん重くなっていくのでそこは注意。
使い方はNalulunaAvatarsの記事を参照。有料かつ長いですが、かなりタメになるので説明書を読まない諸兄も一読の価値ありです。
ちなみに表情Aから表情Bへニュートラルを挟まずに切り替えたい場合は、
表情Aの表示中に被せる形で表情Bを差し込んであげればいいです。
また、目と口を別個に動かす、ということはできないので同時に動かす用のシェイプキーを用意しましょう。
筆者は普段使いのアバターにこちらのツールで急遽イベント用に表情を増やして指定していました。ありがとうパーフェクトシンク。

・OBS-Controlで歌詞字幕など

ビー祭前日に急にやりたくなって突貫工事した歌詞演出

またもや活躍してしまうリュナンさんの便利ツール
OBS-Controlは普段からメニュー画面とゲーム画面でシーンを切り替えるのに使っていましたが、今回は曲専用のシーンを作ることで、特定譜面の時だけ字幕が出るように設定しまし…できてねえ!失敗しました。練習の時は動いてたのに!
ねこまたGAMEさんの記事を見ながら試してみればいいんじゃないかなー。
上に乗せる動画は字幕以外でもいけるので、なんかいろいろ効果をつけたりすることもできますね。
実はこっそり明滅が激しい部分のところは少し抑えるような効果もつけていましたが、不発してしまい若干目に悪かったこと、ここにごめんねします。
OBSのシーン自体を切り替えているので動画以外にも色々乗せれますね。
更に特定譜面専用シーンから、タイミングを指定して更に別のシーンへ切り替えることもできるようです。その機能を使ってどうするかはアナタ次第。
すごいよねバモキャ多重起動。

・セイバーを自由自在に動かす

まほうのちからでたのしいセイバーがポポポポーン。

メイン剣は物理棒を使い、トラッカーセイバーにしていました。
それをプレイヤーが魔法で動かすことによって実現しています。
魔法力のコントロールが甘いとうまく操作できないので頑張ってください。
ありがとう物理棒。サンキュー魔法。

・カスタムプラットフォーム

以前のビー祭で作った奴。アニメOPみたいなのだって作れるぞ。

今回は使用していませんが、これも自作できると演出面で大きなパワーになりますね。前述したリュナンさん作のCustomSongTimeEventsも合わせてボルテージもアゲアゲです。
筆者も以前のビー祭でカスタムプラットフォームを自作して特殊な演出を行いましたが、内容はともかく作り方はよろしくないので、アレは参考にしないほうがいいです。
参考にするなら…今だとなんだろう?
とりあえず原型作りはこの動画とかになるのかな。
ともかくUnityで基本の造形を作って、CustomSongTimeEventsで爆発だの明滅だの開閉だの切り替えだのなんだかんだやりたいことを組み込んであげれば曲に合わせて動くカスタムプラットフォームが完成するって寸法です。

・NalulunaAnimator

なるるなさんへ投げ銭すればおまけで使える系MODです。
ビートセイバー内に自分以外のアバターを出して、任意のアニメーションを再生させることができます。
デフォルトで入ってるプリセットもあり、曲中は応援してもらって、クリア時には喜んだり、失敗時には慰めてもらったり。
位置やサイズ、どんなアバターを出すか、何種類、何体同時に出すかも決めれて、もちろん自分で作ったアニメーションも入れることができます。
自分で作ったアニメーションも入れることができます。
……なんかできそうですね?やったことないけど。

・終わりに

1譜面のフォルダの中身か?これが……。

いかがだったでしょうか。これら以外にもビートセイバー内外を問わず映えさせるMODやツールなどは色々ありますが、ひとまずはここまで。

凝れば凝るほど画面演出は映え映えになっていきますが、やりすぎると最早何が何だか分かりません。アレもコレもと詰込すぎには注意が必要ですが、しかし人間はやればできる限り、どこまでも進んでしまうものなのです。人間を超えるものにならねばな……。

筆者は今後、色々忙しくなってこういった演出はできなくなると思いますので、この記事を読んで興味を持った方がいれば、どうか是非形にしてもらってどこかしらで披露していただけると嬉しいです。楽しみにしています。

・最後の終わりに

当時のPC構成とソフトの簡単な紹介です。
・Windows11 Pro
・CPU i7-10700K
・メモリ 32GB
・GPU RTX3080(10GB)
使用アプリはOBSとSteamVR、BeatSaberにDiscordくらいでしょうか。
読み上げソフトや音声変換ソフトなど、処理が重くなりそうなものは全てオフで臨みましたが、この譜面をやる時だけは45FPS維持がギリギリ辛かったです。MODももうちょっと切り詰めれば良かったかも?
大いなる演出には大いなるマシンパワーが求められます。
PCスペックや、配信に乗せるなら映像ビットレートのことも考えてあげてくださいね。特にパーティクルには要注意!


この記事が気に入ったらサポートをしてみませんか?