Skip to content

カスタムメイド3D2 VRでの操作を改善するプラグイン

Notifications You must be signed in to change notification settings

nekopanda/CM3D2.VRMenu.Plugin

Repository files navigation

CM3D2.VRMenu.Plugin

VR(特にルームスケールVR)での操作を改善するプラグイン。今のところHTC Vive専用です。GripMovePluginと目的は同じで一部機能は重複しています。

機能

コントローラのメニュー表示

コントローラのメニューボタンを押すとコントローラメニューが表示されます。

コントローラメニュー

メニューは階層構造になっていて、トリガーで前のメニュー戻ります

GUIパネル

GUIパネル ※画像中にあるAddModsSlider,VibeYourMaidは本プラグインとは関係ありません。

GUIは、GripMovePluginと同じようなパネルになっています。メニューボタン長押しでパネル位置をリセットします。

※GUIでのクリックは、デスクトップのゲームウィンドウ上でのクリックに変換されます。(デスクトップのゲームウィンドウにはGUIは何も表示されていませんが、そこにGUIは存在しているのです!)**デスクトップのゲームウィンドウが他のウィンドウに隠れていたり、モニタの外に出ていたりすると、そこはクリックできません。また、ゲームウィンドウを16:9より横長にするとGUIの上下にクリックできない領域が発生します。**全領域をクリックできるようにするために、ゲームウィンドウは16:9より若干縦長にすると安全です。クリックできないところにポインタを持っていくと、ポインタはクリック不可を示す赤い表示になります。

※GripMovePluginと違って、プラグインのON/OFF操作はないので、プレイ中に元のGUI表示に戻すことはできません。また、旧GUI専用パネルもありません。1つのGUIパネルの両方表示します。

操作モード

コントローラによる操作は、公式の機能をほぼ無効化して、プラグイン側で再実装しました。 コントローラメニューのMODEから操作モードを変更できます。メニューボタンをダブルクリックで直前のモードに戻ります。

モード共通操作

操作はコントローラの先にある半透明の丸いポインタで行います。ポインタの位置や大きさは設定で変更できます。基本的にどのモードでも、ポインタをGUIパネルに近づければGUIは操作できます。トリガーとグリップは、選択中の操作モードで上書きされてなければ、「掴む」操作となります。掴めるオブジェクトはトリガーでもグリップでも掴めます。ただし、掴んで動かしたときの挙動がトリガーとグリップで若干違います。(下表参照)

掴む対象 トリガー グリップ
背景 XZ回転およびY方向移動が無効※ XZ回転無効※
GUI 制限なし 制限なし
メイドさん XZ回転無効 制限なし
オブジェクト XZ回転無効 制限なし
IK 制限なし 制限なし

※設定で変更可能です。

その他、トリガー+メニューボタンで位置リセット(ワールドをXZ回転していたばあいはXZ回転リセット)

POINTERモード

基本モードです。ポインタがGUIから離れていてもトラックパッドでクリックできます。クリックは公式と同じでトラックパッド左半分が左クリック、右半分が右クリックです。クリックは実際にデスクトップ上のゲーム画面のクリックになるので、他のウィンドウに隠れてる等ゲーム画面がクリックできないとポインタが赤くなります。

MOVEモード

ワープによる移動です。トラックパッドを押すと白い球体が出現します。この球体が移動先です。表示はされませんが、コントローラの向きから放物線軌道を計算しています。球体の高さはトラックパッドの左右どちらを押しているかで変わります。左を押してるときは実空間の床の高さ、右を押してるときはゲーム内背景のy=0の高さとなります。

新MOVEモード

CAMERAモード

公式のカメラモードです。

ITEM-PICK

アイテム呼び出しモードです。GUIに画面が出てきます。ちょっと分かりにくいですが、最初は縦長の画面で、右上の「>」を押すと右に広がって、上にあるボックスをクリックするとカテゴリを選択できます。

出現させたアイテムは、アイテム中央にあるボックスを掴んで移動できます。ボックスは最初は表示されていませんが、トラックパッドクリックでボックスの表示ON/OFFを切り替えできます。

出現させたアイテムは改造版ShapeAnimatorでシェイプキーを操作できます。

YOTOGI

夜伽シーンで使用可能なモードです。トラックパッドにコマンド選択を表示します。

IK

GripMovePluginを入れていると撮影モードで使用可能になるモードです。GripMovePluginを使って、選択中のメイドさんのIKを操作します。

その他のメニュー

TOOL

デフォルトだと何も入っていません。

CM3D2.VRMenu.MyKeyInput.dllを入れると、「VibeYourMaid」と「デスクトップスクリーン」が追加されます。

ITEM

コントローラをペンライトやおもちゃに変化させます。公式のITEMモードと同じです。

MENU

設定などのメニューです。VRMenuプラグインの設定は下で説明します。

CM3D2.VRMenu.MyKeyInput.dllを入れると、マイメニューが追加されます。マイメニューの各項目は単にキー操作をエミュレートするだけなので、各プラグインのキー設定を変更するか、CM3D2.VRMenu.MyKeyInput.csを修正するかして、キーを合わせておかないと、表示内容と実際の動作が一致しません。

設定

VRMenuプラグインの設定は、コントローラメニューMENUにある「VRMenu設定」と「ポインタ設定」です。

VRMenu設定

GUIサイズ
GUIパネルのサイズを変更します
頭の高さ調整
位置リセット時の頭の高さを調整できます。
LightPhysics
付属のLightPhysicsプラグインのON/OFF設定です。LightPhysicsプラグインがインストールされていない場合は表示されません。LightPhysicsプラグインはメイドさんを複数出したときのフレームレート低下を防ぐプラグインです。髪やスカートの計算を犠牲にして、フレームレートを向上させます。フレームレートは高くなりますが、代わりにメイドさんの髪やスカートがカクカクになります。メイドさんが1人だけのときは何もしません。※GPUがボトルネックとなっている場合は効果がありません。ただし、VR ReadyなGPUならほぼ確実にCPUがボトルネックとなっていると思います。

コントローラ設定

ポインタを常に表示
ONにするとポインタが物に隠れなくなります。
掴み設定
各オブジェクトを掴めるかの設定
トリガーでのワールドY移動
トリガーでのワールドY移動をできるようにするか
グリップでのワールドXZ回転
グリップでのワールドXZ回転をできるようにするか
ポインタサイズ
ポインタのサイズを調整できます。
ポインタ距離
コントローラからポインタまでの距離を調整できます。

メニューに項目を追加したい、項目を変えたい

C#のコードを書く必要がありますが、簡単にできます(多分)。CM3D2.VRMenu.MyKeyInput.csを見てください。 このファイルは他のプラグイン等には依存していないので、単体でAutoCompileできると思います。

インストール

ReleaseページにあるVRMenuPlugin.zipのSybarisフォルダをコピー

PluginExt.dllに依存しています。まだ入れてない方は、ここからDLLを落としてUnityInjectorフォルダに入れておいてください。

最小構成で使いたい場合は、 CM3D2.VRMenu.Plugin.Patcher.dllCM3D2.VRMenu.Plugin.dll だけあれば使えます。他の各ファイルは以下の通り

DLL 説明
CM3D2.VRMenuWithGripMove.Plugin.dll GripMovePluginと共存させる場合は必須です。GripMovePluginのIKモードを追加します。
CM3D2.VRMenu.MyKeyInput.dll メニューを追加するサンプルです。なくてもOKです。これで追加されるメニューのうち「マイメニュー」はキー設定が合っていないと思うのでそのままでは使えません。
CM3D2.LightPhysics.Patcher.dll LightPhysicsプラグイン。フレームレートを改善するプラグインです。デフォルトでは無効の状態になっていて、VRMenuプラグインから有効にします。ソースコードは諸事情により公開していません。
CM3D2.LightPhysics.Managed.dll LightPhysicsプラグインの一部です。

開発者向け

プルリクして頂ければ基本取り込みます。メニュー・モードの追加とか、Oculus Touch対応とか(私は持っていないので)、大歓迎です。

ビルド方法

参照してるライブラリのパスを解決させればビルドできると思います。依存ライブラリはリポジトリルートのCMLibraryフォルダにパスが設定されています。

メニュー項目の追加

CM3D2.VRMenu.MyKeyInput.csと同じようにやれば追加できます。本プラグインはVR版でしかロードできないので、通常版でも動くプラグインでVR用コントローラメニューを追加する場合は、リフレクションを使ってください。

モードの追加

モードの追加や、ボタンを押したときの挙動を作り込みたい等は、多分、プラグインを参照に追加しないと難しいと思います。

ライセンス

私の書いたコードはMITライセンスとします。

お約束

  • MODはKISSサポート対象外です。
  • MODを利用するに当たり、問題が発生してもKISSは一切の責任を負いかねます。
  • カスタムメイド3D2を購入されている方のみが利用できます。
  • カスタムメイド3D2上で表示する目的以外の利用は禁止します。
  • これらの事項は http://kisskiss.tv/kiss/diary.php?no=558 を優先します。

About

カスタムメイド3D2 VRでの操作を改善するプラグイン

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages