OculusQuestの感想。VRChat人口増えてるぞ

 OculusQuest

あんなこと言っててアレだけど、OculusQuestを結局買った。公式から。

さっくり4,5日でFedex到着

f:id:o_mega:20190618041120p:plain

これはすごい。ソフトの継続性は疑問だけど、お手軽6DoFでコントローラ付きVRだわ…快適

ただ、これで5万円が安いか高いかはもう分からなくなってしまっている。VRで5万は安い範囲だと思うけど、例えばPS4とかのゲーム機や他実用的な家電製品、スマホと比べ単機能なVRで5万円が安いと思えるかはわからない。

 

つまるところ、「全く新しい体験だけど単機能おもちゃ」に5万円が、手が出せるか、という話ではある。かつて、任天堂ファミコンを出す時に「本体価格を1万に収めよう」とした*1話に近い。

ソフトは既存PCのVRゲー移植がほぼすべてと言って良いので、PCVR勢にとっては新鮮味に欠ける。が遊んだことのない人は間違いなく楽しい、だろう。だろう、というのはもうその感覚がVRやりすぎて自分には分からなくなっているからだ。とはいえ何人か身近な人に被らせた感じはみんな楽しんでいたのでイケる。イケるデバイスだ。

あとはこのQuest体験と5万円が乗った天秤が、それぞれの人の中でどちらに傾くか次第だ

本体(HMD)

  • 重いといわれるが初期Vive勢からみると、十分軽いと思う。ただ前後バランスは前に寄ってるのはたしかではある
  • 外装はファブリック調でまとめられていて、高級感がある。
  • 顔あては大きめ、眼鏡対応幅。眼鏡用の奥行追加パーツ付属。パッドがファブリック調なので肌触りは良いが、汚損は心配。公式交換パーツはそこそこいい値段なのが悩ましい
  • ベルクロ調整+スライド固定はシンプルながら上々。
  • 頬に荷重が乗ってつらい場合は、公式映像を参考に正しい順序で装着するといい。HMDを顔に当ててから、後頭部へベルトをスライドして載せる。左右ベルトの長さをベルクロで調整。最後に頭頂部ベルトを気持ち短めにして、頭頂部ベルトで荷重を分散させるようにするのがコツ
  • 鼻の穴はひろい
  • レンズのスイートスポットはViveと比べ良い。多少雑に被っても視界がぼけたりずれたりしなくてよい。レンズフレアは少ない
  • ELパネルの黒は確かに綺麗
  • 視野はViveと比べ気持ち狭い?各種ゲームでは軽量化されたグラフィックと合わせて。パリッとハッキリした感じ。視界縁は気にしていれば明確にfoveated renderingで解像度が下がっているのが見える(解像度が変わる継ぎ目がある)が、動いてる分にはあまり気にならない。スクショ撮影すると解像度落ちは汚い

バッテリー

  • バッテリーは公式通り2時間が確実で、それ以上はアプリ次第といった感じ。十分な時間だと思うが、後述する充電の遅さを考えると悩みがないわけではない
  • 充電は遅い。USB TYPE-C純正の5V3Aアダプタをつないだまま遊ぶと微増程度。どうも発熱でスローにしている噂もあるので、確実に充電させたいならスリーブではなく電源オフがよさそう
  • 3Aということでケーブルと出力は気にする必要があるが、5V供給なので比較的どんなUSB充電器/モバイルバッテリーでも最低限の充電はできそう
  • 額のあたりに接近センサーあり。ここで顔を検知してスリープするが、持ち歩きの時にここが反応してしまうと、カバンの中でバッテリーを消耗してしまうケースが出るのはGO同様の様子。念のために電源オフで持ち運ぶのがよさそう

コントローラー

  • 旧Touchのフィット感と比べるとまずまず。全体的に質感は下がっているが、機能は不満ないよう注意を払ってコストダウンした、という印象を受ける
  • ラッキングは十分。稀にロストすることがあるが、致命的というほどではない感じ。範囲も十分、万歳も手をHMDに近づけても問題ない。総じてWinMR以上、Vive未満で不満はない。
  • スティック、ボタンはいい感じ。Viveに欲しかったのはこれなんだよなあ…と思わせてくれる
  • トリガーボタンの質感がチャチい、振動がいわゆるHD振動ではない/ケータイであるようなプルプル振動でチャチい、グリップ部が小さくホールドしづらい、重心が前よりのトップヘビーで時々手の中で逆さまになる、といった細かい点は気になったが、問題というほどではない
  • ストラップはナックルコントローラー式の方がよかったかもしれない
  • バッテリー持ちは良い。片側単三1本で8~10時間といった感じ。HMD内から残量は読める

OSとプラットフォーム

f:id:o_mega:20190618041514p:plain

  • 設定はスマホのホストアプリで設定する形。決済設定も同様
  • 初期設定でWifi設定とちょっとでもうVRを始められる。
  • それ以外はすべてHMDの中で操作が完結していて素晴らしい。とはいえ、キーボード入力については厳しい(他のVR、MRデバイスでも同様だが)
  • 仮想ウォール設定のガーディアンシステムすごい。これだけで未来デバイス感がある。
  • ミラー、VR視界を外部で見る手段がちゃんと用意されてるのは、他人にHMDかぶせてガイドするとき便利。一番楽なのは、ホストアプリを入れたスマホでできるので、持ち出す時に荷物がコンパクトで済む
  • スクショ、動画キャプチャ。システムに組み込まれているのは楽、そのままpublishできるのがFacebookしかないのはつらい。内蔵ブラウザでtwitterログインしてみたが、ファイルアップロードはダメだった。PCとUSBでつないでストレージアクセスはできるが、面倒

システム全体

  • 総じて高い完成度でまとまってる。高級感があり、購入してからVRを体験するところまで滑らかに体験できる。たしかにエポックなマシンだ
  • 6DoFが紐なしコントローラありで遊べるのは最高。性能やバッテリーは妥当だろう。FBロックインは気になる
  • VirtualDesktopのSteamVR対応をOculus社が削除要請する事例があったことで、早くもプラットフォームの意向が見え隠れしてしまった。adb(Android開発ツール)を使って、独自ソフトを入れるルートもあるが、そのフローで必要な「開発者登録」はOculus社への登録が不可欠であり、将来的に手を入れられる可能性は否定できない

ソフト類

チュートリアルFirstStep

  • Quest専用チュートリアル
  • 一通りの操作に、ミニゲーム2種(ガンシューティングとダンス)が含まれてて、楽しい。チュートリアル中の気球ドローン操作たのしい
  • Rift用チュートリアルだったFirstContactもQuest版が無料で手に入りあそべる。だいたい内容は被っているが、Contactと比較してさっぱりスッキリしたビジュアルに、段階的に操作が増える丁寧な作りになっている
  • とりあえずQuestをかぶせて遊ばせるには最適

ゲームBeatSaber

  • ここ1年のVR音ゲーといえばコレ、という感じのBeatSaber
  • コントローラの違い、トラッキングの違いからフワッとした違和感はあるものの、ほぼPCの感触で遊べる
  • キューブの透明感がなくなってたり、障害物の透明赤ブロックが不透明になったり、セイバーのオーラが明確にビルボードになってたり、LevelFail時のブロックが溶ける演出が差し変わってたり、重い演出は削られてるのは分かる
  • Demo版ありではあるが、とりあえず買っとけ系タイトル

 

  • PC版であった曲追加MODが早くもリリースされている。作業内容はウィザード形式でまとまっていて(Quest専用操作で)迷うところは少ないが、開発者登録などの作業も慣れないユーザにはややハードルがあると思う。
  • 今後、BeatSaber開発者がふさいでくるのは考えづらいが、今後Oculus側が手出しをしてくる可能性は考えられる

ゲームGameCentral

  • XBox360Kinectダンスゲーの続編
  • KinectからVR化したことで足のトラッキングはなくなってしまったが、代わりにダンスクラブの雰囲気を体験できるようになった。
  • 各種操作を仮想スマホにまとめてるのがなかなか面白い。マップのテレポート移動、曲の選択、各種オプションに加えて、NPCとの会話ストーリーがメッセージアプリ上で展開していく。なかなか自然なUIで感動した
  • 仮想スマホを投げ捨てるとちゃんとヒビが入るたのしい
  • オンラインマルチがアバターがあったりとSNSを意識した作りになっているようなのだけど、まだ試せていない。

Quest版VRChat

  • これこれ、これである。VRChatが動くのか?ちゃんと動くならこれが自分によってのキラーソフトで良い、ぐらいのつもりでQuest購入したとも言える。またはQuest対応アバターを作ってしまったので、自分の目で動作検証してみたくなったともいう
  • 思ったより快適で違和感なく動く。とはいってもPC版アバターやワールドは表示されないが、Quest用ワールドの範疇ではそんな困らない
  • 同一ワールドで近場10人を超えると音声プチプチが厳しくなる印象だが、PCでも15人ぐらいから厳しくなるので、こんなもんだろう
  • カメラ機能がない。これは早く欲しいところだが、DanceCentralの類似機能にプレビューがなかったことを考えるとスペック的に厳しいのかもしれない

f:id:o_mega:20190618041641p:plain

  • 観測問題ではあるけど、Questの登場によってActiveなワールドの数が激増している、つまりVRChatの全体アクティブ人口が増えてる。ざっくりだけど数倍から十数倍の印象。連日CrossPlatformワールド数がとんでもない量アクティブになってる
  • 対応ワールド、アバターはまだまだ少ない。とはいえ、直近たどMurder2がQuest対応ワールドとしてリリースされたり、遊べるワールドは増えてきている様子。
  • JP tutorialも連日人が来るようになっていて、夜に行くと有志による勝手チュートリアルを受けたり、逆に初心者を待ち受けてワイワイできる。Himiko AvatarWorld:QuestはQuest版が独立してこれまた便利。VRChatフレンドを広げるには今がチャンスだろう
  • 一方で、Questユーザがたむろってる日本語publicワールド*2はいまいちわかってない。確立しているのだろうか?
  • この辺Questユーザがどう定着して、PCユーザとどんな関係になっていくかは今後気になるところ

 

  • Viveユーザからすると、スティックでの移動は非常に楽で、ジェスチャー操作は戸惑う。grip(サイドキー)とuse(トリガー)が分かれてるのは、誤操作少なくてよい。VRChatのValveIndexコン対応を聞くかぎり、ViveコンよりはTouchコンの操作方法の方が公式推奨の操作法だろう

f:id:o_mega:20190618041714p:plain

ワールド自作、やってみたらできたQuest対応。Just Redflag、小物いっぱい作ったのとカメラギミックがんばってみたので見て〜

  • 適当にCube積み上げたワールドのような感じでポリ数等に無理がなければ、すんなり対応できる。シェーダーをVRChat/Mobile系に差し替えるだけでほぼアップのみは通る感じ
  • ただし軽量化は多少コツがいるようす。適当にサイズダウンするとテクスチャノイズが目立つようになったりするので、この辺は要調整
  • テクスチャ圧縮アルゴリズムがPCと変わってノイズが出やすくなったりしてるところは、低解像度&非圧縮の方がいいケースもあり
  • 具体例。Lightingをbakeするときは、LightmapResolutionを小さく(自分は10texelperunit程度に)、Sizeを小さく(自分は256を試し中)、CompressLightmapsをFalse(縞が目出つのを防ぐ)という感じにしている。ライトマップテクスチャの枚数を見て、Sizeを大きくするのはありかもしれない
  • カメラギミックもそのままで動いた。念のため解像度を落として設置している
  • ミラーはlocalON/OFFで露骨にfpsが変わるので、やはり性能はつらそうではあるが… なんか他が動いてると本当に性能が低い?のかよくわからんね。ミラーON/OFFを自動化してるワールドが多いのも納得
  • こうしてみると制限が多いが、逆に見るとVRC_xxxx系のコンポーネントは制限がないので、ゲーム系ワールドは特に問題なく移植できそうな気配を感じる。事実Murder2はQuest対応版がリリースされた。
  • アバターの制約に対して、Quest版ワールドの制約は相対的には少なく自由度があるように感じる?ワールド作成者にとっては、突如需要が沸いてる状態と思える

 

*1:結局それはうまく行かず15k円程度と足は出たが、その後の普及を後押しするには効果的だった

*2:Fantasy shukaijoや1619みたいな

VRChatやVRMのアバター頭身をいじる(fbx修正不要)

VRChatかわいい(挨拶)

さて、VRChatやらで改変アバターをいじくってると「身長を伸び縮みさせたらどうなるか?視点も変わってなんか楽しくなるのでは!?」と思うこともあると思う。しかしそのままモデルを拡大縮小をすると、なんだか違う。フィギュアだか妖精さんだか、になってしまわない?

普通の人間は、身長が伸びたからって頭のサイズが劇的に変化したりしないし、高身長でスマートな人は手足が長い。小さい人は、一般的に胴体に対して手足が短く、頭が大きく縦長寄りになる。大きな人は、胴体に対して手足が長く、頭が小さく頭は上下に潰れる

 

のでモデリング作業ゼロ、Unityエディタ上だけでさらっと手足の長さと頭のサイズを調整し、低頭身ちびっこアバターや高頭身ナイスガイ・レディなアバターを作る

これはVRChat/VRC SDK2で動作を確認したが、同じ方法でVRMでも同様の修正が出来たので、下にVRMの場合も書く

Just作業

いつものUnity+VRC SDKアバターをいじってるところからスタート。ちなみにこのアバター火事屋さんのU10mk2(頭)と、同じくU10ユトver(胴体)をくっつけて、テクスチャやらマテリアルやら改変した状態。

f:id:o_mega:20190521031216p:plain



もうかわいいのですが、説明すると左から高身長化(162cmぐらい)、ちび等身化(107cmぐらい)、最後に右が未変更のオリジナル(137cmぐらい)。

 

やることとはArmatureをポチポチ開いて、手(UpperArm)足(UpperLeg)を選んでscaleをいじる。と、その部位から先のサイズがまとめて変わる。

上の低身長ユトちゃんは、手足(UpperArmとUpperLeg)のYを0.8倍、頭(Head)のYを0.95倍して、やや頭を縦に縮めた*1。高身長ユトちゃんは、全体を1.1倍、手足のYを1.15倍、頭(Head)をXYZすべてに0.95倍して小顔気味にしている。

f:id:o_mega:20190521042740p:plain

 

とりまこれだけで等身は変わるのだが、そうすると

f:id:o_mega:20190521032435p:plain

床から浮いたり足がめり込んでしまう。VRChatに入ってもだいたいこの高さで浮いたり刺さる。グヌヌヌ…

なぜかというと、ここは推測だがVRChatはアバターの腰hipsボーンを掴んで動かしているらしい。腰の位置が変わらないため、足が伸びれば床を抜けるし、足が縮むと空中に浮くと思われる。

これを修正する

浮き/めり込み/接地を修正する

ボーンのScaleを変更すると「その部位から先」にScaleが適用される、ルートボーンのArmatureを修正すると「ちゃんと接地した状態で、全体のScaleが変わる」。これを活用して

f:id:o_mega:20190522030710p:plain

と、Armatureには「接地調整のScale倍率を掛け」「その直上(この場合はHips)ボーンで、逆数を掛けて、接地調整分の倍率を相殺」「改めて足ボーンに倍率を掛ける」とだいたい狙った感じになった

 

さらに全体のスケールを調整する場合は、Hipsボーンに倍率をかければ良い。

f:id:o_mega:20190522042612p:plain
でだいたい近い位置になると思うが、Hipsボーンの長さ?作り?で若干(2,3cm程度?)ズレるようなので、最終的には足ボーン(UpperLeg)のScaleを0.01単位ぐらいで調整し、接地させるのが良さそうだった

あと、アバターを選択すると、足場の線が出るっぽいのでそれをガイドに調整するとやはり良さそう

f:id:o_mega:20190522031328p:plain

 

仕上げの視点調整を忘れずに

f:id:o_mega:20190522033728p:plain

VRC_AvatarDescripterのViewPositionのY数値をいじって、視点ボールを目の辺りにあわせる。この辺は(やったことあれば)アバター制作の作業とおなじ。画像のように▼を押してPipeline Managerを畳んでおくと、(なぜか)ViewPosition調整がしやすい

あとはアップロードすればOK

 

VRMの場合

VRMでこの等身調整をする場合、公式の作業フローでは正規化前のモデルの段階で今回の修正をする

例えばfbxをインポートとしてVRM吐いてる場合

  1. fbxをインポートする
  2. fbxをヒエラルキーに置いて、等身をいじる(今回の作業)
  3. VRMをExport(正規化)
  4. ExportしたVRMを取り込んで、マテリアルやら表情blendshapeやら揺れものやライセンス、FirstPerson Offset(視点調整)等を設定する
  5. VRMをExport
  6. 完成

という感じで出来ました

 

いかがでしたか?

ちょっと違った改変で、ちょっと違った視点も手に入る頭身調整。同アバターと会ったときも単なる色違いだけでなく、なんか姉妹兄弟っぽさがでて、たのしい

低身長(110cmぐらい)でVRChatを過ごしていると、ワールドが150cm~160cmぐらいを基準に作られてて、低身長はなかなか大変なのが実体験できてまた面白い。ワールドによっては低身長向け台座が用意されていて、バリアフリーなことが体験できたり、逆にないワールドではバリアを体験できたり。なんでドアのハンドルが頭の位置にあるんだよ!みたいな体験がVRで楽しめるのはいい。150cmのアバターが背高く見えて、囲まれるとなかなか圧迫感があるとかも良い

おすすめ改変tipsでした

*1:ここではいじってないが、首(Neck)を縮めるのも良さそうだ

Oculus Questを買うべきかどうか。またはQuestはどういうプラットフォームか

結論

VRをOculusDK1から追っかけ、今はVive初代+Trakcer環境の自分からの意見として…、正直読めない。個人的には様子見を推奨する。3カ月経ってからもう一度考えていいと思う

 

 

つよつよPC*1持ってなくて、5万円ポンと使えて過去有名のスタンドアロンなタイトルがやりたい。であればQuestはアリ。

5万円が惜しいVRChatのような特殊なオンラインゲーやりたい、BeatSaberのMOD環境*2やりたい、最新のVRゲーが遊びたい*3という目的だとQuestはリスキー

 

ハードウエア

  • 順当。待ち望まれた6DoF/コントローラ/インサイドアウト
  • PCと比べれば激安で、セットアップが簡易

ソフトウエア

  • 先行き不明
  • ローンチタイトルに有名ソフトが並んでるのは○
    • VRChat,VacationSimulator,BeatSaber,Thumper,BoxVR,RecRoom,PokerStarVR,KeepTalkingAndNobodyExplodes,I Expected you to die,SpacePirateTrainer,DanceCentral等
    • ただし、VRChat,BeatSaber等PC版と大きく仕様が異なったり、MODが導入できないケースを考える必要はあり
    • いくつかは、DK1,DK2時代からの名作であったり、VR必須でないタイトルもあり、PC勢から見ると古く見えるタイトルもある
  • ストアが閉鎖的で、開発者が気軽にソフトを開発できない
    • SteamVR開発はその日にでも始められるが、Questは企画書審査から必要
  • ローンチは良いがその後が続くかは不明

考察

というのを考えていると、どうもPCVR環境とQuest環境はカチ合わない。つまりRiftSとQuestは対抗ではない。たまたまPCVRの1パーツと、Quest単体の価格が同じになり、同日に発表されたと見るのがいい

 

ストアの閉鎖性、環境の独立性を考えると、むしろコンシューマゲーム機に近い。コンシューマのVRといえば、PSVR環境だ。PS4ゲーや各種映像メディアに強く、Moveコンと全体価格で不利な、先行するPSVRと、そこにコントローラと全体で有利なQuestが殴り込みを掛ける図

または、既存ソフトがなく、移植タイトルをたくさん引き連れて他業種(Facebook/Oculus)からコンシューマゲーム機へ参入を決める、と見ると、かつてのXbox3DOを思い出す光景でもある。

 

現行のPSVRが400万台の出荷を達成した、とニュースであった。現行コンシューマVRで一番売れているのはPSVRであることを考えると、Questがそこへどれだけ追いつけるかが一つの目安となりそう。

それまでは、Facebook/OculusがどれだけアプリをQuestに引き込み続けられるか、ローンチ後にどこまでソフト供給を出来るかによると思える

*1:VR Readyである。GeForce1060以上のGPU持ちPCがある

*2:Twitterや動画サイトで見られる動画はほとんどMOD入りで遊んでる連中だぞ!

*3:ここでいう「最新」は個人差がある。VRの中でも「最新の」タイトルを指す

バーチャルマーケット2が凄くて、VRChatの楽しみ方がやっとわかった

もう先々週になるがバーチャルマーケット2がすごかった。

 

結論

  • Vマーケット2すごかった。
  • それを支える日本ユーザ、数も質もやばい。VRCすごい
  • とはいえいきなりVRCの野原は初心者には厳しい。知り合いアテンドが欲しい

 

こんなにも日本人モデラーが集まって参加して、シームレスにマルチプレイVRが楽しめることが過去あったであろうか、という新鮮さ。それぞれの世界のクオリティ。恐ろしく広いVRワールド。なぜこんな世界があるのを放置していたんだ自分は、という呆れ。すごかった

 

 バーチャルマーケット2

やる前は、前々からVRChatアカウントはまああったり、SDKをつつくみたいなことは試していたんですが、いまいちピンと来ず…という状況。VRC界隈っぽい人を何人かフォローしていたノリでクラウドファンディングもbackしていた、やはりいまいちピンと来ておらず。一応Vケット2自体は凄そうなので、それに合わせてアバターでも用意しておくかー?というぐらいでSDKいじったりしていたものの、そもそもVRChatの何が楽しいのか、わからないまま当日を迎えた

 

という感じで金曜を迎えた。てっきり、土曜オープンだと思っていたので金曜0時は早いな、とは思いつつも、オープン直後のワイワイがTLから見れたので見に行くかと、トラッカー3つ付けつつVRCを起動した。

ちょうどtwitterフレンドがログインしていたので一緒に散策したのだが、これが大正解。不慣れな操作カメラ操作やら、AvatorCloneやら操作をあれこれ教えてもらいつつエントランスを見て回る。

 

やってることは現実でもよくある至って普通のことで、要は単に展示会があってそこを知り合いと2時間ほど散策した、というだけではある。VRらしい展示といえば、視界ジャックギミックがあったり、アバター着せ替えがあったり(これは強い)、ツクモの記念撮影ブースがあるとか、展示品を触って取っても落下しないし勝手にリスポーンしてくれる、とか。お手を触れないでください、が一切不要で近づける。それはそうだ。これらギミックは確かに面白い。

 

面白いが個人的には、そういうギミックはプラスアルファの面白さであって、土台の面白さは別に感じた。VRで、複数人でわいわい散策して写真が撮れる。それもかなり自然に。そこに素敵なワールドが、様々な展示ブースが、試着できるkawaii/かっこいいアバターが、展示小物がマッチする。素晴らしい相乗効果だ。って、なんでこんなにモデルデータを公開してくれる人がたくさんいるんだ。すごい。

「うおー、ここからの景色すごい」「あっちのアバターちょっと着て見よう」「めっちゃかわいい」「あっちにまだブースあるみたいよ」「おーい、どこ行った?」などとボイチャしながらワールドを散策できる。VRワールド内で迷子になったりする。んで写真が取れる。自撮りが捗る。VR旅行だ。

 

 

などと理解して、エントランスに続きモクリバサールAを巡ったところで気づく。

Vケット2は土日で終わる。全400ブース?10ワールド?あと8ワールドもある。ざっと巡った感じ1ワールドに1時間ぐらい使っているじゃないか…。おいおい、正気か!?一週間ぐらいVケット開催してくれ!頼む!これは時間がない!!

 

すぐさま友人のVR持ち勢に声をかけて、土曜日に走り回ったわけだ。「アテンドするから、はよVマーケット2へ来い!VRCにログインしろ!」

あ、買ったアバター こちら火事屋さんのU10mk2ちゃん。かわいい自撮りが捗る。VRC SDK試しておいてよかった… kawaiiアバターがすっと買って使える。

 そんな感じで土日が溶けてしまった。すごい。VRChatとVマーケットには引き込む魔力とアツいパワーがあった。最高のVRChat体験になった。こういう入り方ができると良かったんだ

  

VRChatの始め方とか

振り返ってみて、考えるとVRChatはかなりおおざっぱというか割り切ったコミュニティ設計に見える。MO型のオンラインゲームとして見ると、まずゲーム部分がない。

かつてRagnarokOnlineが「ゲーム付き高級チャットツール」と揶揄されたように、末期のオンラインゲームはしばしばチャットツールと化す。が、VRChatには最初からそうなっている。つまりゲーム抜きオンラインゲームなのだ。ボイチャと散策とスクショがほぼすべて

 

そしてボイスチャット前提のハードルが高い。それはそうなのだがテキストチャットというぬるいシステムがない。適当なpublicワールドに突撃すると英語で話しかけられたり、さらにVR空間内で追いかけられたりハラスメント被害に会ってトラウマになる可能性もある。会った。なんでや…

見知らぬ人にデカいアバターVR空間内遭遇すると、相当な威圧感を感じる。こわい。初見で2mぐらいのアバター使いつつ無言で寄ってきてVR頭ポンポンするのやめーや。それが理由かはわからないが、日本人アバターはなぜか小さい人が多い。100cm~150cmぐらいが多いのもこれが理由なのかもしれない

少なくとも見知った人だけで最初は散策をしたい。

 

正直VRChatのUIはよろしくない。というとちょっと違うかもしれないが、VR空間内でのSNSのUIにデファクトがなく、VR空間内でどうすればいいか初心者にはわからない。加えてカメラUIは劣悪で、上記のように自撮りしたり撮影するには必須操作なのにパッと見わからん。

そして散策すべきワールドもよくわからない。Twitterなり外部サイトでおすすめワールドとかを探していれば別だが、初心者ができるとは思えない。そしてこれはVRでは重要なのだが、HMDを付けてると他サイトをぐぐったりするのは難しい。

 

そんなわけでVRChatにハマるためには、 一人でなんとなく行く、はできるだけ避けたい。できればアテンドが欲しい。そのためにVRChatに慣れてる人は、ぜひそういう友人を誘って、オススメワールドを見せてあげてほしい。

 

「今度一緒にVRChatいこうぜ。おすすめのワールドがあるんだ」

あ、これすごい普通のセリフになった。VRなんだけど

MC565フレーム破壊してしまった

2月のブルべに参加して、千葉の大福山を登坂していたら、RDがもげて巻き込んでいきなりホイールロック。あわや転倒は回避したものの、走行不能に。

f:id:o_mega:20190218235736p:plain

よくよく見ると、チェーンステーがメッキリと行っており完全に走行不能。実に一年の短さであった…。悲しい

手持ち工具でRDとチェーンをもぎ取り、てくてく駅まで歩く小旅行。MC565には最後のツーリングになってしまった

f:id:o_mega:20190311235954p:plainf:id:o_mega:20190218235030p:plain

 

帰宅後、破損断片をよく見てみると…

f:id:o_mega:20190312000736p:plainf:id:o_mega:20190312001245p:plain

どうやらローギアに入れていた状態でスポークと引っかかったようす。RD側のガイドプーリーが1つ欠けているのと、RDハンガーは内側にねじ切れている

ただ、RD取り付けについてはそんなにいじった記憶がなく、そんな変速も変ではなかったような記憶だ。もしかしたらRDハンガー根本がグラついていたか、緩まった可能性はありそう

 

思い出すとここ1年は、カーボンエンドのフレームでは推奨されない固定ローラートレーニングをやっていた。おそらくそれが理由でカーボンエンドを圧縮してしまった、RDハンガー根本が歪んだ可能性はありそう。NGはNGだった、という理由がわかった

 

なってしまった、のは仕方がない。が春に向けて自転車がなくなるとなかなか悲しい。急いで組み直したいところ。フレーム自体は気に入っていたので同型を再注文しようとしたが、すでに旧式化して在庫がなく後継フレーム「MC566」を取寄中

VRoid HubにVRMをアップロードすると、VRMファイル内のライセンスが書き換わる問題

結論

  • VRoidHubは、投稿されたVRMファイルについて、作者に説明不足な状態でライセンスを書き換え、自社URL(hub.vroid.com)を埋め込んで配布している。現状作者のライセンスを維持してVRoid Hub上でVRMを配布する方法はない。
  • 元々設定してあったOtherLicenseURLが消され、VRoid HubのURLに上書きされるのは気持ちが悪い。
  • VRoid Hubは、VRMと条文互換性がない独自ライセンス/利用条件を作っている。
  • 先にサービスを展開して、こっそり独自仕様を忍ばせるのはスマートとは言えない。VRM規格を変更するのであれば、VRMコンソーシアム等での適切な議論の上で変更してほしい。

 

実際にVRoidHubにVRMをアップロードしてみる

自作のVRMファイルをVRoid Hubへアップロードして公開してみよう。OtherLicenseURLも記入して…、こんなライセンスのVRMファイルを作ってみる。

f:id:o_mega:20190201011253p:plain

これをVRoid Hubへアップロードする。

f:id:o_mega:20190201032241p:plain

「モデルデータの利用条件を確認しよう」と誘導されるので、それに従う。

f:id:o_mega:20190202032035p:plain

「他の人の利用」を「OK」に設定しないと、DL可能な状態にできないと言われたので、「OK」を設定してみる。

f:id:o_mega:20190202031856p:plain

利用条件というのはVRMのライセンスとは異なるのか?疑問があるが「登録して公開」する。これでDL可能になった。

f:id:o_mega:20190202035945p:plain

さて、「このモデルを利用する」からVRMをダウンロードして、UniVRMで見てみる

f:id:o_mega:20190201012916p:plain

え?何このURL?自分の設定したURLはどこ?どうしてVRoid HubのURLが入ってるの?

 

あなたがVRMモデル作者で、DL可能状態でVRoid Hubへアップロードしているなら、ぜひ自分のVRMファイルをDLしなおして、VRMファイル内のOtherLicenseURLを確認して見てほしい。ここではUniVRM(0.44)で確認を行ったが、他のVRM対応アプリケーションでも同じように確認できると思う。hub.vroid~から始まるURLが見つけられるはずだ。

 

どうしてライセンスURLが書き換わるのか?

FAQを探るとそれらしい記述は見つけられた

VRoid Hubの利用条件とVRMライセンスについて – VRoid ヘルプ

「その他のライセンス条件(Other License Url)」について

商用利用についての詳細や、クリエイティブ・コモンズから変更した部分を補うために、「その他のライセンス条件(Other License Url)」については、利用条件を記載したURLが設定されます。

 

なお、こちらの記事でも述べているように、すでにライセンスが設定されているVRMファイルをVRoid Hubにアップロードした場合、そのモデルデータにある元のライセンスが反映されたVRoid Hubの利用条件が設定されます。

https://vroid.pixiv.help/hc/ja/articles/360014960454

VRoid Hubにアップロード後に、ご自身で利用条件を変更しない限り、元のライセンスが異なる条件に変更されることはありません。

(2019/2/2時点)

 「ご自身で利用条件を変更しない限り(中略)変更されません」とは書いてあるものの、変更せずにDL可能状態にはできない。いくつかのVRMファイルで確認したところ、VRoid Hubで配布されるVRMファイルはライセンスが上書き改変されたと思える状態になっていた。

つまり、VRoid Hubには作者がもともと設定したライセンスを維持して「DL可能な状態」にする方法がない。FAQには続けて下記の記述があるが、これは実際の挙動とは異なる説明だろう

 

なお、この説明FAQへのリンクや誘導は変更フローからは存在せず、上で試したような普通の作業フローで気づくのは難しいと思える。

VRMライセンス内容の引き継ぎと変更について

VRoid HubにアップロードしたVRMファイルは、元のライセンスデータをそのまま保持しています(※1)。タイトルやバージョン等の一般情報(メタ情報、Information)も引き継いでいるので、VRoid HubからダウンロードしたVRMファイルをUniVRM等で確認すると、元のライセンスデータが確認できます(※2)。

VRoid Hubでは、VRMのライセンスデータを「利用条件」として、互換性を維持したまま、より分かりやすく表示しています。

(2019/2/2時点)

上で試したように、VRMモデル作者の設定したOtherLicenseURLは上書きされ失われている。引き継げていない。

 

 

もう少しFAQを見ていく

VRoid Hubと、UniVRMや連携サービス上でのライセンスが異なるのですが – VRoid ヘルプ

VRoid Hubと、UniVRMや連携サービス上でのライセンスが異なるのですが

 

▼VRoid Hubに登録したモデルデータと連携サービス先で表示されるライセンスについて

 

VRoid Hubで登録したモデルデータを連携サービス上で読み込んだ際、VRoid Hubの利用条件と連携サービス上で表示されるライセンスが異なるライセンスのように見えてしまうケースがあります。

(2019/2/1時点)

「UniVRMでのライセンスが異なる」とUniVRMでのライセンス表示が適切にできなくなっている、つまり互換性が失われていることを把握しているようだ。他の規格互換ツールならともかく、標準実装であるUniVRMと表示が異なっている状況を見て、互換性があると明記しているのはなかなか不可解だ。互換性はファイルが読めるだけではなく、ライセンス条文も同一でなければ困る。

 

念のため、他のいくつかのVRM対応アプリケーション、VワールドVRM Live ViewerVirtualMotionCaptureHitogataVRMを開いてみて、VRoidHubと同様の利用条件表示ができているものはなかった。なぜこのようなVRoidHubでしか使われてないライセンス/利用条件を作って、そしてVRoid Hubユーザに適用させようとしているのか。

 

仮に、もしライセンスを変更/拡張するのであれば、本来例外的なライセンスを記入するOtherLicenseURL欄を多用するべきではないとだろう。
それこそ、他のライセンス項目同様に(例えば暴力表現や性的表現、商用許諾のように)VRM規格側へ取り込むべきといえる。ライセンス規格が乱立するのはVRMモデル作者としてもVRMユーザとしてもVRMアプリ開発者としても手間が増える。もともとのVRMのコンセプト、ポータビリティを高める目的にも反する。
こういった、現状分裂を引き起こしているライセンス/利用条件を、VRoid Hub内で配布する全VRMファイルに、説明不足な状態で上書きして使わせようとしているpixivの姿勢には疑問を感じる
 
VRMコンソーシアムにはpixivも参加してるのだから、ぜひそちらで議論してVRM規格を統一してほしい。
 

余談

余談だが、VRoidStudio(0.5.3-win)は特に問題なくVRM規格に準拠したライセンスでVRMファイルを出力している。

今回の確認にはVRoidStudioで作成したVRMおよびUniVRM(0.44)を使用した。

バーチャルモーションキャプチャー + LIVでVRゲーMR合成をしたりする副読解説

ざっくり言えば、これをやる方法です

 

この記事はバーチャルモーションキャプチャー公式サイトの操作方法を元にしつつ、それぞれがどんな感じに組み合わっているかを補足する想定でいます。元記事を参照しつつ、歴史的経緯やら「なんでこうなってんの?」的な部分を補完できるといいなあ

 

先にネタバレしておくと、上の絵のシステム概略図はこうだ。これを見てわかってしまったら、それでいい。今すぐSteamVRを立ち上げて公式説明を見ながら格闘しよう

f:id:o_mega:20190122031258p:plain

以下はこれがなんでこうなってるか、という歴史的経緯を含めた解説にする

使うもの一覧

以下は構成に必要になもの

使うハードウエア

  • HTC Vive
  • HTC Viveトラッカー
    • 必要に応じて追加。なければHMD+手(コントローラ)x2で3点トラック
    • トラッカーを追加する場合の推奨としては、推奨優先順に、腰、足先x2、肘x2、膝x2だろうか。とりあえず腰、足先x2の3個追加(6点トラック状態)するのがおすすめ
    • VMCでは柔軟なトラッカー設定が使えるため、例えば上半身のみの絵作りであれば、HMD+手(コントローラ)x2+腰で1個利用とか、HMDを使わず頭+手(コントローラ)x2+腰で3個利用とか、頭+手x2+腰で4個利用といったトラッカー配置ができる
    • 余談だがそもそもガンコントローラやテニスラケットをVR化するためのデバイスであって、全身にくくりつけてフルトラマンとかやってる人間が多い日本が異常らしいゾ。対抗しうるモーションキャプチャー操作「perception neuron」が25万とのことなので、トラッカーは(相対的には)安いらしい…

使うソフトウエア

  • バーチャルモーションキャプチャー(VMC)
  • LIV
    • VRアプリと連携するMR合成ソフトウエア
    • SDK組み込み済みのVRソフトと連携して、MR合成を行うのが主機能。MR合成のために仮想Viveコンと仮想Viveトラッカーや、録画機能も持つ
    • 「映像合成」と仮想Viveトラッカーが今回主要な役割をする
  • Opensource Broadcaster Software(OBS)
    • 定番の動画配信/録画エンコーダー
    • 単純なグリーンバック合成だけでいい場合や、LIV合成後の画面を組み合わせて凝った画面配置をしたい場合、動画配信をする場合に使う
    • ただのグリーンバック合成ならLIVよりこちらの方が軽い
  • VRソフト
    • 自分がプレイするソフト
    • 「LIV SDKが組み込まれているか」「externalcamera.cfgに対応しているか」「どちらも対応してないか」でざっくり扱いが変わる。後述

その他

 

基礎はexternalcamera.cfgとグリーンバック合成

そもそもの発端はSteamVR SDKにある、externalcamera.cfgを使ったグリーンバック合成だ。下動画の0:45あたりからがわかりやすい

youtu.be

動画が2016/4とあるように、SteamVR SDK当初からある。有名な例は、Circle of Saviors VRTGSデモだろう

www.youtube.com

 グリーンバックを背景にしてゲームを遊ぶ現実世界のプレーヤーを切り抜き、ゲーム画面と合成することで、VR世界にいるかのような絵を作る。これがexternalcamera.cfgを使ったMR合成だ。

 構成図はこうなるf:id:o_mega:20190127013517p:plain

当時の合成方法はHTC Viveでクロマキー合成映像を撮影するには - フレームシンセシスのやMRVideo - vrapp Wiki*記事に詳しいが、ざっくりいうと

  • 3本目のViveコン or Viveトラッカーにカメラをくっつけて実世界に配置
  • (対応している)VRアプリにカメラ座標情報(externalcamera.cfg)を読ませて(たいていの場合はexeと同じフォルダに配置して)MR合成モードにする
  • OBS等の動画ツールでグリーンバック合成をする(クロマキーで緑背景を透過して重ねる)

という感じである。合成ズレをへらすためには、externamcamera.cfgと現実を撮影するカメラの特性をキッチリ合わせる必要があるようで(手作業)なかなか骨が折れそうである

仮想コントローラの登場

ただ、この方法では合成のためだけにViveコントローラかトラッカーを1本買う必要があった。カメラを動かしてもちゃんと撮影されてる体にするのは、それしか方法がないのだが、別に個人でやるならカメラは固定でいい、それなら物理でコントローラ/トラッカーがなくてもいいじゃないか?ということで登場するのが仮想Viveコントローラ/仮想トラッカーだ。

コントローラ/トラッカーがなくても3つ目として認識させる。実際SteamVR画面を見ると出現していることがわかる(LIVが起動すると他コントローラ/トラッカー同様に電源が入った表示になる)

f:id:o_mega:20190116044524p:plain

仮想Viveコントローラ/トラッカーはいくつかリリースされている様子だが、今回はLIVに統合されているものを使う。

 

仮想コントローラを使う時に注意しないといけないのが、Viveコントローラの起動順序。SteamVR自体がVRアプリで使うのを、1本目と2本目のコントローラとしているので、物理コントローラを起動する前に仮想コントローラを起動すると、仮想コントローラが1本目や2本目に割り当てられてアプリを操作できなくなる。必ず、物理Viveコントローラの電源を先に入れてから、仮想コントローラの電源(LIVの場合はLIVを起動)を入れる

LIVは映像合成 + 仮想トラッカー + αのおまとめパッケージ

公式の動画をちらっと見ればわかるが、実写とVRアプリ空間のMR合成をするケースではexternalcamera.cfg単独とやることは大して変わらない。同じだ。

youtu.be

MR合成に至る面倒事を様々カバーしている。

  • 専用SDKVRアプリと連動し、より高度な合成(optional)(環境光を再現したり、前後位置で映像を分けて合成する)
  • 追加コントローラを買わずに済む、仮想Viveコントローラ
  • 単独でグリーンバック合成

むしろ、MR合成の諸々ツールをひとまとめにしてパッケージ化したのがLIVと言える。LIVが仮想Viveコントローラを内蔵しているので、前述のように物理Viveコントローラの起動より後に立ち上げる必要がある。

externalcamera.cfgはここでもカメラ座標の共通フォーマットとして、以前のMR合成モードから引き続き使われている。キャリブレーションでexternalcamera.cfgを読ませると、LIV SDKを経由してVRアプリに情報が伝達されるか、従来と同様にexternalcamera.cfgをexeと同一ディレクトリに配置する挙動をしているようす

VMCでアバターを使うケースに戻って比較

改めてVMC+LIV+VRアプリの構成に戻ろう

f:id:o_mega:20190122031258p:plain

実写MR合成のフローと比較すると、実はそんなややこしくなく「物理カメラによるグリーンバック実写映像」が「仮想カメラからのVMCのレンダリング結果」に差し替わっただけ。だからこそ、カメラ情報(externalcamera.cfg)は、VMCとLIVの両方で読む必要があるし、仮想LIVトラッカーに割り当てる必要がある。VMCが仮想カメラとしてLIVに認識されるのも、元が実カメラだったことに由来している(はず)

実写MR合成だと物理カメラに物理トラッカーといった実物があるので理解しやすいが、これらが仮想になったことでややこしく把握しにくくなっていると思うので、一旦実写MR合成のフローから再確認しよう、というのがこの記事なわけです。

あとコントローラの起動順序な!

以下適当QA

Q.VRアプリがLIV非対応&&externalcamera.cfg非対応の場合はどうする?

A.諦めよう。第三者視点でのレンダリングVRアプリが対応してない以上、第三者視点の合成はできない。

とはいえ主観視点+アバター合成でも雰囲気は悪くない。アバターが結構目を引いてくれるので、VR動画としても酔い対策になると思う。こんな具合に

 このケースでは、VMC+LIV合成とだいたい同じだが、

  • カメラをあわせる必要がないためexternalcamera.cfgは触らなくていい(仮想トラッカー/コントローラも不要)
  • クロマキー合成をOBSで行う

という感じになっている。LIVが絡まない分処理は軽く、仮想トラッカー/コントローラも絡まないためトラブルも少ない。とても汎用的で非VRゲーとかをやるにも使える。非VRゲーやる時にはVMCの手や頭設定をHMDやViveコントローラの変わりに、Viveトラッカーにすると楽だろう

上の絵を撮るときは、頭トラッカー+手トラッカーx2+腰トラッカーの4トラック装備で行った。HMDとコントローラは一切使用してない。上半身だけで撮影する時でも頭と腰で2点トラッカーがあると、首かしげや前のめり等、kawaいい動きが付けられるので積極的に腰トラッカーを装備したい

まあただ、この手の絵だとそもそも顔芸がほしいよね?というのはあり、その場合表情付けの方法を考える必要あるね(別オペレーターを用意するとか、コントローラなり、又はいっそVMC以外の顔認識系でやるとか)

Q.VMCでキャリブレーションしたときに、トラッカーが違う部位にアサインされてしまう。

A.LIV起動前にキャリブレーションをする。LIVが立ち上がる前にキャリブレーションすることで、LIVの仮想コントローラ/仮想トラッカーに割り当てられるのを防ぐことができる。

一番確実な方法は、VMCのトラッカー設定を「自動判定」からそれぞれ個別に割り当てるだが、ちょっと面倒かな。

Q.複雑な画面作りをしたい

A.LIVの合成結果を、OBSで更にキャプチャーする。OBS側でいろいろ配置して複雑な画面作りをする。

この時LIVの映像は遅延するので、OBSの音声入力を同じだけ遅延させるとよい(OBSのオーディオ詳細設定で同期オフセットを設定する)

Q.トラッカー固定とかどうするの?

A.いろいろググるとみんないろんな手を使ってるので、DIYだ。専用品もあるがやや高い。うちの例はこう

f:id:o_mega:20190127045340p:plain

頭は溶接ヘッドバンド、手or足はベルクロテープ+3Dプリント台座、腰も同様。台座はこのモデルを出力している。

Viveトラッカーはカメラの三脚ネジ(1/4インチネジ)が刺さる。Amazonだとこの手のアイテムが土台には便利だが、ホームセンターで15mmぐらいの1/4インチネジを買うといろいろアイデアが湧くかもしれない(ただしネジは頭が大きいので工夫は要るかも)。

f:id:o_mega:20190127045447p:plain

手装着例

他だとクロックス(サンダル)に、インシュロックで固定勢もいる様子。腰は安いウエストポーチを潰すとかいろいろ工夫しがいがあると思う。

専用品は例えばツクモで取扱あり(TrackStrap)

Q.一通り起動まで結構たいへんじゃない?

A.結構たいへん

LIV/externalcamera対応ゲーやるとき

わい「SteamVR起動!」
ベースステーション「フォオオオ…(30秒ぐらい」
わい(この間にトラッカー装備しよ…)
わい「ベースステーションB,C起動確認ヨシ!」
わい「トラッカー1,2,3起動!トラッカー認識ヨシ!」
わい「VMC起動!」
(これもなんか時間かかるので、平行してコントローラ起動)
わい「コントローラ認識ヨシ!」
わい「VMC設定ロード!キャリブレーション開始!」
(立ち上がってHMDを付けてTポーズする)
わい「(HMDを外して)VMCトラッキングヨシ!」
わい「LIV起動!externalcamera読み込みヨシ」

わい「VMCでもexternalcamera読み込みヨシ」
わい「SteamVRからゲーム起動」
(起動ちょっと待つ)

わい「LIV合成確認ヨシ!」
わい「OBS起動。OBSキャプチャー設定ヨシ!録画開始!」
わい「…よしゲームやるぞ(HMDをかぶる)」

非対応ゲーやるとき

わい「SteamVR起動!」
ベースステーション「フォオオオ…(30秒ぐらい」
わい(この間にトラッカー装備しよ…)
わい「ベースステーションB,C起動確認ヨシ!」
わい「トラッカー1,2,3起動!トラッカー認識ヨシ!」
わい「VMC起動!」
(これもなんか時間かかるので、平行してコントローラ起動)
わい「コントローラ認識ヨシ!」
わい「VMC設定ロード!キャリブレーション開始!」
(立ち上がってTポーズする)
わい「VMCトラッキングヨシ!」
わい「OBS起動!グリーンバック合成設定読み込みヨシ」
わい「SteamVRからゲーム起動」
(起動ちょっと待つ)
わい「OBSキャプチャー設定ヨシ!録画開始!」
わい「…よしゲームやるぞ」

こんな感じにはなる!仕組みがわかれば、トラブル要因はコントローラ起動順序とトラッカー割当/キャリブレーションに収束するはずなので、順序に気をつけてて手順をキッチリやると良いだろう

かわいくなるためには日々の努力が必要なんだなあ…