Skip to content

BeatSaberでカメラワークを作成するための、ChroMapperプラグイン

License

Notifications You must be signed in to change notification settings

rynan4818/ChroMapper-CameraMovement

Repository files navigation

ChroMapper-CameraMovement

BeatSaberでカメラワークを作成するための、ChroMapper用のプラグインです。

CameraPlus用のカメラスクリプト(MovementScript)のプレビューや、Script Mapperを使ったスクリプトの作成を支援する機能があります。

image

インストール方法

  1. リリースページから、最新版のプラグインのzipファイルをダウンロードして下さい。

  2. ダウンロードしたzipファイルを解凍してChroMapperのインストールフォルダにあるPluginsフォルダにChroMapper-CameraMovement.dllをコピーします。

    ※ChroMapperのインストールフォルダはドライブ名から保存フォルダまで半角英数字だけの場所にしないと、プラグインの読み込みでエラーが出る場合があります。デスクトップ等は止めて、C:\TOOL\ChroMapper 等を作成してインストールして下さい。

  3. Script Mapperをダウンロードして、ChroMapperのインストールフォルダ(ChroMapper.exeがあるフォルダ)にscriptmapper.exeをコピーします。

アバターについて

カスタムアバター および VRM の3Dアバターを読み込んで表示できます。

MovementRecorderで記録したアバターとセイバーの動きを再生できます。

譜面フォルダにあるNalulunaAvatarsEvents.json読み込みとプレビューに対応しています

VRM対応の副産物としてChroMapper-VRMAvatarを作りました。VRMアバターをChroMapperに読み込む単独で動くプラグインです。

使用方法

本ツールとScriptMapperを使った記事を書きました。セットアップから基本的な操作方法と説明を記載しています。

BeatSaberでカメラを動かしてみよう

カメラスクリプト作成で使うCameraMovement応用編

CustomSongTimeEventsを適用したCustom Avatars, Custom Platformsモデルを使用することで、カメラワークとプラットフォームのイベントプレビュー、Custom Avatarsの自動表情制御なども同時に可能になります。

Scriptmapperで作れないような複雑なカメラワークをBlenderで作るBlender2ScriptMapper も作成しましたので参考にしてください。

機能紹介動画

今までのアップデートで追加してきた機能の紹介動画です。機能が多くて下記説明を読むのも大変だと思いますので、ざっと動画を見てもらえると知らなかった機能とかあるかもしれません。

そのうち全体を通した動画も作りたいですね。

キーボードショートカット

  • F4 でプレビュー表示のON/OFF
  • F3 でScriptMapperの実行
  • 各設定パネルは、Shiftを押しながら左ドラッグで移動
  • デフォルトカメラ移動モード
    • 右クリック + Zキー Z回転を0度リセット
  • 注視点カメラ移動モード
    • ALT + マウス右ドラッグでアバター中心にカメラ移動
    • ALT + マウス左ドラッグで注視点のオフセット
    • ALT + マウス左右同時クリックで注視点オフセットのリセット
    • ALT + マウスホイールで注視点との距離の変更
    • ALT + CTRL + マウスホイールでFOVの変更
    • ALT + CTRL + マウス左右同時クリックでFOVのリセット
    • ALT + SHIFT + マウスホイールでカメラZ角度回転
  • CameraPlus相当のマウスによるカメラ移動モード
    • Zキー + マウス右ドラッグでカメラ回転
    • Zキー + 中ドラッグでカメラ移動
    • Zキー + マウスホイールで視点方向前後移動 (右クリックは不要 ※CameraPlusと違います)
    • Zキー + 左クリック + マウスホイールでZ角度回転
    • Zキー + 左クリック + 中クリックでZを0度に設定
    • Zキー + 右クリック + マウスホイールでFOVの変更
    • Zキー + 右クリック + 中クリックでFOVのリセット
  • カメラコントロールパネルのPosX,Y,Z,RotX,Y,Z,FOVにカーソルがある時
    • TABキー フォーカスを順番に移動します
    • F1,F2キー 最小単位の1倍で値を上下
    • F3,F4キー 最小単位の10倍で値を上下
    • Shift + F1,F2キー 最小単位の100倍で値を上下
    • Shift + F3,F4キー 最小単位の1000倍で値を上下

※上記キーバインドや感度は設定ファイルの直接変更で変更可能

各パネル説明

譜面を読み込んでエディタ画面を出して下さい。Tabキーを押すと右側にアイコンパネルが出ますので、水色のカメラアイコンを押すと下の画像 CameraMovementの設定パネルが開きます。

image

チェックボックス

  • CameraMovement : CameraMovementプラグインの有効/無効切り替え。(作譜時に無効にする場合など)
  • Movement Enable : カメラスクリプトに合わせてカメラが移動します。
  • UI Hidden : 作譜用のグリッドUI、ライティングブロック、音声波形などを消します。
  • NJS Editor Scale : エディタスケールをNJSを反映(ゲーム内と同じ)にします。ChroMapper設定のAccurate Editor Scaleと同じです。
  • Turn To Head : カメラスクリプトのTurnToHeadUseCameraSettingの設定がtrueの時に、カメラがアバターの方向を自動で向きます。(CameraPlusのTurnToHeadパラメータに相当します。)
  • Avatar : アバターを表示します。
  • Bookmark Lines : ブックマークの内容をノーツブロックレーンの右側に表示します。
  • Sub Camera : 常にスクリプトに合わせて動くサブカメラを表示します。
  • Bookmark Edit : ブックマークの編集パネルを下に表示します。
  • Camera Contral : カメラコントロールのパネルを下に表示します。
  • Movement Player : MovementRecorderで記録したアバターとセイバーの動きを再現します。

ボタン

  • More Seting : 詳細設定パネルを表示します。
  • Reload : 設定やスクリプトを読み込み直します
  • Multi Display : マルチディスプレイパネルを表示します。
  • Script Mapper Run [F3] : 譜面データを保存して、Script Mapperでブックマークをカメラスクリプトに変換します。F3キーでショートカット。
  • Setting Save : 設定パネルの内容およびブックマーク編集パネルのコマンドボタンの内容を設定ファイルに保存します。
  • Movement Player : Movement Playerで再生する動きファイルなどの設定をします。
  • Close : パネルを閉じます。

image

  • Custom or VRM Avatar : 読み込んだカスタムアバター・VRMアバターモデルを表示します。
  • Avatar File : *.vrm VRMファイルもしくは、*.avatar カスタムアバターのファイルSelectボタンで選択します。デフォルト設定はChroMapper.exeと同じフォルダにあるSour Miku Black v2になっています。
  • Reload : アバターファイルを変更した場合の再読み込みボタンです。
  • Select : アバターファイルを選択します。
  • Avatar Scale : アバターのサイズ調整用です。実際のアバターのサイズはBeatSaber内でキャリブレーション後に何らかの方法で測定する必要があります。(ゲーム内と本プラグインで同じカメラ設定にして、表示サイズが同じになるように調整するのが一番楽だと思います)
  • Avatar Y offset : アバターのY位置調整用です。
  • VRM Blinker : VRMファイルを読み込んだ場合に、まばたきを自動で行います。
  • VRM LookAT : VRMファイルを読み込んだ場合に、カメラ目線になります。
  • VRM Animation : 通常は使用しません。不具合がある場合にチェックを外して見て下さい。
  • Simple Avatar: ピンクの棒人間アバターを表示します。本プラグインで読み込んだカスタムアバターのサイズ測定に使えます。(Head Hight + Head Size/2 = 身長[m]です。) ※Sour Miku Black v2は1.72m
  • Head Hight Lookat point : アバターの頭の高さ(球の中心)です。[単位 m] カメラコントロールのLookAtボタンや、スクリプトのアバターにカメラを自動で向ける場合の位置になります
  • Head Size : アバターの頭の大きさ(球の直径) [単位 m]
  • Arm Size : アバターの両手の長さ [単位 m]
  • Bookmark Width : タイムラインのブックマークの表示幅を調整します。(デフォルトは10)
  • Bookmark Area : Bookmark Linesで表示するために開けるスペース。
  • Bookmark Size(%) : Bookmark Linesで表示する文字のサイズ(デフォルトは100%)
  • Bookmark Export : ブックマークをCSVファイルに出力します。
  • Bookmark Import : ブックマークをCSVファイルから取り込みます。(未実装)
  • Sub X : サブカメラの左下座標の画面横軸位置です。(0が左端、1が右端)
  • Sub Y : サブカメラの左下座標の画面縦軸位置です。(0が下端、1が上端)
  • Cursor Key Move : 押すとカーソルキーでSub X,Yを0.01単位で調整できます。Shiftを押しながらだと0.1単位。
  • Sub W : サブカメラの画面の高さです。(1がメイン画面高さ)
  • Sub H : サブカメラの画面の幅です。(1がメイン画面幅)
  • Cursor Key Size : 押すとカーソルキーでSub W,Hを0.01単位で調整できます。Shiftを押しながらだと0.1単位。
  • Script File : 譜面フォルダにある読み込むカメラスクリプトファイル名
  • Mapping Disable : Camera Movementの機能有効中は譜面作成機能を抑制して、ノーツ等の誤編集を防止します。ただし、OFFにするとカメラ移動機能が制限されます。
  • bookmark Lines Top : Bookmark Linesを全てのオブジェクトの最前面に表示します。
  • Camera Direction Scroll Reversal : カメラが後ろを向いているときにタイムラインの移動方向が逆になります。(デフォルトは無効)
  • Default Invert Scroll Time : Camera Direction Scroll Reversalが有効時のタイムラインの移動方向が逆になります。
  • Set current dispaly to Avatar Scale : 現在表示しているアバターのスケールを読み取ってAvatar Scaleの設定にします。
  • VRM Spring Bone : チェックを外すとSpring Boneの機能がオフになります。MovementRecorderでは揺れ物も一緒に記録するので、オンにすると競合して表示が破綻します。
  • Orbit Camera Target : 注視点カメラ移動モード(ALT+マウス)のターゲット表示の有無を設定します。
  • Setting Save : 設定パネルの内容およびブックマーク編集パネルのコマンドボタンの内容を設定ファイルに保存します。(メイン設定の同名ボタンと機能は同じ)
  • Close : More Settingパネルを閉じます。

image

  • No.8[18] : 現在の編集対象のブックマークNo.と拍子位置です。
  • center1,next : 設定されたブックマークの内容が表示されます。
  • centerrandom : よく使用するコマンドを登録して呼び出せます。
  • Set : チェックしてから上の6箇所のボタンを押すとEmpty の部分に入力した内容が登録できます。
  • Copy to Edit : 現在のブックマーク内容をEmpty の部分にコピーします。
  • Clear : ブックマーク入力部Emptyの入力内容を消します。
  • New : Empty の内容をブックマークとして新規登録します。
  • Change : 現在のブックマークの内容を修正します。
  • Delete : 現在のブックマークを削除します。
  • Script Mapper Run [F3] : ScriptMapperを実行します。メインメニューのそれと同じです。

image

  • Pos X : メインカメラのX軸(横方向)位置です[単位m]
  • Pos Y : メインカメラのY軸(高さ方向)位置です[単位m]
  • Pos Z : メインカメラのZ軸(奥行き方向)位置です[単位m]
  • Rot X : メインカメラのX軸(画面上下方向)の角度です。[単位°]
  • Rot Y : メインカメラのY軸(画面左右方向)の角度です。[単位°]
  • Rot Z : メインカメラのZ軸(画面奥行き方向)の角度です[単位°]
  • FOV : メインカメラの視野角です。[単位°]
  • Dist : アバターとメインカメラまでの距離です[単位m]
  • Move Speed : メインカメラの右クリック+WASDでの移動速度です。ChroMapper設定のVisualsのCamera Speedと同じです。[5以下も可能]
  • Look At : メインカメラの角度をアバターの方向に向けます。
  • Sub : コントロール対象をサブカメラにします。
  • Lay : マルチウィンドウ時にコントロール対象をレイアウト検討カメラにします。
  • Obj : サブカメラ表示時に、カメラの3Dオブジェクトを表示します。
  • Preview[F4] : ゲーム内を正確に再現したプレビューモードにします、F4がショートカットキーで戻る時はF4です。
  • Paste : Script Mapperのqコマンド形式または、input.csv形式(タブ区切り)で、クリップボードからカメラ位置・角度・FOVを設定します。
  • Copy : Script Mapperのinput.csv形式(タブ区切り)で、カメラ位置・角度・FOVをクリップボードにコピーします。
  • q fmt : Copy時にScriptMapperのqコマンド形式でコピーします。

上記項目はカメラを移動すると現在値を表示します。値を入力するとその状態にカメラが移動します。

image

  • Display Counts = * : 現在のPCのディスプレイ数です。2以上で本機能を利用できます。3以上だとサブ・レイアウト検討の両方ウィンドウ化できます。
  • Sub Window : サブカメラ用のウィンドウを表示します。
  • Layout Window : レイアウト検討カメラのウィンドウを表示します。
  • Create Window : 現在の設定でマルチディスプレイ機能を有効にします。
  • Save Window Layout : 現在のウィンドウレイアウトを保存し、次回Create Windowした時に再現します。
  • Reset Window Layout : ウィンドウレイアウトをリセットします。
  • Setting Save : 現在の設定を保存します。
  • Close : パネルを閉じます。

※一度作成したウィンドウはUnityの仕様でChroMapperを終了するまで閉じることができません。

※各ウィンドウでのカメラ操作は、カメラコントロールパネルの Sub 及び Lay チェック時に値で直接変更できる他、ウィンドウがアクティブ状態の場合は各モードでマウス・キーボードでコントロールできます。

※サブ・レイアウト検討ウィンドウはモニタのアスペクト比に依存するため、サイズ変更はアスペクト比固定になっています。

※マルチディスプレイモード時にメインウィンドウのサイズを変更すると、画面が崩れることがありますがウィンドウをドラッグで移動すると直ります。

※作譜作業用にはMultiDisplayWindowとして、マルチディスプレイウインドウ機能を別プラグインにしました。ただし、マルチディスプレイは本プラグインと同時使用はできないため、切り替えるときには一度ChroMapperを再起動して下さい。

image

  • Movemnet FileにMovementRecorderで記録したファイルを選択
  • Saber Fileにセイバーのファイルを選択します(記録時に使用したセイバー以外だと正常表示されない可能性があります)
  • Saber Enabledはオフにするとセイバーの表示を消します
  • Set Default Saberをチェックすると、デフォルトとして次回別の譜面の設定画面でデフォルト設定になります。
  • Players Place Offsetはアバター表示modで床を下げている場合に合わせて、ChroMapperのステージオブジェクトを上下移動します
  • Saveボタンで本設定を譜面フォルダに保存して次回自動で読み込みます

NalulunaAvatarsEventsについて

譜面フォルダにあるNalulunaAvatarsEvents.jsonの読み込みとプレビューに対応しています。(VRM表示のアバターのみ対応)

ファイルの更新を0.5秒毎にチェックしていますので、作成しながらプレビュー出来ます。

_events コマンド対応

_key 機能 _value
BlendShape BlendShape設定 "プリセット, 値"
SetBlendShapeNeutral BlendShapeデフォルト変更 "プリセット, 値"
StartAutoBlink AutoBlink開始 なし[VMCAvatarMaterialChange用]
StopAutoBlink AutoBlink停止 なし[VMCAvatarMaterialChange用]

以下のコマンドは無視されます

_key 機能 備考
SetBlendShapeSing 口パク用のBlendShape設定 [口パクは再現しないので無効]
StartSing 口パク開始 [口パクは再現しないので無効]
StopSing 口パク停止 [口パクは再現しないので無効]
StopAutoBlendShape 自動表情機能を無効 [CameraMovementでは不要なので無効]
StartAutoBlendShape 自動表情機能を有効 [CameraMovementでは不要なので無効]
StopLipSync リップシンクを一時的に無効 [CameraMovementでは不要なので無効]
StartLipSync リップシンクを有効 [CameraMovementでは不要なので無効]
  • NalulunaAvatarsではAutoBlinkはBlink,BlinkL,BlinkRの_keyで自動停止
    • 本実装も標準設定済み
  • NalulunaAvatarsではNalulunaAvatars.jsonblendShapesNoBlinkUserで追加設定可能。
    • 本実装ではNalulunaAvatarsEvents.json内の_settingsで設定可能
  • NalulunaAvatarsではdefaultFacialExpressionTransitionSpeed で表情遷移の速度設定可能。デフォルトは10。数値が大きいほど遷移が速くなり、100でほぼ瞬間的に遷移する。
    • 本実装では100で1フレーム=1/60=0.016s とし、1.66 / defaultFacialExpressionTransitionSpeed で実装し_settingsで設定可能

NalulunaAvatarsEvents.json作成例

{
    "_version": "0.0.1",
    "_events": [
        { "_time": 0.0, "_duration": 0.0, "_key": "StopAutoBlendShape" }, ※本実装では無視
        { "_time": 0.0, "_duration": 0.0, "_key": "StopLipSync" }, ※本実装では無視
        { "_time": 0.0, "_duration": 0.0, "_key": "SetBlendShapeSing", "_value": "O, 0.7" }, ※本実装では無視
        { "_time": 1.0, "_duration": 2.0, "_key": "BlendShape", "_value": "Joy" },
        { "_time": 1.0, "_duration": 2.0, "_key": "BlendShape", "_value": "A" }, ※NalulunaAvatarsでは同じ時間の別の_keyは上書きされるかも
        { "_time": 4.0, "_duration": 1.0, "_key": "BlendShape", "_value": "Angry" },
        { "_time": 6.0, "_duration": 1.0, "_key": "BlendShape", "_value": "Blink, 0.5" },
        { "_time": 8.0, "_duration": 0.0, "_key": "SetBlendShapeNeutral", "_value": "Fun" },
        { "_time": 9.0, "_duration": 0.0, "_key": "StartSing" }, ※本実装では無視
        { "_time": 10.0, "_duration": 1.0, "_key": "BlendShape", "_value": "Joy" },
        { "_time": 12.0, "_duration": 0.0, "_key": "StopSing" }, ※本実装では無視
        { "_time": 13.0, "_duration": 0.0, "_key": "SetBlendShapeNeutral", "_value": "Neutral" },
        { "_time": 14.0, "_duration": 0.0, "_key": "StartSing" }, ※本実装では無視
        { "_time": 16.0, "_duration": 2.0, "_key": "StopSing" }, ※本実装では無視
        { "_time": 66.0, "_duration": 0.5, "_key": "BlendShape", "_value": "Joy" },
        { "_time": 66.0, "_duration": 0.5, "_key": "BlendShape", "_value": "A" }, ※NalulunaAvatarsでは同じ時間の別の_keyは上書きされるかも
        { "_time": 90.0, "_duration": 1.5, "_key": "BlendShape", "_value": "Joy" },
        { "_time": 90.0, "_duration": 1.5, "_key": "BlendShape", "_value": "A" } ※NalulunaAvatarsでは同じ時間の別の_keyは上書きされるかも
    ],
    "_settings": { ※本実装独自の設定
        "blendShapesNoBlinkUser": [ ※追加のAutoBlinkしない_key 標準で"Blink","BlinkL","BlinkR"は設定済み
            "Joy",
            "Fun"
        ],
        "defaultFacialExpressionTransitionSpeed" : 20, ※表情遷移速度の設定値変更
        "noDefaultBlendShapeChangeKeys": [ ※デフォルト表情を変更しない_key 標準で"A","I","U","E","O"は設定済み
            "Test"
        ]
    }
}

Duration取込み誤差について

カメラスクリプトはDuration(移動時間)の積算で表現していますが、CameraPlusやCameraMovementで取り込む際に有効桁数6~9桁(float)で丸められるため、ScriptMapperの出力内容によっては誤差が積算されてブックマークの位置に対してカメラ移動がズレる可能性があります。また、Durationは0.01秒未満の値は0.01秒に繰り上げるため、0.01秒未満のDurationがあるとズレが積算します。

特に遅れる方向にズレやすく、CameraMovementで表示する際に後ろの方になると、ブックマークの位置では一つ前の最終カメラ位置になってしまうことがあるため、サブカメラのプレビューでは内部でズレを補正しています。この補正の上限値はデフォルトで0.05秒(50ms)で、これよりもズレが大きくなると下記エラーメッセージが表示され、ズレていることを分かるようにするため補正されなくなります。

image

ズレが発生した場合の対処方法は、Version1.07以降のズレ対策されたScriptMapperを利用する。ScriptMapperの環境コマンドのオフセット #offset0.1(例0.1秒早める)を利用するなどがあります。

取込み誤差は通常時にもログに表示していますので、どのくらいズレているか確認することも可能です。

  • Duration total error : スクリプト末尾時点でのズレ時間
  • Duration max error : スクリプトの最大ズレ時間
  • Duration min error : スクリプトのマイナス方向の最大ズレ時間

ログ表示画面は通常ではChromapperのキーバインドでバッククオートになっていますが、日本語キーボードだと反応しないため、キーバンドのDebugのToggle Debug Consoleを変更して下さい。(F12など)

設定ファイルについて

設定ファイルはChroMapperの設定ファイルと同じフォルダユーザ設定フォルダ(Users)\ユーザ名\AppData\LocalLow\BinaryElement\ChroMappercameramovement.jsonに保存されます。

プラグインのUIで設定できない項目の説明は以下です。

設定項目 デフォルト値 説明
scriptMapperExe scriptmapper.exe ScriptMapperの実行ファイル名です。フォルダパスはChroMapper.exeの場所です
scriptMapperLog log_latest.txt ScriptMapperのログファイル名です。フォルダパスは編集中の譜面フォルダです
avatarCameraScale 1.5 ChroMapper内のUnity単位をBeatSaberと合わせるための倍率です
originMatchOffsetY -0.5 ChroMapper内のY座標原点をBeatSaberと合わせるためのオフセット値です[avatarCameraScale反映前]
originMatchOffsetZ -1.5 ChroMapper内のZ座標原点をBeatSaberと合わせるためのオフセット値です[avatarCameraScale反映前]
originXoffset 0 原点座標調整用のXオフセット値です[avatarCameraScale反映後]
originYoffset 0 原点座標調整用のYオフセット値です[avatarCameraScale,originMatchOffsetY反映後]
originZoffset 0 原点座標調整用のZオフセット値です[avatarCameraScale,originMatchOffsetZ反映後]
previewKeyBinding <Keyboard>/f4 プレビューのショートカットキーバインドです
scriptMapperKeyBinding <Keyboard>/f3 Script Mapper Runのショートカットキーバインドです
dragWindowKeyBinding <Keyboard>/shift パネルドラッグ時の押すキーバインドです
orbitDefaultFOV 60 注視点カメラ移動のデフォルトFOVです
orbitRotSensitivity 0.5 注視点カメラ移動のカメラ回転感度です
orbitZoomSensitivity 0.001 注視点カメラ移動のカメラズーム感度です
orbitOffsetSensitivity 0.01 注視点カメラ移動のオフセット感度です
orbitFovSensitivity 0.005 注視点カメラ移動のFOV変更感度です
orbitMinDistance 0.2 注視点カメラ移動のズーム最接近距離です
orbitMaxDistance 100 注視点カメラ移動のズーム最遠方距離です
orbitActiveKeyBinding <Keyboard>/alt 注視点カメラ移動のキーバインドです
orbitSubActiveKeyBinding <Keyboard>/ctrl 注視点カメラ移動のFOV変更キーバインドです
orbitZrotActiveKeyBinding <Keyboard>/shift 注視点カメラ移動のZカメラ回転キーバインドです
orbitMoveActiveKeyBinding <Mouse>/leftButton 注視点カメラ移動のオフセット移動キーバインドです
orbitRotActiveKeyBinding <Mouse>/rightButton 注視点カメラ移動のXYカメラ回転キーバインドです
subCameraNoUI True TrueにするとサブカメラのUI表示を消します
layoutCameraNoUI True Trueにするとレイアウト検討カメラのUI表示を消します
multiDislayCreateDelay 0.1 マルチディスプレイ作成時のディレイ時間(秒)。作成時に異常動作する場合は値を増やして下さい
plusActiveKeyBinding <Keyboard>/z CameraPlus互換カメラ移動の有効キーバインドです
plusZrotActiveKeyBinding <Mouse>/leftButton CameraPlus互換カメラ移動のZカメラ回転キーバインドです
plusPosActiveKeyBinding <Mouse>/middleButton CameraPlus互換カメラ移動のカメラ移動キーバインドです
plusRotActiveKeyBinding <Mouse>/rightButton CameraPlus互換カメラ移動のXYカメラ回転キーバインドです
plusZrotSensitivity 0.004165 CameraPlus互換カメラ移動のZ回転感度です
plusPosSensitivity 0.01 CameraPlus互換カメラ移動のカメラ移動感度です
plusRotSensitivity 0.03 CameraPlus互換カメラ移動のXYカメラ回転感度です
plusZoomSensitivity 0.003125 CameraPlus互換カメラ移動の視点方向前後移動の感度です
plusFovSensitivity 0.005 CameraPlus互換カメラ移動のFOV変更感度です
plusDefaultFOV 60 CameraPlus互換カメラ移動のデフォルトFOVです
defaultCameraActiveKeyBinding <Mouse>/rightButton デフォルトカメラ移動の有効キーバインドです
defaultCameraElevatePositiveKeyBinding <Keyboard>/space デフォルトカメラ移動の上移動キーバインドです
defaultCameraElevateNegativeKeyBinding <Keyboard>/ctrl デフォルトカメラ移動の下移動キーバインドです
defaultCameraMoveUpKeyBinding <Keyboard>/w デフォルトカメラ移動の前移動キーバインドです
defaultCameraMoveLeftKeyBinding <Keyboard>/a デフォルトカメラ移動の左移動キーバインドです
defaultCameraMoveDownKeyBinding <Keyboard>/s デフォルトカメラ移動の後移動キーバインドです
defaultCameraMoveRightKeyBinding <Keyboard>/d デフォルトカメラ移動の右移動キーバインドです
defaultCameraZrotResetKeyBinding <Keyboard>/z デフォルトカメラ移動のZ回転0度リセットキーバインドです
defaultCameraZrotReset False デフォルトカメラ移動のZ回転0度リセットを有効にします(ChroMapper標準)
maxDurationErrorOffset True Trueにすると、サブカメラでDuration取込み誤差補正機能を有効にします
durationErrorWarning 0.05 Duration取込み誤差補正機能の上限値(秒)です。この値を超えると補正されず警告表示します
cameraKeyMouseControlSub True Trueにすると、非マルチディスプレイ時にサブカメラのキーボード・マウス移動対象にします
subCameraModelTrailTime 4 サブカメラの3Dオブジェクトのトレイル表示時間(秒)です

※キーバインドはUnityのInputSystem形式で設定してください。

補足

ChroMapperのブックマークはMMA2と同じ"B"キーですが、下のタイムライン上をクリックすると再編集できます。またブックマークの削除は、タイムライン上のブックマークをマウス中クリックです。

メイン画面のカメラ位置はF5~F8に登録して呼び出せます。(MMA2のBackSpaceの代わり) 登録はCtrl + F5~F8です。Shift+で更に登録できるので、合計8箇所登録できます。

ToDo

※実生活がちょっと忙しくなってきているので、ゆっくり対応です。

検討中

  • CameraMovementController.csが機能詰め込みすぎてるので整理する。

保留

  • ブックマークデータ単体の入出力(譜面.datとブックマークの分離) CSV出力は実装済み、入力はエディタ起動中は難しい。譜面データを直接扱う別ツールにしたほうがずっと簡単。
  • ブックマークもノーツブロックのようにコピペ出来たら良いけど、だいぶムズい。
  • カメラ移動パスを描いて、それ通りに動くようなブックマークを自動生成できたら便利だけど、ムズ~

完了

  • マルチディスプレイ表示モードの追加(プレビュー表示用、カメラレイアウト検討用)
  • サブカメラだけマッピング用のUI表示を消す
  • CameraPlus相当のマウス操作でのカメラ移動モードの追加
  • マルチディスプレイでのデフォルトカメラ操作
  • duration取込み誤差分をオフセットして、ブックマーク位置でスタート画面になるようにする
  • プラグインのON/OFF機能の追加(通常作譜作業用にプラグインをワンタッチでON/OFFできるように)
  • アバター非表示コマンドの対応
  • カメラコントロールでサブカメラ対象の時に、カメラ操作もサブカメラを対象にする
  • サブカメラにオブジェクトを割り当てて、カメラ移動が見えるモードの追加
  • カメラ移動をWASDではなく、CADみたいに対象物(アバター)中心で回転操作で動かすモード
  • 現在のカメラ位置をinput.csvに出力するボタン(コピペは実装済み) ※qコマンドが有用なのでこれ以上実装しない
  • ノーツや壁のスピードをゲームと一致させる
  • 作譜用のショートカットキーが数値やコマンド入力の障害になるので、無効化チェックボックス
  • UI Hiddenで不要なUIを全部消す(ゲームのプレイ画面に近くする)
  • ブックマークの表示をMMA2の様に床に表示させたい、クリックして再編集
  • Script Mapperのコマンドをメニューで選択してブックマーク入力
  • VRMとか読み込んでアバター表示したいけど難しそう。 (カスタムアバターには対応しました!)

開発者情報

このプロジェクトをビルドするには、ChroMapperのインストールパスを指定する ChroMapper-CameraMovement\ChroMapper-CameraMovement.csproj.user ファイルを作成する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ChroMapperDir>C:\TOOL\ChroMapper\chromapper</ChroMapperDir>
  </PropertyGroup>
</Project>

添付ライブラリについて

UniVRM

ChroMapper-CameraMovement.dllにはUniVRMUniVRM-0.96.2_b978.unitypackageでビルドしたDLLファイルをILMergeによって内包しています。

  • FastSpringBone.dll
  • MToon.dll
  • UniGLTF.dll
  • UniHumanoid.dll
  • VRM.dll
  • VRMShaders.GLTF.IO.Runtime.dll
  • VRMShaders.GLTF.UniUnlit.Runtime.dll
  • VRMShaders.VRM.IO.Runtime.dll

また、以下のシェーダーをアセットバンドルでvrmavatar.shadersにまとめ、DLLに埋め込んでいます。

  • Assets\VRMShaders\GLTF\UniUnlit\Resources\UniGLTF\UniUnlit.shader
  • Assets\VRMShaders\VRM\MToon\MToon\Resources\Shaders\MToon.shader
  • Assets\VRMShaders\GLTF\IO\Resources\UniGLTF\NormalMapExporter.shader
  • Assets\VRMShaders\GLTF\IO\Resources\UniGLTF\StandardMapExporter.shader
  • Assets\VRMShaders\GLTF\IO\Resources\UniGLTF\StandardMapImporter.shader

UniVRMの著作権表記・ライセンスは以下の通りです。

アイコン素材

プラグイン製作の参考

CameraPlusフォルダのファイルは、すのーさんのCameraPlusのソースコードをコピー・修正して使用しています。カメラ移動部分の処理は全く同じです。

CameraPlusの著作権表記・ライセンスは以下の通りです。

UI.csはKival Evanさん製作のLolighterのソースコードをコピー・修正して使用しています。

Lolighterの著作権表記・ライセンスは以下の通りです。

BlendShapeの参考としてVirtualMotionCaptureを流用しています、著作権表記・ライセンスは以下の通りです。 https://github.com/sh-akira/VirtualMotionCapture/blob/master/LICENSE

About

BeatSaberでカメラワークを作成するための、ChroMapperプラグイン

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages