ツンドラトラッカー来たよ

TundraTrackerとは。HTC ViveシリーズやValve Indexといった、VRバイスが持っている規格LightHouseに対応した、多分初めてのサードパーティーの単体トラッキングバイス。Viveトラッカー1.0/2.0/3.0の代替になるアイテム。2021/3にKickstarterでキャンペーンが開始された

3月末に届いていたのでどんな感じかザックリと。コロナ影響で日本発送拠点を移したり、技適パスに時間がかかったり、いろいろあったようですね…うーむ。大変だ。

パッケージ

購入したのはKickstarterの5個バンドル。ツンドラ印の入った専用キャリングケースで届く。Twitter見る感じ、3でも5でも7でもこのケースで届く模様?

f:id:o_mega:20220417031123p:plain

5bundleの付属品は

  • ツンドラトラッカー+ストラップ台座x5
  • スーパーワイヤレスドングル(SW5)x1
  • ストラップ(ショート)x2
  • ストラップ(ロング)x3
  • USB A-Cケーブル30cmx5
  • 三脚ネジ穴台座x5
  • USB A-Aメス(延長ケーブル)x1
  • シール
  • キャリングケース

といった塩梅。三脚ネジ穴台座がオプションで、ストラップ台座とストラップが標準についてるという、「とりあえずフルトラしたいでしょ?わかるよ~」という親切さ。Viveトラッカーだとそういうのがなくて、身体への装着法で困ったりするからね

 

外見チェック

ツンドラトラッカーwith標準台座、Viveトラッカー2.0、スーパーワイヤレスドングル(SW5)

ツンドラちいさい。かるい。突起が減ったことで、ケーブル類を引っ掛けてしまうリスクはかなり減る

スーパーワイヤレスドングルくんは大きめ…?USBハブに繋ぐ時、そのままでは隣のポートを塞いじゃうか、無理してギリギリって所です。推奨としては延長コードを繋いで他のドングルと離すべきではあるのでこんなもんでしょう。これ1個でトラッカー5個ペアリングできるのはありがたい… USBハブ追加したり塞がなくて済む。

f:id:o_mega:20220417031007p:plain

交換台座

背面台座はプラスネジで外して脱着可能。ベルト通す標準台座と、右の三脚ネジ穴台座が付属。

f:id:o_mega:20220417031628p:plain

三脚ネジ穴台座と交換すると、ネジ穴と回転防止ダボ穴もViveトラッカーと完全一致。その他のViveトラッカーアクセサリとそのまま使えます。画像は自作の腰トラ台座

f:id:o_mega:20220417031640p:plain

おや…このコネクターは…?

f:id:o_mega:20220417031705p:plain

booth.pm

これ用らしいです。ViveトラッカーのあったPogo PINと同じような感じで拡張できるみたいですね。自作ハードを作ったりする人には助かる仕様

公式のCADデータ3Dプリンタ自作勢にはありがたい

 

付属ストラップ

さて付属のストラップ、初期装備としてはなかなかグッド。

全体が収縮するストラップ+ベルクロ固定。この収縮具合はキツくないのはそれはそれで良いのだけども、逆に強く締め付けるのは苦手。

画像はショートのストラップ。足首や二の腕に巻くのにちょうどいい

f:id:o_mega:20220417033718p:plain

台座がプラなこともあって、ストラップに沿って滑りやすいのは気になる。ので、グッとストラップを引っ張ってやり、ストラップが重なっている部分を台座に食い込ませると、ストラップが台座に固定できる。オススメ

f:id:o_mega:20220417034357p:plain

ロングのストラップは自分の腹回りの分では足りるぐらいの長さがする。腰トラ対応ヨシ。手足につけて長さ余る時は3回ぐらい巻きつけると固定できる。

ただ、どちらにしろストラップの固定/締め付け力はそこまで高くなく、ツンドラトラッカーの小ささも相まって、腰の安定感にはちょっと足りないかも。ズボンの腰ベルト穴に通すとマシかもしれない。あるいはグリップ加工を追加する、とか。

 

とはいえ、届いてすぐフルトラを試すには十分以上。激しくダンスするとかしない限り、ゆったり動かすには概ね良さそうなキット。足首や腕、二の腕に固定するのは本当便利。助かる~

 

SteamVRで使う

SteamVRで見ると、ちゃんとVR空間内のトラッカーモデルがツンドラになる。バッテリー残量表示も良さげ。

f:id:o_mega:20220417040518p:plain

初回はファームウエア更新が必要だったり必要じゃなかったり。うちの5個はファーム更新が要求されたもの、されないものが混在していた。とはいえやることはいつもどおり、SteamVRの要求に従ってUSBケーブルでPC本体と接続し、なんやかんや待つとファーム更新は完了する

 

稼働時間は確認できるほど長く運用してないので、まだ分からない。少なくとも2,3時間ぶん回す程度では切れず。

 

使い勝手は…といってもトラッキングできれば概ねViveトラッカーと、変わる所は特にない。一回り軽く、引っ掛けにくい。

がやはり、突起が減ったことで、座面側へのトラッキング範囲はやや縮小している様子で、足トラッカーなど隠れやすいケースではトラッキング漏れがViveトラッカーより起きる印象。自分の環境はベースステーションx3機構成なのだが、それでも隠れる時は隠れるので、必要に応じて台座の嵩上げ/身体から離す改造はしても良さそうだ。

自作の底上げした腰トラマウントの場合は調子良い感じで、ほぼトラッキング漏れは発生しなかった。Viveトラッカー同様、埋まりやすい服の上(特に腰やシワの発生しやすいシャツ二の腕など)だとトラッキング漏れが発生すると思われる。同様に嵩上げしてやればかなり改善する。

 

充電問題

数少ない不満点はUSB-C接続して充電するとSteamVRが起動してしまうところ。どうやらペアリングしてるPCに対して、起動信号を送っている?のか?けっこう邪魔だが、現状対処する術がなく困っている。Tundraトラッカーも充電をトリガーに起動してしまうようで、ペアリング先PCが起動していると充電USBケーブルを外しても、Tundraトラッカーがスリープ/電源オフに移行しない

 

とおもったらSteamVR起動については解決方法があるようだ

公式フォーラムでも同様の話があがってる

 

 

あと使ってるとスーパーワイヤレスドングルは結構発熱します。SW5は問題ないようですが、SW7では問題が起きてるケースもあるらしい。IndexHMDの正面凹みに入れることを検討してる人も注意、HMDがますますアツアツムレムレになります。大人しくPCにつけよう

まとめ

  • かるい。ちいさい。
  • 小さく突起がない分、すこしトラッキングロストしやすい?
  • フルトラ最適化台座になかなかグッドなストラップ付き。届いてすぐフルトラできる
  • 充電時に電源オン&SteamVR起動してしまう仕様があるが、修正可能らしい?充電まわりはちょっと怪しい
  • SWドングルは便利。アツアツなのは注意

一般販売価格を見る分に一個$120のようで、価格面でも付属ストラップの面でもViveトラッカー3.0よりお得なプライスだ。ただ、トラックロストは一回り発生しやすくストラップの工夫やベースステーションの追加を検討したくなるかもしれない。

充電周りは若干怪しい。今後のファーム更新でなんとかなると助かるなあ

 

現状、生産が間に合っておらず入手が困難なのが一番の問題、おしい…

OSC 心拍計アバターセットアップガイド

OSC HeartRateSenderに連動して動くアバターのセットアップ方法のガイドです。VRChat SDK Avatar3.0規格でセットアップ済みのアバターを前提にしています。

 

基本的にはAvatar3.0のExpressionParameterを使ったアバターギミックとセットアップ方法はおなじになります。ラジアルでのシェイプキー操作方法|みかんねここ|noteのような、RadialPuppetとExpressionParameterのFloatを使うAvatar3.0カスタマイズ記事は参考になるでしょう

 

ここでは、具体例として火事屋さんのアバターU10素体版を例にセットアップをしていきます。なお、完成したアバターについてもpackageに含んでますので、参考にしてみてください

booth.pm

基本の仕組み

OSCとVRChatのAvatar3.0は概ね以下の流れで動きます。

  1. OSC HeartRateSenderはOSCで心拍数をVRChatに送ります
  2. VRChatは受け取った値を、アバターのExpressionParameterに格納します(ExpressionParameterはVRChat内同一インスタンスの相手にも同期されます)
  3. ExpressionParameterに基づいてアバターのFX layerがアニメーションを実行します
  4. アニメーションが適用されて、心拍数表示やドキドキする動きがアバターに反映されます

このステップ、あなたがアバターに組み込む必要な作業は、2.ExpressionParameterの設定と、3.FX layerのアニメーション設定、4.アバター見た目の設定です。*1

 

アバターの見た目のセットアップ

まずアバターをアップロード前or後の状態まで持っていきましょう。そこから心拍数表示を追加していきます。

 

アバターの心拍数表示対応化キットのunity.packageはここに用意しましたので、プロジェクトにインポートしてください。

omega.booth.pm

f:id:o_mega:20220324230402p:plain

OSCHeartRate_AvatarKit.packageにはすぐ使えるよう

  • 数値表示シェーダー
  • 数値表示モデル/テクスチャ
  • 数値表示アニメーション
  • ハートマークモデル
  • ハートマークアニメーション
  • セットアップ済みのU10素体版のサンプルScene*2

などが入っています。とはいえアバターセットアップはみなさんがする必要があります。早速やっていきます。

IndicatorsのprefabをD&Dして

f:id:o_mega:20220324010126p:plain

アバターの配下へD&Dします。

f:id:o_mega:20220324021351p:plain

unpack prefabもして編集可能にしておきましょう

f:id:o_mega:20220324225320p:plain

出来ました

f:id:o_mega:20220324033242p:plain

prefabのIndicatorsには、ハートアイコン(HeartIcon)と心拍数表示(Indicator1~4)4つが入ってます。初めての人はそのまま先へ行きましょう。

 

要らない表示パネルやハートマークはtransformのscaleを0にして見えなくします。より万全を期すなら、アバターの身体の中に埋め込んでも良いです

f:id:o_mega:20220324032923p:plain

見た目の整理が完了しました。この例では、足元にあったIndicator3,4のscaleを0にして見えなくしています。見た目はこれでいいでしょう

f:id:o_mega:20220324032536p:plain

 

こだわりたい人へ

Indicators/RootからIndicator1~4、HeartIconをアバターのArmatureに乗せて、位置やサイズ調整すると良いでしょう。このあたりはアバターの着せ替え、帽子やアクセサリーを付けるのと要領は同じです。

頭上に乗せたいときは頭(Head)ボーンに乗せてもいいですが、頭の動きに敏感に反応しすぎてやかましいかもしれません。そういう時は位置は頭上にしながら、ボーンは腰(Hips)や胸(Chest)に乗せるのもいいでしょう。サンプルアバターAはまさにこの作りになっていて、心拍数は頭上に設定していますがボーン上は腰(Hips)に乗っています。

下の例ではIndicator1を顔(Head)に、HeartIconとIndicator4を胸(Chest)に乗せています

f:id:o_mega:20220326012251p:plain

アニメーションの見た目確認

アニメーションが適用された時の挙動を確認します。

f:id:o_mega:20220324034029p:plain

Animationフォルダに入ってるアニメーション3つを選択し、アバターへD&Dします。こうするとアニメーションをプレビューできるようになります

f:id:o_mega:20220324034544p:plain

アバターを選択(1)して、Animationウインドウ(2)から確認したいアニメーションを選びます。タイムラインをドラッグしたり(3)、再生ボタンを押して見て、動きを確認してみましょう。

  • HR_IconBeat、HR_IconBeat2はハートアイコン2パターン
  • HR_Indicatorアニメーションは心拍数のデジタル表示

です。ハートアイコンのアニメは後でAnimationControllerに設定するとき、好きな方を選択してください

 

ExpressionParameterの設定

OSC HeartRateSenderアプリから送られる心拍数を格納するExpressionParameterを設定します。ExpressionParameterの名前は、OSC HeartRateSendersドキュメントページにあるように

  • HeartRate, Int 
  • HeartRateFloat01(ゼロイチ), Float
  • HeartRateZone, Float

の3つがあります。これを受け取れるようにアバターに設定をしましょう。

アバターを選択し、VRC AvatarDescriptorコンポーネントのExpressions枠を見ます。すでに独自のParamtersが設定してあれば、それをダブルクリックしてParameter設定を開きます

f:id:o_mega:20220324035407p:plain

U10素体版の場合は、Parameterが予め設定されていましたので、それに上記のParameterを書き足します。

f:id:o_mega:20220324035614p:plain

書き足しました。Int,Floatのtype指定を忘れずに、Savedのチェックは外しておきます。

f:id:o_mega:20220324035911p:plain

これでExpressionParameterの設定は完了です

 

ExpressionParameterが初期状態で空のアバターの場合

ExpressionParameterが設定されてないとこう

f:id:o_mega:20220324040125p:plain

この場合はCustomizeボタンをポチっとな

f:id:o_mega:20220324040621p:plain

 

では、ExpressionParameterを新規に作りましょう。右クリックからCreate - VRChat - Avatar - ExpressionParameters

f:id:o_mega:20220324040236p:plain

出来たExpressionParametersをアバターへD&DすればOK。あとは、上のParameter追加を行ってください

f:id:o_mega:20220324040409p:plain

FX layerの設定

FX layerにアニメーションの設定をし、ExpressionParameterの数値を元にアバターへ反映させる設定を組み込みます。

アバターのVRC AvatarDescriptorコンポーネントのPlayerable LayersのFXをダブルクリックして

f:id:o_mega:20220324043005p:plain

AnimationControllerを開きます

f:id:o_mega:20220324043129p:plain

Parameterの追加

Parametersタブをクリック。次に右の+ボタンを押して、先のExpressionParameter同様にIntで「HeartRate」、Floatで「HeartRateFloat01」「HeartRateZone」を追加します。

f:id:o_mega:20220324043331p:plain

追加しました

f:id:o_mega:20220324045439p:plain

アニメーションを組み込む

Layersタブをクリック。+ボタンを押してレイヤーを追加します。

f:id:o_mega:20220324043822p:plain

歯車マークをクリックして、Weightを必ず1にします(忘れがち)

レイヤー名はHeartRateIndicatorとでもしましょう。Animationsから作り置きのアニメーション、HR_Indicator.animをControllerへD&Dします。

f:id:o_mega:20220324044027p:plain

D&DしたHR_Indicator Stateをインスペクタで見ます。

MotionTimeのParameterをチェックし、ドロップダウンからHeartRate01を選びます。これで、ExpressionParameterのHeartRateFloat01の値に応じて、HR_Indicatorアニメーションを動かすことで、心拍数がデジタル表示されるようになりました。

ついでに、WriteDefaultは外しておきましょう

f:id:o_mega:20220324045533p:plain

 

もう一つ、ハートアイコンのアニメも組み込みましょう。レイヤーを追加しWeightを1に。名前はHeartIconBeatとしました

f:id:o_mega:20220324044916p:plain

HR_IconBeatかHR_IconBeat2、好きな方をControllerへD&D

f:id:o_mega:20220324044812p:plain

同じくHR_IconBeat(2)のStateをインスペクタで見ます。

SpeedMultiplierのParameterをチェック。Speedを4.25*3にする。multiplierはHeartRateFloat01を指定します

これでHeartRateFloat01の値に応じて、HR_IconBeatのアニメーション速度が早くなったり遅くなったりします

f:id:o_mega:20220324045734p:plain

以上で完了です。

普段同様にアバターをアップロードしてVRChat内で確認しましょう

テスト機能を使って、VRC内で動作を確認する

VRChatとOSCHeartRateSenderを起動します。

アバターを着替え、アクションメニュー設定でOSC Enableになっていることを確認します。HeartRateSenderの「OSC接続ボタン」を押した後、「(テスト)ランダムな心拍を送る」をぽちぽち押してみましょう。押すたびにランダムな心拍数が送られ、アバターの挙動チェックが出来ます

f:id:o_mega:20220324050927p:plain

デスクトップモードでアクションメニューを開くにはRキーを使います。OSCが送られて来ていれば、こんなOSC Debug画面が見れるはず

f:id:o_mega:20220324050807p:plain

Parameterが伝わっていれば、Debug画面ではここでExpressionParameterが書き換わるのが見えるはずです。

f:id:o_mega:20220324051304p:plain

もしOSCはVRCまで送信できているのに、アニメーションが動かない場合は、アクションメニューのOSC ResetConfigを一回操作してから、心拍送信をもう一度やってみましょう。それでもダメならUnityへ戻ってアバターの確認を。

問題なければ、心拍数表示とハートアイコンがそれらしく動くはずです。

 

その他

セットアップサンプル

f:id:o_mega:20220326012006p:plain

パッケージ同梱のU10HeartRate.sceneには心拍OSCアニメーションがセットアップ済みのU10素体が2体入っています。

  • サンプルA(画像右)、頭上にでかでかと心拍数とアイコン、左手手首に心拍数表示が入ってます。ハートアイコンはドクンドクンとした動き(HR_IconBeat)
  • サンプルB(画像左)、目の下と背中に心拍数、胸にアイコン、左手手首に心拍数表示が入ってます。ハートアイコンは点滅(HR_IconBeat2)

セットアップの参考やアイデア出しにどうぞ

これらは検証アバターワールドにも置いてあります

数字シェーダー(Unlit/numbertex)

ブタジエンさんの数字表示シェーダーをベースに改変したものになります。

f:id:o_mega:20220326123701p:plain

  • Valueの数値が3桁表示になる
  • Value5以下の時「???」表示になる

あたりが主な改変ポイントです。

f:id:o_mega:20220326124044p:plain

数字テクスチャに手を入れる場合は、下から並んでいることに注意してください。WrapModeはclamp、FilterはPoint(No filter)にするとパキッとハッキリした絵になり、オススメです

f:id:o_mega:20220326124208p:plain

FAQ

Q.アバター更新して、OSCは受信できてるのに、アニメーションが動かない

ExpressionParameterを変更した場合、VRChatのアバターOSC設定が更新されないことがあるようです。アクションメニューからConfig - OSC - ResetConfigをしてみてください*4

f:id:o_mega:20220326235705p:plain

Q.心拍数が少し(±2ぐらい)ズレる

A.残念ながら、現在の0~1のFloatアニメーションを使う方式では仕様です

Q.心拍数で条件分岐を書いたが、数値調整や他の人の心拍数に合わせるとアバター上げ直しが大変〜

A.心拍数は個人差があります。その対策として、HeartRateZoneパラメータを用意してありますので、このパラメータを元に条件分岐を書きましょう。HeartRateZone値は、OSCHeartRateSenderアプリ側で最大/最小心拍数の調整が効きます

Q.他の心拍数OSCツールでもこのアバターやpackageを使いたい

A.どうぞどうぞ、使えます。

現状のセットアップのままでも、mkc1370さんのmiband-heartrate-oscとパラメータ互換性があります*5。サンプルアバター含め、miband-heartrate-oscアプリでも同様に使えるはずです

github.com

vard88508さんのvrc-osc-miband-hrmとはパラメータ名が異なっていますが、仕組み的には同じです。アバター側でパラメータ名を揃えれば*6同じようにセットアップできます

github.com

*1:参考に、RadialPuppetを使うギミックの場合は、1.OSC送信の変わりにExpressionMenuを作る必要があります。逆を言うと、ExpressionMenuの操作をOSC送信が代行している、とも言えますね

*2:別途packageを入手してください

*3:なんで中途半端な数値なのかというと、HR_IconBeatアニメは1サイクル1秒 = BPM60なため。HeartRateFloat01は0.0f~1.0fが心拍0~255に当てているので、1.0f再生時にBPM255になるようにする = 255/60 = 4.25

*4:おそらく、C:\Users\ユーザ名\AppData\LocalLow\VRChat\VRChat\OSC\usr_xxxx\Avatars\avtr_xxxx.json ファイルが残っている様子?最近VRC内からReset操作ができるようになって助かりました

*5:同じHeartRateFloat01パラメータを使っています

*6:パラメータ名HeartRateFloat01の代わりにHeratRate2を指定する

OSC HeartRateSendersドキュメントページ

OSC HeartRateSender

開発: おめが (@Omegamega)
市販のBluetooth心拍計の心拍数情報を、OSCプロトコルを経由して、VRChatへ通知するツールです。

omega.booth.pm

要件

使い方

f:id:o_mega:20220227040228p:plain

  1. 心拍計をセットアップして電源を入れ装着する。VRChatを起動する
    1. (bluetoothペアリングは不要です)
    2. VRChatアクションメニュー(メニュー長押しorキーボードR)から、OSC Enableを選択しておく
  2. OSC HeartRateSenderを起動する
  3. 「BLE心拍計に接続する」ボタンを押す
  4. 数秒待つと接続が確立して、デバイス名と心拍数が表示される
  5. 「VRC OSCに接続する」ボタンを押す
  6. VRChatに心拍数が送信される(VRC内ではOSC Debugで確認可能)

参考動画

 

心拍計がない場合は、「VRC OSCに接続する」ボタンを押した後、
「ランダムな心拍数を送る」ボタンでVRChatへの送信テストをすることが出来ます。
アバターアニメーションテスト等に使えます

bluetoothLE

接続方式にbluetoothLE(bluetooth4.0)を利用しています。
bluethooth3(bluetooth Classic)以下とは互換性がありません。必要に応じてbluetooth4.0以降のドングルを購入してPCに追加してください

 

bluetooth心拍計の選択について

BT接続して心拍を取れてスマホ連携できるスマートウォッチはたくさんありますが、BLEの心拍プロトコルを実装してないことが多く、残念ながら使えない可能性が高いです。
スポーツモードを謳い、stravaやruntastic、wahooなどのスマホアプリ連携(リアルタイム)を売りにしていれば使える可能性があります*1。デバイスで問題なく使えたものがあればリストに追記しますので、教えてくれるとありがたいです

◎動作確認済み

○たぶん可能

  • Wahoo TICKR/TICKRx/TICKRfit
  • Polar Verity Sense/H10/OH1
  • CatEye HR-12
  • Garmin HRM-Dual
  • Coospo/XOSS/iGSPORT等のアームバンド型心拍センサーまたは胸ストラップ型心拍センサー

筋電位・胸ストラップ型の方が一回り安いですが、装着が面倒/ベルト耐久性に難があるためおすすめしません。光学式・アームバンド型が楽でおすすめです。

✕たぶん非対応

残念ながらBTスマートウォッチの多くはBLEでの心拍送信を機能がないことが多いです。対応機種を見つけましたら、お知らせください

✕非対応(動作しないことを確認済み)

  • Xioami Mi band4,5

Mi bandシリーズは独自のプロトコルがあるようですが現時点では、このアプリは非対応です。Mi bandをお持ちの方は、mkc1370さんの実装例がありますのでそちらをどうぞ

 

単にBLE心拍計の動作チェックをしたい場合、スマホがあればWhaoo fitnessアプリがおすすめです

https://jp.wahoofitness.com/fitness-apps

 

アプリから送るOSCデータについて

本アプリでは3つのAvatarParameterを送信しています。
これらのパラメータをAvatar3.0のExpressionParameter、FXレイヤーなどで処理することにより、アバターの表示を変化させたりできます。

単に通知されていること、挙動を確認したい場合は、VRChatのアクションメニューからOSC Debugをオンにすることでパラメータを確認することができます。「ランダムな心拍数を送る」ボタンも使えるでしょう

/avatar/parameters/HeartRate, Int

Int型の心拍数です。0~256。本人の体質や年齢、運動負荷や個人差によりますが、概ね45~200ぐらいの範囲に収まるはずです

/avatar/parameters/HeartRateFloat01, Float

Float型の心拍数です。心拍数の0~256を0.0f~1.0fに割り当てています。Animation StateのMotionTimeやSpeedに使うことを想定しています。
アナログメーターの針が動くアニメーション等と組み合わせることで、心拍に応じて動かすことができるはずです。

心拍表示サンプルアバター(U10素体版)では、このパラメータを使って心拍数の表示と、心臓風キューブモデルのアニメーションをさせています

/avatar/parameters/HeartRateZone, Float

HeartRateZone領域でクロップされた心拍数です。
HeartRateZone設定が60~120の時、心拍数が60なら0.0f、心拍数が90なら0.5f、心拍数が120なら1.0fを返します。

人間の心拍数は本人の年齢や体質で異なります。運動負荷や緊張状態に応じて、割と細かい範囲で上下するため、使う人に応じてアバターの挙動が変わる心拍数帯は調整したい所です。
ですが、その調整をアバターに乗せるのはいささか面倒ですから、ツール側で対応可能にするためのパラメータがこれになります。

HeartRateZoneは「その人の安静時心拍数(50~80)」から「その人の最大心拍数(220-年齢)」を設定することを想定しています。(ユーザー年齢20歳~40歳を想定し、初期値は60~180としています)

 

スポーツでは心拍計を使って運動負荷を調整する「心拍トレーニング」と呼ばれる手法があります。これを参考に個人の年齢/体質に寄らない形で、「がんばり」「運動の負荷/つらさ」を表現する指標として導入しました。

心拍トレーニングの一例としてガーミンでは心拍数のゾーンをこういう分類になっています。

が、VRCで激しい運動をと言っても、狭い部屋を使う運動ですから、おそらくガーミンの指標ではゾーン3~4あたりが上限になろうと思います

最大心拍180(年齢20~40歳想定)の場合、108~125がゾーン2、126~144がゾーン3(有酸素)、145~162がゾーン4(無酸素)。OSC送信されるHeartRateZone値では、0.40~0.54がゾーン2、0.55~0.70がゾーン3、0.71~0,85がゾーン4となります。

 

これを元に、アバターギミックはHeartRateZone、0.4(ちょっとした運動、緊張)~0.7(有酸素運動の限界)のしきい値を条件に動くように組むと
良い感じに振る舞い、ユーザーも心拍ゾーン設定だけで心拍調整が効くはずです。

 

別の使い方として0近くで、睡眠、または睡眠に近いリラックス状態をトリガーにすることもできるでしょう、多分。

 

心拍表示サンプルアバター(U10素体版)では0.4~(赤オレンジ)、0.55~(青紫)、0.7~(緑青)のそれぞれのゾーンで身体からパーティクルが出るようになってます。

対応済みpublicアバター

ここに心拍表示サンプルアバター(U10素体版)があります。このアバターは製作者の火事屋さんの許可の元public化をしています

https://vrchat.com/home/world/wrld_eea39796-5836-4099-98da-4815e16696bd

 

機能としては主に2つ

  • HeartRateFloar01を元に心拍数を表示
    • ±2程度誤差が出ますが現状仕様です
  • HeartRateZoneを元にパーティクルを表示
    • 0.4~(ゾーン設定が初期値の場合、心拍108)で赤パーティクル
    • 0.55~(心拍126)で青紫パーティクル
    • 0.7~(心拍144)で緑パーティクル

パーティクルのみ、アクションメニューよりオンオフできます

FAQ

Q.心拍計がそもそもちゃんと動くのか、PCと繋がるのかが分からない。心拍計のみ、心拍計とPCの接続できるか調べたい

A.スマートフォン(iPhone/Android)があればWahoo fitnessアプリで、心拍計のペアリング/動作確認が出来ます

WindowsPCからは設定の「bluetoothバイスとその他のデバイス」を開き、検出可能か確認します(ペアリングの必要はありません)

f:id:o_mega:20220227162552p:plain

バイス追加を押して、心拍計が出現するようであれば接続可能です


Q.bluetoothに接続が切れた時に、再接続したい

A.現時点で再接続する手段がありません。本アプリを再起動して接続しなおしてください
(VRChatの再起動は必要ありません)

Q.OSCの接続が切れたときに、再接続したい

A.「VRC OSCに接続する」ボタンを押してください。OSCは再起動なしに再接続できます

Q.心拍計を複数持っていて、使う心拍計を選びたい/別の心拍計に接続してしまう

A.申し訳ないですが、現時点で選択UIがありません。
先に接続されるかどうかは現時点ではランダムなため、接続時に表示されるデバイス名を確認の上、違う心拍計に接続した場合はアプリを再起動して、改めて接続を試してください。
使わないデバイスをオフにできるならオフにしましょう

Q.心拍数の数値が、VRChat内アバター表記やOSC HeartRateSenderで少し(±2程度)ズレて表示されてしまう

A.現状では仕様です。

現状のHeartRateFloar01パラメータを使っている場合、ExpressionParameterからAnimationを経由し、更にシェーダーで処理させている都合、誤差が出やすくなってしまっています。これについては工夫の余地があると思います。

また、現状のExpressionParameterのFloat値の同期について、公式ドキュメントによると8bit(minifloat)しかないため、符号を除いた128段分しか解像度がありません。上記同様、このあたりも精度が必要であれば改善の余地がありそうです。

Q.設定を初期値に戻したい

A. C:\Users\ユーザ名\AppData\Local\OSCHeartRateSender\OSCHeartRateSender_Url_ほにゃらら\1.0.0.0\user.config にある設定ファイルを削除してから、アプリを起動してください。

または以下の設定値を参考にどうぞ

  • LocalPort 0
  • RemoteAddress 127.0.0.1
  • RemotePort 9000

免責事項、問い合わせ

当アプリを使用して発生した問題や損害について、開発者のおめがは一切責任を負いません。自己責任の元、ご利用ください
その他、問い合わせは、私おめが(VRChat Omegamega / Twitter:@Omegamega / booth https://omega.booth.pm/)までどうぞ。

バージョン履歴

  • 20220304 初版(だいたい動くしリリースしちゃおうぜ)
  • 20220319 ハートレートゾーン、接続ポート情報などの設定を保存するようになりました

ソースコード権利情報

Rug.Osc
Copyright (C) 2013 Phill Tew (peatew@gmail.com)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

*1:webアプリのstravaへの連携を謳うデバイスは、予想に反して取れない可能性があります

Avatar3.0の仕組み解説

VRChatのAvatar3.0の、主にエンジニア向けの、仕組みから理解したい人むけ解説。OSCも来たからついでに*1

公式ドキュメントはここ。できるだけ間違いがないよう書いているつもりだが、ミスっていたら教えて欲しい

Avatar2.0時代

Unityで3Dモデルを動かすにはAnimatorとAnimationを使うのが良い、というセオリーに則り、アバターには決め打ちの固定のAnimatorが入っていて、それでもって表情やらEmoteやらGesture(ハンドサイン)やらを出していた。

ユーザーの自由度としては、AnimatorにセットするAnimationのみを編集できる。ので、自由度としては限界が出てくる。

例えば

  • 目パチを制御する方法がない
  • アイテムの出し入れが出来ない
  • それらの状態を同期したり/保存する方法がない
  • Gesture/Emoteより複雑な制御ができない

といった問題、拡張性の乏しさが目につくようになった。*2

という所で、出てきたのがAvatar3.0だったわけです。*3

Avatar3.0の基本思想

ということで、Avatar3.0の思想はこれらの問題点、制限を減らすことを意識して設計されているようだ。

f:id:o_mega:20220220225047p:plain

具体的に一番大きいのは、アバターのAnimatorが編集可能になったこと。これにより、複雑な制御が自由に作れるようになる。UnityのAnimator標準機能でAnimationを合成したり条件分岐してAnimationを再生すれば良い。

次にExpressionParameter。これは前述の同期できない問題に対する回答。基本的にはParameter変数を入れておく場所。同期して欲しいパラメーターをここに書くと、すべてのクライアントに同期され、前述のAnimatorを動かす。ついでにローカル保存もできる。OSCで入出力できるのもここ。*4

最後はExpressionMenuだ。ExpressionMenuはExpressionParameterをVRChat内から編集する手段だ。オンオフが設定できるToggle、0~1の無段階スライダ(Radial)、2軸4軸のPuppet、多段メニューを実現するSubmenuなどが設定できる。

 

基本的にはこの3つを把握していれば良い、はずだ。*5

AnimatorとPlayableLayer

公式ドキュメントはここ

まずちょっとややこしいのだが、UnityのAnimatorのLayerと、Avatar3.0のPlayableLayerは別モノなので注意。

f:id:o_mega:20220220204637p:plain

UnityのAnimatorにあるLayer

f:id:o_mega:20220220204745p:plain

Avatar3.0のAvatarDescriptorにあるPlayableLayerの設定(実体はAnimator)

全部乗せのAnimatorを編集するのは大変だから?かAnimatorを分割し、用途と挙動別に5レイヤーに分けている。Base、Addictive、Action、Gesture、FX。

ボーンを動かす(無理やりポーズを変えるような)アニメについては、ヒューマノイドボーン(腕とか足とか)と非ヒューマノイドボーン(ケモ耳とかしっぽとか)でまた扱いが異なる

  • Base、基本的な挙動を入れる所。AFKとか椅子へ座るとか
  • Addictive、Baseに常時"加算で"追加される。ヒューマノイドボーンを動かしたいときに使うレイヤー。具体例としては呼吸で胸が上下するアニメ等。
  • Gesture、非ヒューマノイドのボーンを動かす時に使うレイヤー。transformのみ有効。具体例としてはケモ耳やしっぽを動かす等。
  • Action、発動時に"Overwrite"が強制されるレイヤー。Avatar2.0時代のEmoteアニメ、プレーヤートラッキングを無視して動くダンスとかを入れる用途
  • FX、その他を入れるレイヤー。重要。表情ブレンドシェイプはここ

と別れてる。

よくVRChatterがやりたい、「ジェスチャーで表情を変えたい」「アイテムの出し入れをしたい」であれば全部FXレイヤーに入れる、で良い。

f:id:o_mega:20220220200744p:plain

こんなの編集したくねえ筆頭のBaseLayerのテンプレート遷移図

そして、それらAnimatorのテンプレートは全部SDK3に最初から用意されている。

f:id:o_mega:20220220210634p:plain

VRCSDK3>Example3>Animation>Controllersにテンプレが入ってるのでコピペして使おう

また編集不要なレイヤーについては最初の画面のようにDefaultのままで良い。特にBaseなんかはAFKアニメを差し替えたい、ぐらいしか要望はないと思われる。普通触らなくて良し、AFKを差し替える場合でも用意されてるテンプレートをコピーして差し替えるのがいいだろう。

 

FXレイヤーを作る場合、ジェスチャー分岐遷移図が書かれているvrc_AvatarV3HandsLayerをコピってやる

f:id:o_mega:20220220211203p:plain

vrc_AvatarV3HandsLayerには両手ジェスチャーに応じてアニメを再生するシンプルな遷移図が用意されている

あとはここの各ステートに、SDK2の時同様の表情Animationを作って設定すれば良い。出来たFXレイヤーをVRC AvatarDescriptorのPlayableLayer-FXLayerにセットすれば、基本的には完成だ。

表情アニメの作成はUnityEditor手打ちでもいいが、自分はがとーしょこらさん作のVRCAvatarEditor betaを使っている。さっくりblendshapeで表情パターン作るのが早い

前の記事にも書いたが、このままだと表情がIdleにもどり切らなかったので表情を戻すアニメを作り、FXレイヤーの一番上に加えている(Idle上書きアニメの設定)(参考記事・Avatars3.0で表情が戻らない現象の直し方 決定版 - プラナリアのメモ)

f:id:o_mega:20220221002556p:plain

defaultにはすべての表情blendshapeを0にするAnimation(Idle上書き)が入ってる

 

アイテムの出し入れや、着せ替え等より複雑なことをしたい場合、作ったFXレイヤーに手を加える。Parameterをアイテムのオンオフ値なりを追加して、そのオンオフ値を見てアイテム出現/消失アニメを設定するという形になる

f:id:o_mega:20220220212235p:plain

AnimatorのParametersはここにある

アバターの挙動のややこしさを全部Animatorにぶつけ、それをある程度切り分けつつもユーザー編集可能にする、がAvatar3.0の基本設計思想と思われるので、UnityのAnimatorを理解するのがAvatar3.0を理解する一番のキモだと個人的には思う*6

VRC組み込みで存在するAnimatorParameter

公式ドキュメントはここ

Parameterの中にはExpressionParameterに書かなくても使えるパラメータがある。これはVRChatシステム側が提供してくれるパラメータで、例えばプレーヤーがコントローラやキーボードから行うジェスチャ操作などがそれに当たる。移動やプレーヤーがVRモードで遊んでいるか、3点トラッキングか4点かフルトラか、ジャンプ状態か、など色々な状態が取れる。

Animatorプラスアルファ

以上のAnimatorの機能でだいたい機能は足りるのだが、それだけでは実現できないものがちょっとある。それらを補助するのが以下のコンポーネント群で、これはAnimatorStateに追加する形で使う

その一つが、特定Animation中だけ目パチを止めたり、口パクを止めたりといったもので、これはVRCAnimatorTrackingControlからできる。

f:id:o_mega:20220220224315p:plain

VRCAnimatorTrackingControlはAnimatorのステートからAdd Behaivourする

前記事でも書いたが、Trackingにするとトラッキング(口パク等)かVRCシステム(目パチ)を優先、AnimationにするとAnimationで定義された動きを優先するようになる。口を閉じたアニメや、目を閉じたアニメではそれぞれAnimationを選択しておくと良い

公式ドキュメントはここ(の一部)

ExpressionParameter 

上で作成したFXレイヤーAnimatorにはカスタムすればいろんなParameterが追加されているはずだ。これを同期して、他のプレーヤーにも見えるようにするのが、ExpressionParameter

f:id:o_mega:20220220213750p:plain

プロジェクトウィンドウを右クリックして新規作成できる

といってもそんな複雑なことはなく、FXレイヤーに作ったParameterの名前とtypeを書き並べればOk。savedにチェックをつければワールド移動やVRChatを再起動しても残る。

f:id:o_mega:20220220214153p:plain

Add/DeleteとかUI違うと一瞬ビビるよね?

ちなみにOSC経由で操作できるパラメータもコレ

ExpressionMenu

公式ドキュメントはここ

上で作成したExpressionParameterをVRC内から変更する方法。

新規作成する方法はExpressionParameterと同じ。あんまり複雑ではないのでポチポチ触ってみるのが早いと思われる。メニューにControlsを追加ボタンやらラジアルを設定し、上のExpressionParameterのどの値を操作するかを設定する

f:id:o_mega:20220220215318p:plain

UIを選んで、対応するExpressionParameterの名前と型を書いていく

まとめ

とにかく重要なのがAnimatorの理解、特にFXレイヤーを作れるかどうかがキモ。とはいえ、普通に使う分、SDK2相当のセットアップにはSDK内のvrc_AvatarV3HandLayerのコピペでよい。先を作ってみたくなったら、その改造から始めるのが良いと思う。

最初にFXレイヤーを設定できれば、後は、そこで使うParamatersをExpressionParameterに列挙し、ExpressionMenuにUIを並べて同様にParameter名を並べればだいたい*7作れると思う

  1. AvatarDescriptorを付けた+ViewPoint設定しただけのアバター
  2. そこにvrc_AvatarV3HandsLayerをコピって、FXレイヤーに設定する。それぞれのジェスチャーに顔アニメを設定、Idle表情を上書きするAnimationLayerを追加する

というのを実際に手順にしたのが下の記事なわけです

VRChatアバター3.0を雑セットアップするオレオレワークフロー2022版最新版 - おめが?日記_(2)

*1:betaに来た

*2:目パチ制御については元怒さん作のNoBlinkSetter(公開終了につきケーキさんのガイド記事をリンクしています)、Emoteを使ってたInventryシステムなどが過去あった。が、いづれもAnimatorを多段で重ねた際に動くトリッキーな仕様に基づくもので、黒魔術的です。

*3:ただ、この2020/8の紹介記事で書かれているように、3.0でやろうとしていることの一部しか実装されていない。OSCとSoon™のPhysicsBone含めてもまだ追加が予定されている?ようだ

*4:これは推測だが、今後予定されてるアバターコライダーも判定が情報がここに飛んできそう?

*5:はずだ。というのはVRC公式ドキュメントにあるように幾つかすでに知られたバグがあったり、UnityAnimatorコンポーネントの怪しい挙動などはそれはそれとしてあるため、バッドノウハウが不要になったわけではない。適時聞いてググって調べる必要はまだまだある

*6:が、公式ドキュメントにも度々書いてあるやんけ

*7:表情が戻らないとかの怪しい挙動を除けば

VRChatアバター3.0を雑セットアップするオレオレワークフロー2022版最新版

あくまで自己流で。メモ書き程度に。

SDK2相当程度かつ、SDK3であれこれ遊ぶ*1にの十分なベースシャーシを作る感じで。

  • ViewPointがあり、アバターとして着用できる
  • SDK2相当以上の表情が使える(FXレイヤーのセットアップ)

 

今回例に使うアバター

booth.pm

です。正確にはUnity2018 & SDK2時代にカスタムしたこうめちゃん。

AvatarをUnityプロジェクトに取り込む

SDK2からの移行したい場合、VRMからセットアップする場合

既存のプロジェクトがあるなら、そのシーンごとExport packageして新しいプロジェクトに持っていくと楽。バックアップも兼ねるし、Unityエディタバージョンが違っても行ける、不要なデータを(あまり)持ち出さなくて済む。

アバターが1体だけなら、そのアバターをprefab化してそれをexportしてもよい

VRMの場合は新しいプロジェクトにそのままUniVRMとVRMを突っ込めば良いはず。その後、VRM関連のコンポーネントを削除しておく

f:id:o_mega:20220210040155p:plain

Export packageするときに注意するのは、VRCSDKを外すこと。チェックを外してexportに含めない。他に不要なモノがわかれば外して、余計なものの持ち出しが減る

f:id:o_mega:20220210040622p:plain

Packageが出力されるので、旧プロジェクトは閉じてよし。新プロジェクトでImportできて、シーンが見れればOK

素FBXなど

素FBXであれば、Rig設定をHumanoidにする、自動認識漏れしてるボーンを設定する、必要なシェーダーとマテリアルを設定して見えるようにしておく

基本のセットアップ

VRChat公式の示すCurrentVersionのUnityで新規プロジェクトを作る。VRCSDK3を公式からインポート。DynamicBoneやシェーダーなどの必要なものもインポートしておく*2

 

何はともあれDescriptor

AvatarDescriptorを付ける。

SDK2からImportした場合は、Missingになってるコンポーネントがあるので削除。VRMから来た場合はVRM関連のコンポーネントを削除

f:id:o_mega:20220210041350p:plain

 

ViewPoint、LipSync、EyeLook、Eyelidsの設定

ViewPointはEditを押してScene上でぐりぐりするだけ。SDK2なりのセットアップがあればそれをコピペする、SDK2より操作しやすくなった…。基本的には目と目の間、鼻筋に埋め込むように設定する。が、頭が極端に大きいデフォルメキャラだとそれより奥に押し込む方が姿勢が自然になるかもしれない。

 

LipSyncは、おそらく日本語圏の販売アバターはVisemeBlendShapeを選べば良さそう。アバターの顔のMeshを設定すればだいたい勝手に設定される…?されなかったらソレらしいシェイプで埋める。それでもなければ代用して埋める。「最低限、sil、aa、thを作るだけでもそれなりにしゃべって見えるようになります」らしい

EyeLookのMovementは性格付け程度の話なので一旦デフォで良い。落ち着きCalm←→活動的Excited / 内気Shy←→自信家Confident。ボーン設定があればEyeBoneを入れ、移動制限が欲しい場合はRorationStatesを決める。目のボーンがないアバターもそれなりにあるのでない場合はそのまま無視して良い*3

f:id:o_mega:20220210041611p:plain

EyeLidsはまぶたと目パチ。Mesh指定して、Blendshapeを指定すると目パチが動くようになる

 

これでとりあえず動いてアバターとして着用できるようになる。VRC SDKウインドウ→Builder→Build&Publish。モデル検証ならこれで十分。Welcome to VRChat

クソ大変表情FXを作る

Avatar3.0の一番の大変ポイント。PlayableLayerを設定してジェスチャー操作と表情アニメを紐付ける。AnimatorをいじってFXLayerを作り、表情アニメーションを設定する。

ここでは楽をするために、SDK3に付属するHandLayerテンプレートをコピって改造し、FXLayerとして使う。FXLayerはボーンの動き(transform)を伴わない、あらゆる変更を突っ込め、と公式も言ってる。ので、表情だけでなく、パーツの出し入れ、マテリアル変更とかいわゆるVRChatterが一番やりたがるものはFXLayerに入る、で良い。

 

FXLayerの土台準備

便利なテンプレート素材として、VRCSDK/Example3/Animation/vrc_AvatarHandLayerが提供されているのでコピる*4。このHandlayerにはジェスチャーであれこれアニメさせるのに、便利なステート/遷移図がもう出来てるのだ名前はFXLayerとかにする

 

f:id:o_mega:20220210043225p:plain

このFXLayerをAvatarDescriptorのPlayableLayersのFXに設定

f:id:o_mega:20220210043855p:plain

表情アニメを作る

がとーしょこらさん作VRCAvatarEditorを使って表情アニメを作っている。というのも複数SkinnedMeshRendererのblendshapeをあわせてレビューしつつ確認できるのが便利。

gatosyocora.booth.pm

f:id:o_mega:20220210043606p:plain

Blendshapeをいじって表情を作ったら、Filenameを決めてCreateAnimFileすると表情アニメファイルが出来る。下のチェックは外しておいた方が良いかもしれない。Layerへの設定は後で手作業設定するため。

ちなみに、このVRCAvatarEditorにはMeshRendererのProbeAnchorをまとめる機能*5もあるので、ついでにやっておく

FXLayerにアニメを設定する

上で作ったFXLayer Animatorを開く。Animatorウインドウを見る*6

LeftHandLayer、RightHandLayerのステートFist、Open…それぞれに上で作ったアニメをそれぞれ設定していく。それぞれのステートをクリックした後、インスペクタでAnimationをドロップして設定する。表情が不要なステートはそのままで良い*7

f:id:o_mega:20220210044224p:plain

それぞれのステートには、Add BehaivourしてVRC AnimatorTrackingControlを付ける。目パチをオフにしたい表情では、TrackingControlでAnimationをチェック。リップシンク切りたい場合はMouth&Jawを同様にAnimationをチェックすれば良い*8

f:id:o_mega:20220210044352p:plain

表情戻すアニメ対応

これでできたか、と検証したら「表情戻らない問題」が起きたので、対策を入れる。

inplanaria.hatenablog.com

FXLayer Animatorにレイヤー追加して、Weightを1に。VRCAvatarEditorで無表情アニメを作って、上のレイヤーに設定、WriteDefaultオフ。レイヤーの一番上に持ってくる

f:id:o_mega:20220212164003p:plain

 

理屈としては、優先度最小(順序で一番最初)のレイヤーで無表情アニメを流し続ける、ようす

完成

完成だと思います

f:id:o_mega:20220210040039p:plain

できたと思ったら、SDK2にはあったこうめちゃんの耳としっぽが表情連動しないやん… ということで、それはまた別で頑張る必要があることがわかった!

 

それはさておき、2.0時代のセットアップに近い、素に近いAvatar3.0がセットアップできたはずだ。プレーンなFXレイヤーのセットアップができたので、この上に持ち物の出し入れやVRCLens/VirtualLensの様な拡張、最近話題のOSC連携、Contact含むAvatarDynamicsの導入もできるようになった。よしよし

*1:カメラ拡張とかモノを出し入れしたりとかする

*2:と、SDK2プロジェクトのDynamicBone設定を引き継げて便利

*3:こうめちゃんには目のボーンはなかった

*4:Unity上だとCtrl+Dで複製が出来る

*5:MeshのProbeAnchorの位置がバラバラだと、ワールドのLightProbeから拾う光がMeshごとに変わってしまい、パーツごとに明るさが違う現象が起きる。よくあるのが場所によって顔とボディの明るさが違うケース

*6:Animationではなく

*7:初期設定されているproxy~.animはVRC内のデフォルトアニメーションが適用される設定

*8:Trackingにすると、フルトラやリップシンクなどのユーザー操作や、目パチのようなVRCシステム機能で動く。Animationにすると、アニメーションデータで上書きされる。という理解で良い

テトテコネクトとダンス音ゲーと譜面UI

ダンスゲーがDanceDanceRevolution(コナミ98年、以下DDR)でヒットしてから、センシング技術が進歩しダンスゲーもそのセンサーの進化に合わせて色々とリリースされた。ということでその辺の独自研究を書きつつ、テトテコネクトの話をしよう

DDR、ボタンが少なく譜面はシンプルだった

DDRはコントローラスイッチをデカくして踏ませることでコントローラを装着せず、プレーヤーに踊らせることに成功した。スイッチは左/後/前/右の4箇所*1

床スイッチということで上半身の踊りを取ることはできないが、それでもボックスステップのようなステップがある程度再現でき、軸足と重心移動が大切なのはダンスを思わせるには十分な"それらしさ"が作れたと言ってもよいだろう。高難易度譜面が地団駄となったとしても

譜面UIとしてはコナミビーマニ特許通り、ノーツが上下へスクロールするものだった。譜面のX軸がボタン、Y軸が時間に対応するのは、ピアノロールに近く非常にわかりやすい。一方で後/前というボタン配置がX軸に揃えられてしまい、直感的でない問題があったが、まあ後のことを考えれば十分シンプルだろう。

youtu.be

 

コントローラを手に持っているが、ポーズが重要という点ではサンバDEアミーゴ(セガ99年)も全身ダンスゲームに含めてもよいかもしれない。

マラカスコントローラをそれぞれの手に持ち、左手/右手に加え、振る時の掲げた位置(高い/中央/低い)も判定される(2x3の6箇所)。

こちらはコナミ特許を回避する都合か、中央から外へ向けてノーツがスクロールするタイプである。この譜面UIは同じセガのMaimai(セガ2015年)へ継承されている

youtu.be

 

接触センサーで全身ダンス、ビーマニ式譜面ながら振り付け動画を流したPPP

コントローラを身に着けない全身ダンスゲーとしては、DanceManiaX(コナミ00年、以下DMX) *2ParaParaParadise(コナミ00年、以下PPP)が初めてではないだろうか。

赤外線センサーを使い、特定の場所を遮るとボタンがオンになる。要はDDRの踏みスイッチを赤外線レーザーセンサー *3 に置き換えた仕様だ。レーザー判定はDMXが(左/右)x(上/下)の4箇所、PPPは左/左前/前/右前/右の5箇所。そこを手なり足なりで遮るとノーツ判定が走る/ボタンが押されたことになる

譜面UIはビーマニシリーズということもあり、スクロール方向切替機能が増えたりはしたものの、そのままDDRの仕様を継承している。X軸にノーツ種別を並べ、Y軸を時間軸として、ノーツが流れてくる。DDRと違い、特にPPPは前後ボタンに相当するものがないことで比較的混乱は減った気がしなくもない*4

 

ただここで、PPPは先進的なことをしている。譜面UIの背景に、avexと組んだ実写のパラパラムービーを流しており、その通りに踊れればゲームでも高得点が概ね取れる、という所だ。今までのダンス音ゲーは楽曲を共有することはあれど、振り付けが一致することはなかった*5

youtu.be

ダンスゲームといつつダンスらしくなかったダンス音ゲームと、実際に全身を動かす現実のダンスがやっと繋がった。

しかしこの後ダンス音ゲーは冬の時代を迎える。そもそもの音ゲーを乱発しすぎたコナミは、シリーズ継続困難な音ゲーを順次終了。音ゲーの中でもニッチ枠だったダンス音ゲーDDR以外は途絶えてしまう*6

 

いや、ちょっと待って。足のDDRと手のDMX/PPP、これ組み合わせたら全身ダンスになりませんか?なります。ということで韓国AmuseWorld社はシンプルに合体させたようなダンスゲーEZ2Dancer(AmuseWorld 2000年)があった。

今調べるとそこそこ続編が出てることから人気があったようだが、残念ながら当時韓国音ゲーが国内に入ることはかなり難しかったようで、最盛期でも5台程度しか国内になかったと聞く。結局筐体を見ることもプレイすることも譜面UIがどうなってるかもわからなかったが、現代ではプレイ動画を上げてくれるありがたい方がいることで遂に全貌がわかった

youtu.be

3方向にアレンジされたDDRフット・スイッチと、DMX同様に突き出した赤外線センサー受光部が合体した、愚直なわかりやすい筐体。譜面UIもDDRに手ノーツを追加しただけのシンプルな仕様だった。これはなかなかプレイが混乱しそうだ。

 

しかしこの時点でなんとなく先の問題が見えてくる。

そう、まずビーマニ特許式*7の譜面では全身の動きを適切に表現する方法がなかった。PPPのノーツでは手の位置は取れても、パラパラの振り付けを表現できていない。あくまで公式振り付けをすると、概ねノーツが取れるという状態で、ノーツを見ながら踊るとお手本ムービーの振り付けとは別の動きになってしまう。譜面が読めた所で手と足両方同時に譜面に合わせて動かすのは人類には至難の技ということだ*8。譜面UIの進化で、見た瞬間に振り付けがわかるような譜面は出来るのか?進化した所で人類の手足は付いてくるのか?…

逆転の発想、振り付けが先行したJustDanceと、譜面の諦め

Just Dance(Ubisoft2009年Wii) 国内ではJust Dance Wii(任天堂2011年Wii)。トラッキングをある程度?いやかなり諦めてはいるものの、全身で踊るゲームはこれがエポックメイクではないだろうか?なんと言っても現行でもシリーズ継続しているし。同様のゲーム体験は国内ではおどるメイドインワリオ(任天堂2010年Wii)が初出と思われる

ゲームのコントローラからゲームを組立る従来とは逆向きに、現実のダンスにゲーム判定を持ち込んだのが革新だ。センシングは今から思えば豪快に諦め、Wiiリモコンを手に、映像のポーズに合わせてそれっぽく構える/振る。Wii版を遊んでいないので、なんとも言えないが、この設計ではかなり判定はゆるく作らざるを得ないだろう。メイドインワリオでは判定を諦め来れなかったか、タイミングよく振る点を重視した作りだった。

youtu.be

調べる前はてっきり、おどるメイドインワリオ(2010年)が初出かと思ったがJustDanceの方が早かったのが意外だった。JustDanceのWikipedia情報によるとRayman_Raving_Rabbidsシリーズでミニゲームとして実装したものがブラッシュアップされ、その結果JustDanceとして1本の作品になった。それでも初代は20人程度のチームで開発され、やはり開発中は売れ行きはあまり良くないだろうと思われていたのは興味深い

ゲーム操作ではなくダンスが主、というのはセンシングだけでなく譜面UIにも現れている。そう、譜面UIは補助程度にすっぱりと諦めて、実写のダンスPVをそのまま流している。PPPの再来だ、だが主従は逆転している。振り付けが主、譜面は補助。あくまでスコア判定付きダンスムービーである

その結果、譜面から先の動きを理解するのは難しくなった…というより、そもそも画面比率で言っても譜面UIはヒント程度の扱い。そもそも譜面が表示できても全身を表現するのは無理があるよね、ならいっそダンスムービーでいいじゃないか。

譜面UIで先の動きの指示を出す試みは、ヒント以上は諦めた。無理。そういう割り切りだ。

 

しかし、この「譜面UIから、先のノーツがわからない」問題に対してJustDanceは、別のアプローチで解決を試みている。振り付けの単純化としつこくループを多用している点だ。初見でプレイしても振り付けが繰り替えされるので、途中から覚えていくことができ、初見プレイであってもループの最後の方ではまあまあ踊れて気持ちよく終われる。

家庭用の長いプレイ時間だからできることでもあるが、譜面UIは諦め、振り付けから体験をカバーするという思想は清々しい

 

ダンスムービーと譜面をオーバーラップさせた、DanceEvolution

2010年になるとBox360に、Kinectという全身トラッキングバイスが登場する。そもそもこの時期はWii sports(2006年) のヒットを受け、家庭で体感ゲームが遊べる、というノリのコンセプトゲームが出尽くし一段落した時期でもある。いや、それでも、ご家庭に全身モーキャプデバイスを送りつけようとはMicrosoftイカれてやがる!日本の家はそんなに広くないぞ!*9ローンチタイトルとしてDanceEvolution*10(コナミ2010年XBox360)がリリースされる。以下ダンエボ

手の位置、足のステップ、ポーズ(シルエット)、更には手拍子、発声もノーツとして設定できるようになった。Kinectセンサー全部盛り仕様である。*11

譜面UIは予告ノーツがCGダンサーに重なって出現する。…とここまで書くと、タッチパネル音ゲー押忍!闘え!応援団(任天堂2005年DS)も参考にしてそうではある。更にたどるとXY平面とZ時間軸を持つ音ゲーとしては、テクニティクス(アリカ2001年PS2)ミュージックガンガン(タイトー2009年)といった例もあった。この点ではJustDanceのダンスPVそのままよりは1手先の動きが見えるようになった。またただ、ノーツ密度が高まると画面がごちゃごちゃする問題も抱えてしまう。

抱えていたが、ダンエボもそこは諦め、音ゲーマーの反射スピードと学習力に期待した。されちゃった*12。JustDanceのヒントUIと比べ、CGダンサーと予告ノーツが同じ場所に出てくれるので、少なくとも画面の見る場所で困ることがないのはそんなに悪くない。その先のノーツはわかんないけども。そしてどっちにしろ、そんなスピードでノーツが出ても人間は追従できない。じゃあ、繰り返して覚えるしかないやんけ!すべての音ゲー覚えゲーに通じる

実際ダンエボは初見で気持ちよく踊るのは確実に無理だ。しかし音ゲーマーはそこに難しい譜面があるとチャレンジしてしまうし、繰り返して習得してしまう*13

youtu.be

当時は革新的だなあと思ったのだが*14、今思えばJustDanceのWiiコントローラでは出来なかった全身センシングをKinectでキャプチャーできるようになった、そしてそれを実写ムービーではなくイケてるCGビジュアルでブラッシュアップする、というコンセプトのタイトルに見える。

PPPからYesterday、Night of Fireavexパラパラ曲が続投して収録されており、もちろん振り付けもそのまま使ってクリアができる所は、PPPプレーヤーとしては嬉しい限り。一方で、他譜面の振り付けはコナミらしく?難易度がバリバリ高い物が多い。JustDanceと違い当初からアーケード化を想定していたのか、1曲の長さもJustDanceより大幅に短くなってしまい、短い曲を繰り返し遊んで、激しい振り付けをじっくり身につけるゲーマー向けスタイルという印象になった。このスタイルはコソ練習が難しいAC版でも共通しており、公式が練習用に振り付けムービーをyoutubeにアップロードしてくる次第であった*15

 

以前から、というより初代DDRの時点でダンスコンピレーションアルバムDanceManiaとタイアップして曲を用意していた。ダンエボでは全身ダンスゲーとなったことで、PV等に公式振り付けがあるときにそのまま公式振り付けをゲームに持ち込むことが可能になった。ダンエボ・アーケード版ではこれを大いに活かし、振り付け習得済みなコア楽曲ファンを逆にゲームに取り込む流れを作り出した。

youtu.be

ボーカロイドブーム、踊ってみたブームから、ダンエボへ振り付けが収録されるケースもあった。ルカルカ★ナイトフィーバー*16、ハッピーシンセサイザー*17などがある

コアなインディーズ原曲ファンを取り込む流れには、すでに昨今珍しくはないが合わせて振り付けごとゲーム化されたのは面白い。

www.youtube.com

譜面をルーチンに刻み、トレーニングツールに向かったDanceCentral

DanceCentral(XBox360 EA2011年)以下ダンセンは、北米ではKinectローンチで2010年、国内では2011年にリリースされている。ダンエボと同じXbox360+Kinectで全身ダンスゲー、となると近寄ったシステムになりそうな予想をしてしまうが、これまた全然違うゲームとして成立したのは興味深い

ダンスの動きを1小節ごとに区切ったダンスルーチンとし、それぞれのダンスルーチンには名前とイラストが付く。これが画面に右に予告として流れてきてダンスを行う。そう、ダンスルーチンが学べるのだ。

youtu.be

初代ダンセンが特に素晴らしいのは、それぞれの楽曲にbreakdownモードがある点。本編楽曲を踊る前に、使うダンスルーチンのみ繰り返し練習させられる。更に本編の一部のみ通し練習や、失敗した場合は再生速度を下げての練習もある 

youtu.be

初心者譜面ではシンプルな4~6個のルーチンを繰り返す習得しやすい振り付け、上級譜面ではそこに+3~5個の新たなルーチンを追加して複雑、スタイリッシュにしている。

このあたりは1楽曲1振り付けしかなく、判定箇所の数でしか難易度付けが変えられなかったJustDance/ダンエボ系と大きな違いとなっている。上の楽曲、PokerFaceについても難易度別で別の振り付けがある

youtu.be

JustDance/ダンエボが「判定付きダンスムービー」だったのに対し、ダンセンは「ダンスを小節単位でバラして組み直す、ルーチントレーナー」という立ち位置。ダンス動画ではなくダンストレーニング講座をゲーム化したという塩梅だ。ダンセンでルーチンを学べば、後は覚えたルーチンを適当につないでくだけで現実でもそれっぽくダンスができるようになる。

ただテキトーに遊んで気持ちよくなるゲームのためだけにそこまでカバーする必要があるのかはさておき、ダンスゲーで教育的なタイトルに仕上がってるのはすごい。マジで。ダンエボみたいな変則的/ダイナミックなダンスルーチンはさすがにないものの、4つ打ちリズムで適当に踊れるレパートリーが身につくゲームだ。

 

余談だがDanceCentralはOculusQuest/OculusRiftPC版が出ている。丁寧なルーチン学習は残念ながらなくなってしまったものの、VRらしくダンスクラブの臨場感やバトル相手の動きがよく見えるようになった。低速練習やフレーズ繰り返し機能などシステマチックなトレーニングモードが追加されている

完全に脱線だが、メニュー操作もVRゲーの中ではぶっ飛んだ、しかし世界観にマッチしたUIになっていてプレイをオススメしたい。みんなもスマホをバキバキにしよう

youtu.be

振り付け自由の復権、DanceRush Stardom

さて、JustDanceからここまで、ダンスの動きをどうゲームへ落とし込むか、という「ダンスムーヴ至上主義」的なスタイルが続いた。これに「ダンスゲーはノーツさえ取れれば、それ以外は自由に動いていいんだぜ!」という思想を復権させてきたのが、元祖DDRの後釜を狙うDanceRush Stardom(コナミ2018)だ

www.nicovideo.jp

そもそもDDRの頃から、とりあえずボタン押せればあとは好き勝手に踊ろうぜ、という通称パフォーマンスプレイがあった。他のゲームで例えると、ビーマニプレイ中に後ろを向く「ふりむき」や、敢えて腕をクロスさせて演奏する、後ろ向きで演奏する、などというスーパープレイ/縛りプレイがあり、そこから派生しつつダンス特有のキレや演出を足す感じだろうか。昨今のRTAや動画実況では特にプレイ成果に関係ない、トリッキーな見せプレイを合間に入れたりする風潮があるが、それをダンスゲーでやる、という見方でも良い。

www.nicovideo.jp

 

お手本ダンスムービーを見て自分の動きを同化させるダンスは、盆踊りやパラパラの例にあるように*18シンクロ感を味わうには良いが、ダンスにクリエイティビティを発揮したい人たちには堅苦しい

逆に、自由度を高めるには、動きを束縛しきれないが、そこそこ束縛されるゲーム判定を用意すればいい。それがボタンというハードウエア制限で偶然にも達成されていたのが初代DDRだったと言える。

そのため、ダンスステージはDDR並の大型フットパネルに、譜面UIは奥行き付きDDRスタイル*19であるが、バッサリと奥行き判定を捨て、横軸さえあっていれば踏み判定はOKとなっている。これが高い自由度を生み、ダンサーは自由に前後移動が出来ることで、シャッフルダンスの奇妙な浮遊感をそのまま持ち込むことが出来る

youtu.be

一方で、この自由度がダンス初心者、特にシャッフルダンスという見慣れない踊りを初めてする側にとっては相応に難しかったようで、ダンスラのリリース後は公式から練習動画や筐体で遊べんで学べる練習譜面、お手本プレイが続々筐体向けに配信されている。このあたりは早い段階でほしかった所だが、動画共有が前提の時代ということもありファンメイドの攻略/ダンス練習動画も多数出てきている

youtu.be

youtu.be

 

「お手本ムービーとシンクロする楽しさ、わかりやすさ」と「アレンジできる自由度、深さ」はパッと見、相反してしまう。そして自由度を追い求めると、最終的にステージ(場)と音楽があればあればよく、そうなるともはやゲームである必要性もなくなっていく…動き回れる床と音楽があればいいのでは…、となるとダンス音ゲーがゲームである理由が薄くなっていく…難しい問題だ

テトテコネクトはシンクロするダンスゲーの総まとめ

テトテコネクト(タイトー2021)は初見で見ると、パートナーキャラクターと行うタッチパネル音ゲー…、つまりはMaimaiや押忍!戦え!応援団を大型化した印象になるだろう。そこにパートナーキャラクターがいて、目の前でダンスをしてシンクロできる、と。

 

がやってみると結構感触が違う。単なるタッチパネル音ゲー、にしてはちゃんとパートナーの振り付けが付けられていて、マネして踊れるように譜面が作られている。

さらに、難易度ごとに譜面と振り付けが異なる。が、特徴的な譜面は残し、片手のみの譜面にする、連打を簡略化するなど、場面場面での簡易化/高難易度化の処理に手間が掛かってる

youtu.be

ダンエボで振り付けが採用されたハッピーシンセサイザーも、テトテで採用されおりUltimate難易度なら振り付け通りに踊ることが出来る。

あれ?これダンスゲーじゃん!!

youtu.be

譜面ごとに振り付けをバラして難易度調整するのは、ダンセンでやってたそれとほぼ同じ戦略だ。こうしてみると、タッチパネル音ゲーというよりダンセン、ダンエボの後継としての性格が強い。

「お手本ムービーとシンクロする楽しさ、わかりやすさ」をタッチパネルゲーとしての見た目とプレイを提供することで敷居を下げ、難易度別に振り付けを作ることでゼロからだんだん譜面と振り付けを覚えられるにする。このダンスゲーの最終地点は振り付け通りに踊ることで、それは「パートナーと同じ動きをする」という分かりやすいゴールと理解させる。そのパートナーは選択/エディットでき、ついでに他IPとのコラボもしやすい*20*21。すげえ、全部乗せか?!

 

…と、テトテコネクトには昨今のダンス音ゲーをまとめ上げたような作り込みを感じた。

*1:一時期存在したSoloシリーズは斜め前が追加され6箇所。ダブルは一旦脇へ置く

*2:DMXあんまり説明ないじゃん!とか言われても、めっちゃ自分が遊んだタイトルなので上げるよ。手ぶつけると痛かったよ。ところでPS2DMXまだですか?

*3:最近の自動ドアの検知機構と同じ。チュウニズム(2015年セガ)のエアーストリングスも同種の機構

*4:DMXは上下で別スクロール表示をさせるオプションもあった。今思えばサンバDEアミーゴのプレーヤーとかにはプレイしやすかったんだろうか?

*5:故にDDRではパフォーマーが独自の振り付けを編み出したりできたという見方もできる

*6:正確には国内DDRは2006年のExtremeで一度終了してリブートしている

*7:「スイッチ判定」を表すノーツが、時間軸に沿って動く。ノーツが基準線に来た所で押す

*8:ドラムマニアあったやんけ?まあ、それはそれってことで

*9:しかもWindowsで使えるサイコー

*10:英語版タイトルDanceMasters

*11:ついでに自撮りまでするし、リプレイで再生してくる。パジャマで踊ってるときに、それは勘弁してくれ

*12:コナミは人類の性能に期待しがちじゃないですか?(偏見)

*13:脱落しなければ

*14:そして判定が割り切ってるなあと

*15:ところで360版の追加楽曲DLCはまだですか?

*16:元振り付け【こずえ】ルカルカ★ナイトフィーバーを踊ってみた【らめらめよ!】 - ニコニコ動画

*17:元振り付け【踊ってみた】ハッピーシンセサイザ【めろちん】 - ニコニコ動画

*18:または昔のクラブもそうかもしれない

*19:SoundVoltex風、CHUNITHM風というのが分かる人にはわかりやすいか。というか、タッチ範囲が足パネルになったチュウニズム?

*20:いわゆるアバター3Dモデルを納品してもらえばコラボ出来る。んんん、なんか揺れものの動きがVRMっぽい気もするな?というか相馬みやこの肘のウエイトの乗り方とかもなんか見覚えがあるような…?

*21:プレイ時は初音ミクコラボが進行中だった

この自転車がほしい2022

まあ買うか買わないかは別として。

夏ぐらいから布教活動をしたら、友人2人にロードバイクを買わせることに成功したりしつつ、友人たちとツーリング機運が高まってたりで自転車熱が再燃している。周りが新車を買ったりnew gearしていると自分も欲しくなるものなので、引っ越しで手放したローラーの置き換えとしてグロータックGT-Roller F3.2を買ったりした。

が、それはそれとして新車は気になるじゃん?妄想妄想

 

今の自転車構成

普段使いユーティリティロードTNI 7005-mk2(5800)

2014年末に組んだのがベース。当時数少ない格安アルミフレームセットこと、みんな大好き激安アルミフレームのTNI 7005-mk2に、当時の105こと5800構成。初期構成から変わったのは、28Hの手組みホイールを入れてるあたり。

乗り心地がアホみたいに硬く、強く踏むと足が痛むだけで進まない、足を止めると進まないという分かりやすい問題はあるものの、高ケイデンスで回してるかぎりはよく走り、スポーツバイク然とした走り感は乗ってて楽しいバイクだ。初めてのブルベやらサーキットエンデューロレース、箱根ヒルクラやらにも投入した。

通勤用に使ってるうち、リアキャリアとパニアバックを付けると買い物に便利ということに気づき、買い出しの機会が増えた2020年のコロナ以降は20L+40Lパニアを基本装備にしてしまっている。米袋(5kg)や牛乳パックやらを満載してもスムーズに走れるのは楽しい。公園キャンプに各種道具積んで走るのもいい。まあただキャンプ道具を満載するにフロントの積載量がほしい

そもそも7005-mk2にはキャリアダボ穴がないために、VIVAクイックエンドアダプターとgrungeキャリアダボ付きシートクランプを経由してリアキャリアを付けてる。フロントも同じようなノリで行けるかと思ったが、ダボなしのカーボンフォークはVIVAクイックエンドアダプターと相性が悪く、QRで組み付けると明らかにフロントの剛性感が弱くなりイマイチ。ということでフロントに荷物が積めないのが不満になっている

 

そろそろ8年だし、解体して5800コンポセットとして切り出し、別車に組み直しても面白いと思う、という次第。

ストレートに後継の役目を追わせるなら

  • 雑に使える金属フレーム?
  • リアキャリア装着可。フロントキャリアまたはフロントダボ付きフォークで積載量マシマシ
  • 踏み込んでも足を傷めない程度の、現代的な硬さのスポーツ仕様フレーム

あたりが欲しいところ

本気ロードMiracleBike MC566(6800mix)

2019年後半に組んだカーボンバイク。7005mk-2を普段使いようにするべく、本気ロードという使い分け枠、の3世代目。ポジションが出せなくて諦めたICAN Aero007(シマノ6800)、その後購入し壊してしまったMiracleBike MC565の後釜として購入*1。自家塗装の上、シマノ6800を中核にヒルクラ対応のための32TスプロケとRD-5800-GS、ひっそり更新された*2FD-5801、X-Cadeyパワークランク(R7000)等を混ぜた構成。いつのまにか5800が多くなって、STIとクランク右だけ6800なのか…

土台がヒルクラ用フレームということもあって、硬い乗り味だけれども7005-mk2のような突き上げる硬さはなく、強く踏み込むとグッと進む。それでいて7005-mk2より2周り軽く、奇妙なフワフワ感がある。振動吸収も7005-mk2と比べれば雲泥の差でスムーズ。7005-mk2で感じた弱点だけが解消された上位機という風体でたのしい。これが現代的なカーボンフレームなのかー

 

今出先ツーリングしてるのはコレだが、ミノウラのロード専用リアキャリアでパニアバッグ運用をするようになっている

現状不満はないのでこれはこのまま。あ、自家塗装の皮膜が弱くどんどんボロボロになってきてて、その問題はあるけどいい解決策がない*3

折りたたみサブCarryMe

折りたたみは過去2台所有していて、CarryMeの前は5LINKS2(165)だった。これはこれで面白い変形、癖のある自転車だったが、やはりそれでも嵩張る、重かった。より軽量ミニマム、いっそ自転車外でも試すか…ということで、同僚のキックボードマニアから中古キックボードを譲り受けたりした所、キックボードは自分に合わないことがわかった。ペダルとフリーが欲しい、つまりミニマム自転車だ*4

ということで白羽の矢が経ったのが、キックボード以上自転車未満なCarryMeだった。探していたら中古ショップでビッタリ欲しいカラーを見つけて即購入。

CarryMeのキャラクターははっきりしていて分かりやすい。小径ホイールからくる圧倒的な失速、15km/hぐらいの巡航がちょうどいいぐらいで全然速度が出ないし、ちょっとした距離で体力を食う。まあでも歩くよりも走るよりも早く、サドルという特等席で座って移動できる。最初は軽いハンドルが繊細に感じられるが、乗り続けてくるとバランスのいい剛性感が素直な操縦性とスポーティーさを引き出してることが分かる。確かに体力は使うし、ロードと比べればそりゃ遅いが走れるし、だいたいの癖は抑え込め、自分の足として信頼が寄せられる。折りたたみのステップも少なく、縦長コンパクトな折りたたみ形態。8kgを下回る十分な軽さ。

 

とまあかなり気に入ってるのだが、それはそうとやはり圧倒的に走行性能が足りない。まあ出先の街でちょっと散策とか、駐輪場がない玄関先に置かせてもらう…みたいな用途にはベストではあるけど、出先ツーリングするには厳しい。

んー、いや悪くはないけど、「走りたい」気持ちで出先を選べないというか、出かける用事があった上で持ってく、なら楽しいバイクというか。しかしかといってロードを輪行するのは面倒が過ぎる、という場面が出来たりしない?

  • 折りたたみでコンパクトだが、走行性能も欲しい

ということで要件をまとめると

  • 積載量重視の汎用バイク/カーゴ/グラベル/バーサタイル寄りのダボが多いやつ
  • 走行性のある折りたたみ

のどちらか、または両方。いや折りたたみのプライオリティは低いというか趣味性が高まっちゃう

4台保有は難しいので、7005-mk2を解体or手放した上で、上記のどちらか重視かなあ? 解体パーツを割り当てて、新車をバラ完すると安上がりかもしれない。そうじゃないかもしれない*5

概ねディスクブレーキになるだろうから、そうするとグロータックのEualブレーキとか付けてみたいねえ。

このバイクがほしい2022

Surly BigDummy

でかい。説明不要の積載量。ロングテールカーゴバイク

いやー、試してみたいよね?7005-mk2を解体して付けても良いが、Alfine8s内装変速とかでもっと低速向き仕様で作りたいと思うし、そうするとコンポを移植する意味がなくなり、7005-mk2を解体する理由がなくなる。その場合は7005-mk2はまるごと売却かなあ

26インチディスクホイールを手組みできるか?という問題はある

Allcity SpaceHorse/SuperProfessional

Sulry対抗クロモリ。塗装センスはこちらのほうが好みなので。

SpaceHorseはSurlyで言うLongHaulTracker系ツーリングバイク、SuperProfessionalはシングルスピード向けだがRDハンガーもあり何でもありアーバン系

組むとすると、7005-mk2を解体して5800をポン付け、Equalディスクブレーキあたりを付けたい。

RibbleCycles Gravel AL

安価なアルミフレーム。グラベル

最近知った欧州ブランド。アルミのフレームセットをお安く売ってるのはありがたい。カスタムペイントも対応。

Gravel ALだとフォークダボもあり、積載量的に安心。スタイルはGCR ALのほうがシュッとしてるけどフォークダボが無くてな…。Fuji Jariとかも対抗に出てしまうけど、7005-mk2解体でバラ完できる分こちらがお得。

DAVOS  D-309 ネオスポルティーフ/D-604 ネオランドナー

ダボマシマシグラベルバイク。

クロモリのネオランドナーがお買い得感あるけど、ぶっといカーボンフォークと細身のクロモリフレームはちょっとアンマッチのような気も。マッシヴなネオスポルティーフはカッコいいが、カーボンを普段使いするには気を使うかもしれない?

PacificCycles Reach

折りたたみ!走行性能重視!フレームセットあり!Carrymeと同じPacific社!

一応専用リアキャリアもあり、パニアを付けての普段使い出来なくもなさそう。ドロハン構成に出来るのは夢が広がる。5800ポン付けしたい。

ただ、そんな小さくはない…

Renault PremiumLight6

程よい折りたたみ、というだけだが、気になる。というか自動車会社ブランドでの自転車はだいたいどこかのOEMでよく見た形状になりがちだと思うのだが、ルノーはちょっと違うっぽいラインナップで謎。妙にグレード分けがあるし、敢えて変速機なし/走行性重視の軽量版を用意したり… と思ったら、GICが手がけているようだ

適当にググった感じダホンのOEMっぽい?PremiumLight6だとDove Plusが同等品かな。価格差がどう出ているのかは気になるところ。ダホンで14ならK3も対抗になるやん?とかは思いつつ、いやでもここはシングルスピードの軽量さを推したく…

*1:正しくはMC565をそのまま買い増ししようとしたが在庫がなく、後継のMC566 T700版を購入

*2:FD-5800のロングアーチ構造はこの世代のみだったらしい…謎

*3:再塗装もできるか怪しい

*4:番外編として立ち漕ぎ専用自転車、みたいなアイテムがkickstarterで一時期あったがプロジェクトが成立しなかったり、既存折りたたみほど洗練されてなかったので諦めた

*5:たぶんそうなる。予算オーバーの法則