bHaptics系のベスト[ Tactot DK3 / TactSuit X40 (X16) ]をVRChatで使う方法
初めての記事作成です。
長すぎるのでnote記事にしてみました。
はじめに
筆者は最近旧モデルのデバイスであるTactot DK3 (振動モーター数40個)を手に入れたので、VRChatで使う方法を試していました。
そんな中でAvatar DynamicsがVRChatへ追加され、その中のギミックとOSCを使ってbHaptics系のベストを使うソフトウェアが海外の有志の方によって作られていたのを発見しました。
試したところいい感じに安定して動作したので、その辺を説明や覚書程度に書いてみました。
振動触覚ベストについては、現在TactSuit X40 / X16 がbHaptics社から購入可能だと思います。(2022/5/4)
デバイスの購入方法についてはここでは説明しません。
なお X40 / X16 はそれぞれ振動モーター数 40 / 16 個のモデルであり、X16ではここに書かれた方法だとうまくいかない場合があるかもしれないことをご了承ください。
必要なもの
ベストのペアリングはbluetoothを使うので、PCとデバイスをペアリングできる環境を整えておいてください。
bHaptics系のデバイス(※)
振動ベスト / 触覚スーツ デバイス本体bHaptics Player
振動ベスト用アプリ
bHaptics社ダウンロードページbHapticsOSC
OSC送信ソフト&Avatarセットアップ用SDK
GitHub Release branch (link)
[ bHapticsOSC_v~.zip : OSC送信ソフト本体の入ったzip ]
[ bHapticsOSC_v~_VRCSDK.unitypackage : Avatarセットアップ用SDK ]av3-animator-as-code
Animatorレイヤーを生成するUnityEditor機能
GitHub Master branch (link)
[ Code > Download Zipでダウンロード ]
VRChat用Avatar の Unity Project セットアップ方法
ベストへ対応させるアバターはPBに対応したverのVRCSDK3.0をimport済みであることを確認してください。
セットアップ方法はbHapticsOSC GithubページのWiki内、Custom Avatar Integration -i , -ii , -iii に記載されています。
bHapticsOSC Github Master ページ
>Wiki
>VRChat
>Custom Avatar Integration
- i. Importing Animator As Code
- ii. Importing the SDK
- iii. Applying Integration
画面で見た感じについてはそのページにお任せしつつ、補足説明チックですが以下の①~④に書いていきます。
① av3-animator-as-codeのインポート
ダウンロードしたzip [ 必要なもの : 4 ] を解凍し、中の"av3-animator-as-code-main "フォルダをコピーします。
アバターのunityプロジェクトをエクスプローラーで開きAssetsフォルダ直下へ"av3-animator-as-code-main "フォルダを入れます。
※unity projectを開いて直接フォルダをインポートしても動きますが、たぶんエクスプローラーからの方が安全です。
② Avatarセットアップ用SDKのインポート
①を行ったアバターのunityプロジェクトを開いてbHapticsOSC_v~_VRCSDK.unitypackage [必要なもの : 3] をimportしてください。
③ bHapticsOSC Integration Component の適用
(1)コンポーネントの追加
Avatar DescriptorのあるObject(大体はアバター名)を選択し、InspectorからAdd componentで"bHapticsOSC Integration"コンポーネントを追加します。
(2)使用デバイスの決定
"bHapticsOSC Integration"コンポーネントに人がデバイスを付けている画面が表示されていることが分かると思います。
初期設定でVestが選択されているので+ADD DEVICEすると、アバターのChest boneにContactが付いたVestが追加され、アバターがVestを着た状態になります。
※他の部位の振動デバイスを持っている人は、ここで該当のデバイスをクリックするとそれらのADD DEVICE&セットアップもできると思います。
(3)Vestモデルの可視化設定とPosition Rotation Scale調整
Vestの3Dモデルは"bHapticsOSC Integration"コンポーネントのShow Meshのチェックを外すと消せます。
同コンポーネントのPosition Rotation Scaleをアバターに合わせて調節してください。
④コンポーネントの適用
コンポーネントのAPPLY INTEGRATIONを押すと、コンポーネントが消えて判定用のbool parameterが追加されたFX controllerが生成されます。
また生成されたFX controllerがAvatar Descriptorにセットされます。
アバターをアップロードして終了です。
[躓きQ&A]
[1] Vestの3DモデルのScaleがおかしい/表示されない
"bHapticsOSC Integration"コンポーネントのScaleのxyzを100か0.01にしてみてください。
Avatarや服のFBX出力時のスケールによってはScaleのxyzが1でもVestの3Dモデル大きくなったり小さくなってるので、コンポーネントのScaleを変更してみると良いです。
[2] VeryPoorになる
ContactのVeryPoor上限は32個です。
判定用のContactは80個あるのでアバターのperformanceランクはVeryPoor確定になります。
[3] Questで動かない
[2]の条件があるので、Quest用アバターに対してセットアップ
>アバターのperformanceランクがVeryPoorになる
>VeryPoorになることによりアバターがアップロード不可/Contactギミックが消されます。
よってQuest単体では動かないと思います。
(bHapticsデバイス自体は対応ゲームであればQuest単体でも動かせるが、現在のVRChatの仕様上の問題があり、今回の方法では使えない)
[4] PC版アバターのQuest対応はできない?
できます。
PC版アバター
ギミックをセットアップしアップロードQuest版アバター
ギミックをセットアップしてない状態の同アバターをアップロード
とすれば、着る側がPCVRならQuestユーザーの接触判定もきちんととれます。
APPLY INTEGRATIONしたアバターのunity projectを複製してQuest対応させたい場合は、アバターのChest bone内のVest Objectを消去すれば大丈夫だと思います。
※追記(2022/07/27)
[5] Vestの設定をやり直したい/ギミックを消去したい
・設定を間違えて適用した
・振動ギミックを削除したい
・FXを変更したいが、管理の観点からオリジナルのFXを変更してからFXを複製してやり直したい
(コピーされたFXを変更するとギミックを削除したいときなどに煩わしいため)
ときに有効なやり方です
①生成されたFXコントローラーを削除
②元のFXコントローラをAvatar DescriptorのFXに設定
③"bHapticsOSC Integration"コンポーネントを再度アバターへ追加
④現在付けているデバイスの適用時の設定がそのまま表示される
⑤-A 設定のやり直しの場合
そのまま設定を変更してAPPLY INTEGRATIONすることで設定をやり直せます
⑤-B ギミックを削除の場合
Remove Deviceをすればギミックは消えます
※①を行うことでFXをコピー元から再生成できます
bHaptics Playerとベストの使い方
早速VRChatに入ってベストを試しましょう…と行きたいですが、bHapticsのソフトウェアとかデバイスの使い方、調整とか一切してないのでそこらへん説明します。
①bHaptics Playerをインストールして起動します
[ 必要なもの : 2 ]でダウンロードしたexeを実行します。
Steamストアからでもインストールできた気がします。
②bHaptics Playerの日本語化
bHaptics Playerを起動すると右下の小さな画面が出てきます。
右上の歯車マークをクリックすると画像上の大きな設定ウィンドウが出てきます。
設定ウィンドウからSETTING>Langageで日本語が選べるので便利です。
変更すると”再起動して”と言われるのでRestart Nowを押しましょう。
③デバイスのペアリングと各種設定
DK3の場合ですが書いていきます。
まずPCにBluetoothアンテナがあることを確認してください。
無ければBluetoothドングルを買ってください。
bHaptics Playerを起動後、ベストの電源ボタンを押してください。
ベストのランプが点滅すると、bHaptics Playerに灰色のベストのアイコンが点滅して現れます。
bHaptics Player右上の鎖アイコンをクリックすると、しばらくしてベストがペアリングされます。
設定windowからベストの振動強度・自動終了する待機時間などが設定できて、ベストのファームウェアもここで更新できます。
ペアリング解除をしたい場合は鎖アイコンの右のアイコンを押してください。ベストはもう一度ボタンを押せば電源が切れます。
bHapticsOSCの使い方
VRChatから信号を拾ってくるOSCソフトの使い方を書きます。
①セキュリティ許可
bHapticsOSC_v~.zip [ 必要なもの : 3 ] を解凍します。
解凍後のファイル内のbHapticsOSC.exeとbOscLib.dllのプロパティを開いて、"セキュリティ:許可する"にチェックを入れ適応を押します。
②信号強度の設定やデバイスの有効化
解凍したbHapticsOSCファイル内にDevices.cfgというconfigファイルがあります。
メモ帳で開くと、デバイスの有効無効やIntensityが調整できるように見えます…?
bHaptics PlayerとどっちのIntensityが有効になっているのかはよくわかりませんが、筆者は[Vest]のEnabled=True を確認してIntensityの値をbHaptics Playerの値と合わせて保存して使っています。
Intensityは20~40くらいが適度だと思います。
③bHapticsOSC.exeを起動
bHapticsOSC.exeを起動します。
起動するとbHapticsOSCのウィンドウが表示され、コンソールのような画面が表示されると思います。
"bHaptics Playerと接続済み"とbHaptics Playerの画面に緑帯で表示されると思うので、その状態で起動成功です。
VRChatで対応アバターを着て振動触覚を楽しむ
お疲れさまでした!!
早速VRChatに入ってベストを試しましょう!!
…
[躓きQ&A その2]
[1]対応アバターを着て触られても振動が来ない
VRChatのActionメニューから
Options>Config>Avatar Overlay >Contacts
を選択します。
すると振動判定用のContactの青い球が見えるはずです。
アバターの標準コライダーにContactの球が接触すると、振動判定がなされてベストが振動します。
見えてない場合は何らかの理由できちんとアバターセットアップができてないので、Projectのセットアップ方法&[躓きQ&A]を見直してやり直してみてください。
見えているにも関わらず動かない場合は以下を試すと改善するかもしれません。
Actionメニュー>Options>OSC>Reset Config
Actionメニュー>Expresstions>Reset Avatar
VRChatやbHapticsOSCを再起動
[2]自分が触っても振動が来ない
クイックメニュー>Settings>Self Interactがバツになっていると、自分で触っても反応しません。
逆にメニュー操作時に反応してしまって振動が煩わしい場合はバツにして置くと良いです。
[3]アバターコライダー以外のコライダーに反応しない
基本的にアバターの標準コライダーに反応するので、自前で追加した武器のコライダーやワールドのコライダーには反応しないようです。
Contactのタグ次第とは聞いているのですが…(筆者がその辺の設定を理解できていない)
VRChatのContactの仕様を確認すると良いかもしれません。
おわりに
私も深い仕組みについてはよくできていませんが、躓きポイント含めてできるだけわかりやすく詳細に書いてみました。
Avatar Dynamicsが追加されて新しくなったVRChatでbHapticsの振動触覚が使える!!楽しい!!ということが広まれば幸いです。
長い文章でしたが,読んでいただきありがとうございました!