OculusQuestをUSB接続しても内部ストレージが見れない時

f:id:o_mega:20190707161853p:plain

どういう状態?

  • OculusQuestをPCにつないでも、Questの内部ストレージ見れない
  • 以前は問題なかったが、急に見れなくなった
  • WindowsエクスプローラーにQuestはいるが、開くと中身は空
  • Quest側にも特に表示がない場合

f:id:o_mega:20190707163720p:plain

対応方法

解決方法はUSBケーブルでQuestを接続した状態で、adbコマンドを流すとQuest側から「このパソコンを信用する」が出るようになる。信用するを選ぶと、無事ストレージが見れるようになる。

恐らく開発者モードに入れたのが影響してるようす。

 

自分のケースでは Oculus Quest の映像をテレビに映したりキャプチャする方法 - Qiita の記事に従って、scrcpyをすでにインストールしていたので、そこに付属のadbを使った。

Questを接続した状態で

# scrcpyを解凍したフォルダでコマンドプロンプトを実行
# またはエクスプローラーのアドレスバーで"cmd"を書いてenterし
$ adb shell ip addr show wlan0
$ adb tcpip 5555

とすると(恐らくadbでQuestに接続するのであれば何でも良さそう)、Quest内で「コンピュータを信用するか」のダイアログが出る。

普段遣いのPCなら「常に信用する」のチェックをつけておくのがいいだろう。チェック・オフの場合、接続毎にadbを起動する必要がある。

 

この時点でWindowsからデバイスをつないだ時の「ペコポン」音がして、ストレージが見えるようになるはずだ。

 

VRChatのQuest用ワールドを雑に作る指針と、ライティングをいい感じにする話

※この記事は2019/6月時点での情報です。今後のVRChatアップデートによっては状況が変わっている可能性があります

VRChat Quest対応ワールドを増やしたい?増やしたくない?

「OculusQuestがVRChat用端末に割といいぞ。んでもってVRChatもユーザ増えてる」ということで、Quest対応VRChatワールドを作るなら今がチャンス!!!!  俺もドバーッとワールド作りたいんだけど、一人では全く間に合わんので、みんな作ってくれ…

 

VRChatワールド制作歴1カ月ぐらい、初めてのlab送りした自作ワールドjust RedFlagを作る間に得たtipsを適当に書きます。といっても、このワールドは当初からQuest対応するつもりはなかったんだけど、適当にポチポチしたらわりかしQuestで動いてしまい、見栄えもまあまあできたという経緯。

 

基本的にQuestをターゲットに書いているが、基本すべてのことはPC版でも有効になるはずなので軽量&イカしたライティングのワールドを作るときの参考になるかもしれない

 

基本コンセプト。まずQuest用に作る、PC向け表現を分ける。

公式ドキュメントに書いてある通り「PC向けを先に作って、Quest向けに軽量化する」よりは「Quest向けに作って、そのあとPC向けに最適化する」方が楽、と思われる。

 

「PC用/Quest用プロジェクトを作って云々…、って大変そう。しかもオブジェクト類は全部同じ配置じゃないといけないんでしょ?プロジェクト2つをちゃんと同じにそろえるのって大変じゃん」と思うかもしれないが、Quest用Avatar開発で言われてるのと同様、「どっちかのプラットフォームで作って、UnityプロジェクトのSwitchPlatformする」だけで2環境を切り替えて開発でき、オブジェクト配置は同じにできる。最終的には、PC用でアップ→switchPlatform→Quest用でアップ(PC/Questは逆でもよい)、の3ステップでCrossplatformなワールドがパブリッシュできる

PostProcessingStackのようなPC専用機能は、Quest向けにそのままアップロードしても無効化されるのでわざわざ切り替える必要はない。テクスチャについては、Unityのプラットフォームごとのオーバーライドという機能を使えば、自動で環境ごとにリサイズして出力ができる。

 

Quest用シェーダーはPCでも動く、のでQuest向けシェーダーでPCワールドを構築してしまえばそのまま両対応なワールドが出来上がる。

もちろんQuest基準で全部作ってしまえば、例えば透明マテリアル(Transparent)や特殊な表現シェーダー、VideoPlayerまでPCで使えなくなってしまう。そこについては切り替えるしかない。例えば、PCで作っておいてQuestでアップロードするときは該当GameObjecetのEnableを切るとか。PCのガラス表現は別メッシュにしておいて、Quest側ではMeshRenderをDisableにしておく、とか

 

ということでPCとQuest用ワールドの差異をQuestに揃えてできるだけ減らす、または自動処理に任せてしまうことで、やるべきことを単純化しておくと案外できる

 

実際作るときの作業フローは、PC/Questどちらかの環境向けでビルドして編集/確認をし、適度に途中/最後でPC/Quest両方をアップロードして最終確認することになる

自分の動作チェックは主にPCでやっているが、Questでの検証が捗るならそちら基準でもよい。ただし、UnityのSwitchPlatform操作はAssetの量によるが数分PCが使えなくなるので、頻繁に切り替えたくはないだろう。基本はPC/Questどっちかで開発をすすめ、いい感じの出来になったところで、Switchしてもう片方で動作チェックするのが良いと思われる

 

Quest向けセットアップをする。

公式ドキュメントに従う。Build Settings -> SwitchPlatformをしようとすると、UnityAndroidSDKのダウンロード&インストールが促されるのでそれに従う。インストールしUnityを再起動すると、SwitchPlatformが押せるようになる

f:id:o_mega:20190622024514p:plain

あとは普通にワールド作成をする。ミニマムだとVRC SDK内のexampleでもいいし、VRCWorld prefabをD&Dしてもいい。各種有志が公開しているワールド作成キットもいいぞ。virtual-boysさんのStarterKitにはお世話になりました。

 

シェーダーどうすんの?

VRC SDKにVRChat/Mobile/xxxxx系シェーダーがあるので、それを使う。

ベストはDiffuseあたりのだと思われるが、色指定ができないのでStandardから移行しようとしている人は大変だ。ちゃんとやるなら、色テクスチャを用意して必要に応じてモデル側にUV割り当てたりとかして、マテリアル統合とかするべきとは思うが、しんどい。

そこでVRC公式は移行しやすいよう、StandardLiteシェーダーを用意してくれたので、とりあえずはそれを使ってしまうが楽だ。特にCube並べ勢にはこのシェーダー追加は朗報だった。パフォーマンス改善は悪くなってから考えても遅くない*1

f:id:o_mega:20190622044018p:plain

(PC含め)Questでもイケるイカしたライティングをする

雰囲気をよくするにはライトを使え、ということでざっくりお勉強してきましょう。まずはUnityで一般的なライトの把握。参考記事 Unity、入門ライティング設定! - Qiita

 

Quest版VRChatではDirectionalLightぐらいしかリアルタイムライトは使えません。他を詰めていきます。あと、Environment(Ambient)も行ける(と思う)。

  • といっても影要らなかったらDirectionalLightも要らん
  • PointLightやEmission付きオブジェクトをばらまいて、ベイクすると(レンダリング軽いのに)シックでエモくなる。オススメ
  • Lightprobe付けると、アバターとかにちゃんと明るさが反映される。オススメ
  • PC用ならReflectionProbeを置くとテカテカした人たちが良い感じになる

のでこれをやっていく。やっていき!

ライトをベイクしろ?

公式は言っている「ベイクは必須です。リアルタイムライトは激重だ。Lightmapとprobe使え。Lightmapも低解像度で十分綺麗だから」「大丈夫だ。問題ない」

一般的にライトをリアルタイム処理すると重い。でもほとんどのワールド内のものは動かないじゃん? じゃあ光の当たり方を事前に計算して、テクスチャに"焼き込んで"おくと、リアルタイムじゃないのにそれっぽい影が作れる!というのがベイク処理(bake:焼く)。詳しくは「Unity ライト ベイク」とか「アンビエントオクルージョン」とかググって

 

Unityではとにかく動かないものにstatic属性をつけ、LightのModeをbakedにし、Window - Lightを開いてRealtime Lightingのチェックを外す。Mixed LightingのGlobal Illuminationをチェックする。AmbientOcclusionをチェックするとシックな雰囲気になる。Generate Lightmapを押そう。するとちょっと待たされた後、ベイクされる。Unity便利ですごい

 

内部的には影のテクスチャ画像を生成して持つため、データサイズが大きい。雑にベイクするとあっさり10MBオーバーのワールドになる。しょうがないにゃあ…

f:id:o_mega:20190622041347p:plain

とりあえずできたがQuest用は汚いし、データサイズもデカくてひどい*2

ベイク情報(Lightmap)を軽くする&&縞々で汚いのを対処する。

LightmapSettingsを詰めよう。

 

なんで縞々かというと、画像の圧縮ノイズだ。どうもPCとQuest/Androidではテクスチャ圧縮方式が違うようで、今回ほしいベイクテクスチャ(Lightmap)では特性が合わず、いい見た目にならないようだ*3。ので圧縮Compressionのチェックを外す。ただし、これは未圧縮になるためデータサイズが大きくなるので、併せて以下も行う

 

なんでサイズが大きいかというと、Unityがめっちゃ細かい影テクスチャを吐いていることに他ならない。なだらか~に明るい/暗いのが付けば雰囲気として今回はいいので、解像度を下げよう*4。今回はLightmap resolutionを40→10とした。これでサイズは理屈の上では1/16になるはずだ

なお、影解像度の低下が目立つ場合は、目立つGameObjectのLightmapだけ解像度を上げる手がある。RendererのLightmap - scale in lightmapを大きくすると、そのRendererだけLightmapの解像度があがる、とのこと。Unity公式ドキュメント

 

Lightmap sizeは… 正直よくわからん。ほどほどに小さい方が細切れになってメモリを効率よく使えそうだが、収まるなら少ない枚数のテクスチャに収まった方がいい気がする。極端に小さかったり大きかったりしなければいいのかな?

f:id:o_mega:20190622033616p:plain

最初に比べて解像度は1/4、Lightmapテクスチャは1/16になったが、なだらかできれいな影が付いた。データサイズも半分になり快適。ぶっちゃけ、PCでもこの解像度でいいやと思う程度には十分な品質だ*5*6

LightProbeって何?

LightProbe/LightProbeGroupというのは、Quest版VRChatでは「その空間明るさ情報」を事前計算した点、とそれをまとめたグループ。これがあると、ワールドの明るいところにいるアバターやモデルは明るく、暗いところにいるアバターやモデルは暗くなる*7。色が付いたライトがあればその色が付く。probeから離れた場所では、周辺のいくつかのprobeから平均をとって明るさを計算してくれる。詳しくは【Unity】モバイル向けのライトマップTipsと、ライトマップを動的に更新するHack - テラシュールブログあたりで詳細を

 

内部的な話をすると、データはprobeごとに色情報の数値として保存されるらしく、データサイズは非常に小さい。のであんまり最適化は考えず、てきとーにぽこぽこprobeを置いてやって良いと思われる。

基本的には「周辺の光がつよいところ(光源の近くやEmission付きマテリアルが光ってる近く)」と「暗いところ」と「光の強さが急に変わるところ(光線が遮蔽されてる壁)」に置くといいらしい。自動化ツールもあるらしいので、それを使うのもよさそうだ(が、自分は手配置した)

f:id:o_mega:20190622040121p:plain

Unity上ではLightProbeごとに線が引かれ、LightProbeの範囲が表示される。この空間内/近くなら、それっぽく明るさが決まるということだ

ReflectionProbeって何?(Quest不要)

ReflectionProbeはReflection、つまり反射の表現に使われる。鏡のように磨かれた鉄球に周囲の風景が映る、みたいなのをそれっぽく表現するための技術。これがあると、ワールド内に反射するものがあるか、反射するシェーダー付きのアバターがいるときにちゃんと風景が映って見える。フルフルにこれも計算すると重いので、ワールドの一部領域ごとに事前に360°撮影したテクスチャを用意しておき、その場所に来た時反射物にペタっと張ってそれらしく表現する。

 

が、これはシェーダー制限によってQuestにはないはず。PC版でのみ有効。

内部的には、前述のように360°画像テクスチャを持っているのでデータサイズは大きくなりがち。といっても、らしく反射すればいいのでそんな大きな解像度は割り当てなくていいんじゃないかな。部屋などの、周辺の風景がガラッと変わる場所ごとにProbeを設置する、ことが重要と思われる。

f:id:o_mega:20190622035951p:plain

オクルージョンカリングって?

まだ自分は手を出せてない。詳しくはUnity公式説明を読んで。視界外かどうかを事前計算しておいて、GameObjectごと消すことで処理を軽くする。

広いワールドや、部屋がたくさん分かれたワールドを作るときに思い出すとよさそうだが、現行小さめのワールドが多いQuestでそういうワールドが来る機会はあるのだろうか?探索して遊ぶワールドとかにはいいかもしれない?

モデルのテクスチャサイズをプラットフォーム毎に自動的に縮小する

Unityのプラットフォームごとのオーバーライドという機能を使えば、自動で環境ごとにリサイズして出力ができる。テクスチャのinspectorを見て、PC用(Default)はこういう設定、下枠に環境ごと設定がある

f:id:o_mega:20190622151737p:plain

ぱっと見よくわからないがコレはタブになっているので、右のAndroidアイコンを押して、Override for Androidを押すと、環境ごとに自動で設定が切り替える機能が有効になる。あとはSizeなりCompressionQualityをいじる。

f:id:o_mega:20190622151926p:plain

最終的にどうなる

基本的には

  • シェーダーをQuest用にする

だけでQuest不可なものを除いて、Questワールドは動くはず

加えて

  • ライトをベイクする。Lightmappを軽く、ノイズを対処する
  • テクスチャサイズをQuestだけ縮小

をするだけでサイズは劇的に小さく、イカした見た目になるはずだ

自作ワールドjust RedFlagは当初10MB程度あったものが、4MB以下になってる。もともとモデルでのテクスチャ利用がほとんどないマップだったとは言え、Lightmap改善だけで半分以下になった。見栄えをそこまで犠牲にせず、ロードも早くなって実によい。

VRC_xxx系コンポーネントはVideoPlayer以外制限が緩い

そう、気づいてる人はそれなりにいそうだが、VRC_xxxx系コンポーネントや許可されたUnityコンポーネントはだいたいが動く。そこにチャンスはある、と思う。

のでギミックやゲーム作る人には朗報ではないだろうか?というか今作ってる。Vケット3までには見せられる形にしたい

他雑多な話

  • 当たり前だが、QuestにVRCミラーは重い。が、Questは現状自撮りができないのでミラーは欲しい。ので離れたら消えるミラー、ON/OFF切り替えできるローカルミラー等を配置しよう
  • レンダーテクスチャを使うカメラ(例・virtual-boysさんのStarterKit付属のSimpleCameraなど)は割とすんなり動く。が、Quest相手にテクスチャサイズはあまり大きくない方が良いだろう。自分は1024にしている
  • Questでは距離に応じてテクスチャ解像度が切り替わるため、細かい文字を遠くから見る場面はつらい。配置するときは注意
  • 他、CrossplatformAvatarワールドや、あたらしいHubやHomeなどVRChat運営が作ったワールドを見て、何となく察する(ミラーの挙動とか解像度とか)
  • 究極的にはQuest買って自分で見に行く。自分はそうした。いいぞ

f:id:o_mega:20190622152838p:plain

↑はPC版での見栄え、背景のLightmap書き込みも悪くない質感だが、これでも低解像度。カメラのフラッシュを見るとPostProcessStackの効果でぼやっとしているのがわかる。これもポチポチするだけで視界がエモくなるので、オススメだぞ

いかがでしたか?

StandardLiteシェーダーをはっつけたCubeを並べ、Lightばらまいて綺麗で軽量なベイクができるだけで、なんかそれらしいQuestワールドは作れる。作れるんですよ。ほんとほんと。ワールドはアバターと違ってボーンだのアニメーションだのは必要ないし、アバター作るより絶対楽だぞ。

あとデータサイズがでかいのはだいたいテクスチャのせいなので、テクスチャサイズを小さくしましょう。圧縮は場面に応じて使い分けるとgood

*1:ほんとか?

*2:platform PCだとこの時点で綺麗にでてしまうので、スルーしている人も多いと思う。自分はした

*3:圧縮方式を切り替える手もあるかもしれない。未調査

*4:もともとUnityのデフォルト値が細かすぎるというのもある

*5:逆に考えると、Lightmapが1/16になったのにデータサイズは1/2にしかなっていない。Compressionは1/8サイズに圧縮をかけていたことがわかる

*6:もう一つ重要なのは「圧縮」は通信程度でしか有効ではない。PCやQuestにロードされた後はそのVRAM上で元のサイズに展開されて、それだけVRAMを消費してしまう。どの環境でもVRAMがあふれると劇的に速度が落ちるため、できるだけ回避したい。ので、圧縮を頑張るより、そもそも元のサイズを小さくすることがPC/Quest含めすべての面で有効だ

*7:当然明るさを見てくれるシェーダーでないと効果はないが、VRC SDKの推奨シェーダーはこれを見ている。少なくともToonLitやStandardLiteは見ているし、Arktoonのような一般的にVRCで使われるシェーダーは見ているので安心しよう。逆に明るさを見ないシェーダーにはUnlitとかがある

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 SDKで動作を確認したが、同じ方法で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」を取寄中