見出し画像

フィットネス用スピンバイクをVRCで使うことについて。

さて、今回は新しいVRCの遊び方、フィットネス用バイクを使うことについて、少し書き残しておきます。
ここまでの経緯、現状、今後こうなったらいいな、ということなど書けたらと思います。

23/5/8追記)
VRCフィットネスバイク アプリが、みっちーさんのほうからベータ版として頒布開始されました!下記よりDL可能です。

ききょうぱんださんが制作されたショート動画です、VRCフィットネスバイクの楽しみ方がとてもよく表現されております。PVがわりにご覧ください!

ここまでの経緯

みっちーさんのジョバンニ

つい10日程前(23/3/16)のこと。疑似フルトラデバイス『だみとら』の件で、ツイッターで親交のある、みっちーさんとお会いすることができました。(訪ねてきていただきました、誠にありがたき…!)
僕はついつい、自分のことばかり長々と話してしまいましたが…!

みっちーさんと。

https://twitter.com/super_sierra/status/1636495464735571968?s=20

この時、フィットネスバイクをVRの入力デバイスとして利用できたら、というお話をしました。
みっちーさんも同じように考えて、以前フィットネスバイクを買ってみたものの、VRCの入力に変換するソフト作成に手を付けておらず、家族からも邪魔と言われてる、ということでした。

がしかし、その僅か3日後、センセーショナルなツイートが…!

これは本当、なかなかの話題で、結構多くの人が『お、いいな!』と関心を寄せたことが反応から伺えます。(535件のRT、27件の引用、1,354件のいいね、102のブックマーク)

よもやこんな早期に実現するとは!流石です!!!

前日談

余談になるかもですが、僕も以前から、こういうことがしてみたいと思っていました。3年くらい。だいたい半年周期くらいでマイブームが来てたと思います。

Zwift

Vtuberさんの中に、Zwiftをプレイすることを配信していらっしゃる方とかがいて「これは面白そうだな」と思ったんです。友達のいちたろうさんとかも始めていたこともあり、これはやってみたいなと。

だけど「ちょっと待て」感

ここで自分の中で気になることが2つほどあって、この時は思いとどまっていたのです。

  • お金が結構かかる

これやろうと思ったら、自転車を部屋の中に設置して、PCに動作を伝えるための機材を買ってきて接続する必要があります。
これが結構高くて、ネット通販で探して8万円~?くらいだったかな。しかも安い機種は負荷の調整機能がよくないだとか、ちょっと不安要素もありました。
サイクルショップで聞いてみたところ、10万円以上の機種を勧められました。
しかも肝心のバイクも用意する必要が。僕はミニベロが好きで4台くらい所持してるものの、これたぶん700cとかのロードかクロスみたいなのを使う必要があって、それも買わないと、と。

  • ガチめのところ

zwiftはより本格的に、自転車をスポーツとしてやっていきたい人向けな感があって。もちろんそれ自体いいとは思うんだけど、もっと軽い感覚でやれるものがやってみたかったんですね。
自転車に乗る目的が、たくさん走り、早く走り、そういう結果を競って得られる達成感であるなら、存分にzwiftを使えるかも…。

zwiftについて個人的に感じたこと。

そんなこんなで、zwiftにはついぞ手を出さず。
だけどより僕の希望に近いものをクラウドファンディングで見かけて出資したりもしました。

Blync

これは軽い感覚、という点はよかったです。実際にペダルとハンドルを使って運動して、それがクエスト内の体験に反映されるというのもよかった…。
だけど、これマイナーな機材なんで、独りでやるしかないのがとても寂しかったです。

"blync"の機材(手持ちのミニベロを部屋に設置してセンサーを接続した)

結局、独りがつまんなくなって、フルトラをつけてVRCにログインして、友達と話しながら、自転車を漕ぎながらコントローラを握り、普通に歩き回ったりしてみました。こっちのほうが快適だった…。

BlyncのセンサーをVRCで使えたらいいのに!という希望を表した図。

UdonCityCycling

その後、VRCのワールドギミックでこれを実現した人も現れました。
これは希望が持てそうだった!
全身にトラッカーをつけて、台に据え付けた自転車にまたがり、そしてVRC内で自転車にsitして、そして走ってみると、確かに走れました!
ですが、最初の手間が結構大変なこと、また走行中にトラッカーのドリフトがかなり発生(慣性キャプチャ「Haritora」初期にBoothで販売されたもの)してしまうこと、また遊べるワールドがとても限られる、というあたりちょっと難しかった感です。

そしてやはり、このように思いました。
(あとから見返して、自分の他力本願が酷いなと感じています)

現状

そんなこんなで突然実現しました!
現在(23/3/28)、まだアプリとしては開発途上にありますので、使える機種が限られていたり、コマンドプロンプトからプログラムを実行したりする必要があります。

23/5/8追記)
VRCフィットネスバイク アプリが、みっちーさんのほうからベータ版として頒布開始されました!下記よりDL可能です。
対応機種、操作説明等、リンク先のサイトにある説明を正規と致します!

必要な機材

とりあえず自分がやるにあたり必要だったものを記します。

  • フィットネスバイク等

  • Bluetoothドングル

  • VRC内でのOSC有効設定

  • みっちーさんのアプリ

  • アバターのアレンジ(任意)

以下にちょっと仔細を記します。

フィットネスバイク等

先ずはPCに情報を送ることができる必要があります。ペダルを回す速さを使います。これは「ケイデンス」と呼ばれます。(弱虫ペダルで印象的な単語ですね)
バイクないしセンサーに通信機能があること、スマホやPCとANT+ドングルなしで連携して使うことができる機種であることが必須条件です。こういう機種では、"BLE"で通信ができるようになっています。これはBluetoothの一種のようなので、これを使います。(ANT+については対応してないし今後も不明)

また、メーカーによって通信で使うIDが異なっているらしく、機種ごとに送られてくる信号の内容を解析して、対応するプログラムを作る必要があります。
もし新規に用意するのであれば、他の人が先に動作確認された実績のある機種を選ぶのがよいです。
現状わかっているのは下記です。(今後何が増えるかは不明)

23/4/13追記)重要!
MERACH社製のバイクを僕のほか2人購入して皆でテストしていましたが、BLEでPCに送信されてくる内容の仕様が3台とも異なっており、アプリ側での対応が困難でした。
今後も同種の問題が起きる可能性があります。MERACH社製のバイクについては、アプリに繋がらないかもしれません。個人製作のアプリですので、サポートもできません。
これらの事情から、MERACH社製バイクは非推奨と致します。

  • MERACH S04

MERACH S04 ※このメーカーは動作できないかもしれません!

僕が入手したものです。みっちーさんにご協力いただいて、対応するプログラムを作成いただきました。(ありがとうございます!!!)
BLEの通信機能を持つ機種としては見た限り最安(amazonで¥12,980)でした。
見ての通りペダルのみですので、コンパクトでいいですが、キャスター付きの椅子でやるのは難しいです(椅子が動いちゃう)。DIYで椅子の足とこれをくっつけて固定して使う工夫をしています。

尚、同じメーカーには他にサドルとハンドルを備えた機種もありますが、プログラムがそのまま対応できるかは不明です。

  • MERACH MR-667B

MERACH MR-667B ※このメーカーは動作できないかもしれません!

23/4/3追記)
これをお持ちのユーザーさんも試していただけました。上のS04と同じ設定で使えたそうです。

  • zepan&Nexgim NEXGIM MG-X05

NEXGIM MG-X05

みっちーさんが使っている機種で、最初に開発に利用したものです。
楽天、amazon等では品切れのようでした。価格は楽天では¥35,610でした。
メーカー廃番なのかどうかよくはわかりません。(23/4/13追記)メーカーのサイトでは¥24,800でした。
同じメーカーの5万円以上する機種は売られています。が、プログラムが対応するかは不明です。

これと外観ほぼ同じのものが他メーカーでも散見されます。ですが、そもそもBLE接続の機能が無いものが多いので、その場合は根本的にPCに接続できないので使えないです。(後述のケイデンスセンサー併用の場合はこの限りではないです)

またMERACH社にもこれと同じ外観の機種があります。これは低価格(amazonで¥24,800)でBLE接続も可能です。ただしプログラムが対応できるかは未確認のため不明です。

  • ケイデンスセンサー(23/4/21追記)

そのほかでは、クランクに取り付けるタイプのケイデンスセンサーで、Bluetooth接続の機能を持つものについてテストをしています。
これが使えればBLE機能のないフィットネスバイクやローラー台の自転車とかでも使える可能性はあります。

試しにAmazonで安価なものを購入してみました。(機種は後述します)
センサー自体は、単体で回転してるのをジャイロかなにかで検知してるようで、マグネットとの近接とかではないタイプです。

大事な点として、サイクルコンピューターではなく、スマホに情報を送れる機能を持っている必要があります。
スマホに接続するには、Bluetoothの機能を持っている必要があり、これを利用してパソコンに接続するためです。

センサーの設定と取り付けは説明書通りにやれば大丈夫です。
その後、パソコン側からBluetooth機器の検索を行い、センサーを見つけてペアリングします。

センサーの通信は、Bluetoothに対応している必要がある。
ANT+(サイクルコンピューター用)のみ対応の機種もあるので注意。
センサーの取付説明。クランクに付属のゴムバンドでとめるだけでいい。
できるだけ足とかに接触しないよう気をつかう。
屋内でしか使用しないので多少緩めでも問題ないかも?
実際にケイデンスセンサーをバイクにつけたところ

前述の様なフィットネスバイクに比べ、市販の自転車用のサイクルメーターとの接続を前提にした機種のため、もしかしたら互換しやすく、よりアプリにつながりやすいかもしれませんが、確認がじゅうぶんでないため言い切れません。

機種やメーカーによって仕様の違いがあるかもしれませんので、どれが使えるかはわからないですが、実際にテストして使えた機種は下記です。

  • XOSS VORTEX

XOSS VORTEX

Amazonで買ったものですが、2個1組のものと、1個単体での販売がありました。1個単体での販売価格は¥2,350と安価でした。(調達方法によってはこれを使うのがいちばん安いかもしれません)
ケイデンス・速度の用途を切り替えて使うタイプですが、この場合は、ケイデンスモードに設定して、クランクに取り付けて使います。

  • CooSpo

CooSpo

こたのわさんが入手され動作テストに使われた機種です。
形態としては上記のXOSSと同様の製品です。Amazonでは¥2,250で販売されており、これも最も安価なセンサーです。

Bluetoothドングル

フィットネスバイクからのBLE接続を受けるPC側に必要なものです。Bluetoothのマウスやキーボードを稼働させるのに使ってるのと同じものです。

うちの場合は、BAFFALOのBluetooth4.0 Class2対応 USBアダプター "BSBT4D205BK"を使っています。(Haritora用に買って使ってるものです)
他の機種でも使えるかもですが、未確認です。

VRC内でのOSC有効化

12/4/3追記)
このアプリはOSCを使いVRCを制御するのですが、VRC側でOSCを利用できるように、スイッチを入れておく必要があります。
この操作はエクスプレッションメニューから行います。

  • エクスプレッションメニューを開く

  • Options

  • OSC

  • EbabledのスイッチをON

と選んでいくことでできます。

エクスプレッションでOSCをEnabledにする

みっちーさんのアプリ

アプリは現在(2/3/28)まだまだ開発中のものです。みっちーさんから直接わけていただく必要があります。

23/5/8追記)
VRCフィットネスバイクのアプリが、ベータ版として一般頒布開始されました!下記リンク先よりDLできます!
操作説明、対応機種等も、リンク先の説明が確実です!

23/5/8)正式頒布ページ開設に伴い、そちらの説明を正とします
23/4/3追記)
みっちーさんのほうでアプリのアップデートを実施、普通にexeファイルを開いて起動するようになりました!
これに関する内容を下のほうに追記します。

またアプリを使うには、コマンドプロンプトから実行ファイルを指定して実行、という手順が必要です。

コマンドプロンプトの画面

といっても難しいことはなく、ウインドウズの下のバー左側の検索欄に「コマンドプロンプト」とカタカナで入れたら、これでしょ?って教えてくれるのでクリックして立ち上げることができます。

あとアプリの場所をディレクトリから指定を書き込んであげる必要があるのですが、Cドライブ直下に実行ファイルを置いておくと、ファイル名(.exeも含め)を書き込んでenterキーだけで起動するので簡単です。(Cドライブ直下でどんな弊害が起きるかよくわからないですが)

今後このあたりは、みっちーさんの「だみとら」のように、アプリとしての見た目のものになっていくかもしれませんけども、未定かと思います。

23/4/23追記)
アプリのアップデートがあり、exeファイルから起動するタイプになり、UIも実装されました!

23/4/3 アプリのUI

アプリの操作自体は、みっちーさんのほうから説明があると思いますので、それに従ってください。一応、僕のほうの操作手順も書いておきます。
基本的には簡単です。(23/4/21アプリ仕様変更にあわせ追記)

  1. アプリのexeをクリックして起動

  2. フィットネスバイク本体の電源を起動

  3. 接続モード(中央右のチェックボックス)を設定
    バイクがNEXGIM製:□CPSで接続
    バイクがmerach製:□FMSで接続(Indoor bike)
        ※6.でうまくいかない場合、□FMSで接続(Cross Trainer)を選択
    ケイデンスセンサー使用:□CSCSで接続

  4. (1)のデバイス検索を実行、完了になったら次へ。

  5. (2)のテキストボックスをクリックして広げた中にある、フィットネスバイクの名前を選択。(うちのmerach S04であれば"MRK-S04-****"、NEXGIM MG-X05であれば"MG-X05"等の名称で表示されています)

  6. (3)の接続開始をクリック。別ウインドウでケイデンスの受信を示す画面も起動するかもですが気にしないです。

  7. バイクのぺダルを漕ぐと、アプリの”ケイデンス”と”VRC移動量”の数値が変化します。

  8. VRC側でも、移動してるか確認します。

尚、VRC内で、ちょっと操作を手間取ったり、ひとと話したりしてると、わりとすぐ接続が切れたりします。(数分でバイクの電源がスリープしたりするので)
その場合PCとの接続が切れ、ペダルを漕いでもPCが反応しなくなります。その場合、VRCは起動しっぱなしでよいので、バイク本体の電源を確認してから、(3)で立ち上がった別ウインドウを終了してから、再度(3)の接続開始をしてください。

アバターのアレンジ

ここまでで最低限稼働は可能です。ただ、せっかくなら自転車にまたがってる風に、アバターもなんとかしておきたいと思いました。
なので必須ではないですが、アバターをアレンジして、自転車にまたがらせ稼働させることについて記します。

アバターを自転車にまたがらせる。

基本的には下記のようなことをしています。

  • VRCSDKでアバターに自転車を組み込む

  • VRCSDKでロコモーションアニメを入れ替える

  • OVR AdvancedSettingsを利用する

  • だみとらを利用する

アバターに自転車を組み込む

VRCSDKでアバターに対して自転車モデルをくっつけてアップします。
とはいえ、たんにくっつけるだけでは地面からの高さがちゃんとしなかったり、角度が変になってしまったり、丁度いい場所に持ってくるのが難しそうなので、コンストレイントを応用して扱いやすくしています。

自転車自体は特にどんなという指定はありません。VRCにアバターとしてアップして利用するのに問題のないものを利用します。Boothやアセットストアで問題のないものを確認して買うのでいいと思います。
どうしてもお気に入りの機種があるなら、自作もいいですね。

モデリング中のBYA412

アバターに対して、自転車のモデルをPrefab直下に置きます。
アバターと正面の向きは同じにしておき、前後車輪は地上に接地、サドルは任意の高さにし、股の間の真下にくるよう合わせます。

それから同じくPrefab直下に、Create Emptyで空っぽのオブジェクトを作成して、サドルの座る位置真ん中付近に持っていきます。

そしてこの空っぽオブジェクトに、ParentConstraintを追加して、SaurcesにアバタのHipsボーンを指定、IsActiveのチェックをON、FreezePositionAxesのY軸のチェックをOFF、FreezeRotationAxesのX軸のチェックをOFFします。

この設定をしたのち、自転車モデルを、空っぽオブジェクトの階層下にします。

これで、自転車は常に地面に接地しつつ、アバターの身体(Hips)と同じ前を向き、お尻を任意の高さにしても位置が変動してもサドルはその下になります。

自転車の階層とコンストレイント設定

ロコモーションアニメを入れ替える

(23/4/6追記)
通常、アバターは歩いたり走ったりしますが、そのままでは都合が悪いので、自転車に乗っている状態のポーズをさせたいと思います。

この際、UnityのVRCSDK内にある、歩いたり走ったりを制御する部分を、各自で作り変えて、それを利用するように設定する必要があります。

制御部分のスクリプトは、VRCSDK-Avatars の中にあるものをコピーして使います。
先ずはProject内に、各自任意のフォルダを設けます。
そこに、必要なスクリプトをコピーしてきます。コピー元は、Project内にある下記の3つです。
コピーしたスクリプトは、名前をわかりやすいものに変えておきます。

VRCSDK-Avatars
 └Samples
   └AV3 Demo Assets
     └Animation
       ├BlendTrees(ブレンドツリー)
         ├ vrc_CrouchingLocomotion ※中腰歩きの制御
         └ vrc_StandingLocomotion ※通常歩きの制御
       └Controllers
         └ vrc_AvatarV3LocomotionLayer ※歩行の切替制御
                     (ロコモーションレイヤ)

ブレンドツリーのコピー元
ロコモーションレイヤーコントローラのコピー元
任意のフォルダに必要なスクリプトをコピーして、名前を変えた

次にHierarcy(ヒエラルキー)に出してあるアバターにつけてある VRC Avatar Descriptor(アバターディスクリプタ)に移ります。

アバターディスクリプタ内に「Playable Layers」という項目があります。
この中の「Base」欄をクリックして、先程コピーしておいた『「vrc_AvatarV3LocomotionLayer」の名前を変えておいたもの』(名前が長いので以降「任意のロコモーションレイヤ」と呼称します)を指定します。

アバターディスクリプタの Playable Layers の Base を替える

いま指定に使った「任意のロコモーションレイヤ」について、その中で指定してるブレンドツリーを替えます。

Unity上でAnimatorウインドウを出して(Unityの上のタブ"Window"からWindows→Animatorと呼び出せます)、Project内で「任意のロコモーションレイヤ」を選択します。

すると、アニメーションを制御しているステートが表示されます。
そこで「Standing」ステートと、「Crouching」ステートを選んで、Motionの指定を、先程コピーしたブレンドツリーに替えます。

「任意のロコモーションレイヤ」内にあるステートのMotion指定を変える(2か所)

一応ここまでで、必要な制御スプリプトを任意のものに入れ替えることができたはずです。(説明不足かもしれないのは勘弁…)

次に肝心のアニメーションを入れ替えます。
アニメーションは任意に作成されたものを用います。僕が作ったものはあまり上手ではないですが、一応共有しておきます。下記からDL可能です。

https://drive.google.com/drive/folders/1ajfkxbQ3t1z7LyRTxizjYJFUvdON7VFr?usp=sharing

この中にアニメーションファイル(anim)が2つあります。どちらも自転車に乗ってハンドルに手をかけて、足でペダルをまわすものです。
末尾に"fast"とあるほうが回転が速くて、ケイデンス100くらいに見えなくもない(全く計算してない)です。もう一つのほうは速度がだいたい半分くらいです。

※ポースやアニメーションがお好みでない場合、各自で製作されても良いかと思います。僕もアニメーションは素人で、今回とりあえず作ってみただけなので…。
アニメーションを作るのはいろいろな方法があると思います。僕は今回下記の動画を参考にして作りました。

https://youtu.be/PjzGfP74XfA

DLしたanimファイルは、Unityのproject内の任意の場所に入れておいてください。
この際、アニメーションを選択してinspector上で"Loop Time"のチェックをONにしておいてください。

アニメーションのLoopTimeのチェック
自転車ようのアニメーション

このanimファイルを、ブレンドツリー内の指定に入れていきます。
最初にコピーしてきて、先程ステート内の指定に用いたブレンドツリーを、project内で選択すると、inspectorに、その中身が表示されます。

これはコントローラがどの方向にどんだけ倒されたかによって、どのアニメーションを実行するか、2次元座標の図で表現されています。

今回はこの中で、forard(前進)に使われているものだけを入れ替えます。
図に示す部分が、前進で使われてるアニメーション指定です。これを任意のアニメーション指定に替えていきます。

Standing(普通の歩行)のブレンドツリー
赤で示す部分の指定のアニメーションを入れ替え
Crouching(中腰の歩行)のブレンドツリー
赤で示す部分の指定のアニメーションを入れ替え

※ここで中腰の部分も入れ替えているのは、自転車に座った際に、普通の歩行と中腰歩行がブレンドされて実行されるからです。

ここまでで、ようやく歩行アニメーションの入れ替えができました。
書いていて、やっぱこれ面倒そうだよな と思ったのですが。VRCSDKに入ってる関連ファイルの再配布を避けると、最初の手順が面倒になるのはしょうがないかも…でも、これができると、見た目だいぶそれっぽいです。

OVR Advanced Settings

自転車にまたがっている格好を微調整する際に利用しています。
座ってる高さが自転車のサドルと自分が座ってる高さであわないことが多いので、これを利用して高さを任意の位置に調整するとよいです。

だみとら

(23/4/6改訂)
みっちーさんが頒布されてるアプリです。3点トラッキングのVR機材を使いながら、VMTを併用して下半身のフルトラの環境を仮想で扱えるようにするものです。
前述の「ロコモーションアニメを入れ替える」だけでも、アバターを自転車に乗せる格好にはできていますが、だみとらの併用で、更に機能を持たせることができます。

アバターに思い通りのポーズをさせることができるので、より自転車に適したポーズをアバターにとらせることができます。
OVRAdvancedSettingでは、アバターの位置を調整しますが、だみとらでは、ポーズを調整します。
またポーズ登録して簡単に呼び出すことができるのも便利です。

だみとら利用時は、VRC内の設定で、フルトラ時のロコモーションアニメをOFFにしておいてください。(フルトラを常用されてる方は既にやってあることも多いと思います)
これはフルトラ利用時にのみ選択できる項目です。先ずはだみとらを起動してトラッキングを開始するか、お手持ちのフルトラ機材を稼働させます。
その状態で、VRC内でメニューを開き、右下の歯車マークのタブを選択。表示されるウインドウ中に「Tracking and IK」があり、その中の「LocomotionAnimation」を X にします。

LocomotionAnimation の切り替え

それから、今後アップデートで、バイクを漕ぐ速度に応じて足をアニメーションさせる機能の追加が予定されていますので、だみとらも楽しみですね。

今後こうなったらいいな

きっとみんなでやると楽しい

ここまでの経緯にさんざん書いてしまってますが、なんといっても友達の多いVRCで気楽にやれるのが利点です。
VRC内だからアバターとかも自前でお気に入りを使えます。

フルトラを使う必要もありません。(持ってる人は使うのもいいですけどね!)
フィットネス用バイクは買わないとですが、それもできるだけ安くできそうなものを選んで使えるようにしてみました。

なので、みんなでやりたいです!
いろんなVRCのワールドを、仲の良い友達と談笑しながら、自転車を漕ぎ散歩したいです!

それがきっと、楽しい体験になると期待しています!
なおかつ運動になります。
外が暑くても寒くても雨でも風でも雪でも、部屋の中ならラクです!

僕がこれまで試したり検討した中で、このやり方は僕にとっていちばん理想的に近いです、お薦めしたいです!


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