VRChat Questのテクスチャ形式はASTCにしよう
VRChat Quest向けアバターやワールドを作ってる/いじってる人はテクスチャの圧縮形式をRGB(A) Compress ASTCにするのがおすすめ。テクスチャのしましまが減ってキレイになるぞ
設定方法
プロジェクト全体設定
特にテクスチャ毎に設定してない場合はこの設定が優先されるはず?なので、とりあえず設定しとくと良さそう
Build Settings → Android → Texture Compression
ここがDon't Overwriteになってる場合は、デフォルトのETC形式で圧縮が掛かり、テクスチャが汚くなってしまう。ASTCを選ぶ
テクスチャファイル個別での設定
プラットフォーム別オーバーライドでテクスチャ毎のあれこれ設定している人はこちらも確認する。個別にテクスチャを自動縮小させたいときもこちらで
ここをASTCにする。
以上!それだけ
ファイルサイズ小さくしたいなら、MaxSizeも小さくしてやると、元画像を残したままUnityが自動で縮小してくれるぞ
他tips
ASTCってなんなの?どうしてASTCがデフォルト設定になってないの?
Android系デバイスでは長らくETC2が一般的なテクスチャ方式だったが、2012年に「ETC2を置き換える、より良い圧縮形式」としてASTC形式が作られた。で普及してきたのだけども、ASTCは対応しているSoCの端末でしか使えない。
圧縮形式としての性能はETC2より高いビットレートをサポート、ETC2よりちょっと高品質(半デシベル程度)とのこと。
端末の統一が取れてるiOSはともかく、様々な端末のあるAndroidではまだETCの方が確実に動いて安心のようだ。それでUnityのAndroidビルド設定では、デフォルト圧縮形式がETCになっている。
ここまで前提
だけれども、VRChatが動くOculusQuestは1機種しかない。Questが使っているSoC Adreno 540はちゃんとASTC対応している。ので高品質のASTCを使って問題ない、というわけ。
公式OculusがASTCにしろ、とも言っている。公式なら仕方ない…
使おうぜ
いっぱいバリエーションあるけど何使えばいい?
block4x4からblock12x12まで
- blockサイズが小さいほど、解像度が高くキレイ、ファイルサイズは大きく
- blockサイズが大きいほど、解像度が低く汚く、ファイルサイズは小さく
という様子。
6x6~8x8あたりが標準的っぽい?文字のようなノイズが目立つと困るテクスチャでは6x6ぐらいが良さそう。他であれば8x8より大きくても良さそう。
VRAM使用量は圧縮でどうなるの?
CEDEC2013『工程の手戻りを最小限に 圧縮テクスチャ(PVRTC・DXTC・ETC)における傾向と対策』発表資料 | OPTPiX Labs Blog を読むと、現行のGPUは対応しているテクスチャ形式(今回のASTC、従来のETC/ETC2、その他DXTCなど)については、圧縮状態のままVRAMに格納されるようだ。つまりVRAM使用量の削減として有効のようだ。
ということでQuestの場合は、何も考えずにすてきなASTC形式が使える。使って良い。
画質参考【Unity】iOSでASTCフォーマットのテクスチャ圧縮を使う - テラシュールブログ
参考記事 Unity+Oculus Quest 開発メモ - フレームシンセシス
OculusQuestをUSB接続しても内部ストレージが見れない時
どういう状態?
- OculusQuestをPCにつないでも、Questの内部ストレージ見れない
- 以前は問題なかったが、急に見れなくなった
- WindowsのエクスプローラーにQuestはいるが、開くと中身は空
- Quest側にも特に表示がない場合
対応方法
解決方法はUSBケーブルでQuestを接続した状態で、adbコマンドを流すとQuest側から「このパソコンを信用する」が出るようになる。信用するを選ぶと、無事ストレージが見れるようになる。
恐らく開発者モードに入れたのが影響してるようす。
自分のケースでは Oculus Quest の映像をテレビに映したりキャプチャする方法 - Qiita の記事に従って、scrcpyをすでにインストールしていたので、そこに付属のadbを使った。
Questを接続した状態で
とすると(恐らく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が押せるようになる
あとは普通にワールド作成をする。ミニマムだとVRC SDK内のexampleでもいいし、VRCWorld prefabをD&Dしてもいい。各種有志が公開しているワールド作成キットもいいぞ。ナルさんのStarterKitにはお世話になりました。
シェーダーどうすんの?
VRC SDKにVRChat/Mobile/xxxxx系シェーダーがあるので、それを使う。
ベストはDiffuseあたりのだと思われるが、色指定ができないのでStandardから移行しようとしている人は大変だ。ちゃんとやるなら、色テクスチャを用意して必要に応じてモデル側にUV割り当てたりとかして、マテリアル統合とかするべきとは思うが、しんどい。
そこでVRC公式は移行しやすいよう、StandardLiteシェーダーを用意してくれたので、とりあえずはそれを使ってしまうが楽だ*1。特にCube並べ勢にはこのシェーダー追加は朗報だった。パフォーマンス改善は悪くなってから考えても遅くない*2
(PC含め)Questでもイケるイカしたライティングをする
雰囲気をよくするにはライトを使え、ということでざっくりお勉強してきましょう。まずはUnityで一般的なライトの把握。参考記事 Unity、入門ライティング設定! - Qiita
Quest版VRChatではDirectionalLightぐらいしかリアルタイムライトは使えません。他を詰めていきます。あと、Environment(Ambient)も行ける(と思う)。
- といっても影要らなかったらDirectionalLightも要らん
- PointLightやEmission付きオブジェクトをばらまいて、ベイクすると(レンダリング軽いのに)シックでエモくなる。オススメ
- Lightprobe付けると、アバターとかにちゃんと明るさが反映される。オススメ
- PC用ならReflectionProbeを置くとテカテカした人たちが良い感じになる
のでこれをやっていく。やっていき!
ライトをベイクしろ?
公式は言っている「ベイクは必須です。リアルタイムライトは激重だ。Lightmapとprobe使え。Lightmapも低解像度で十分綺麗だから」「大丈夫だ。問題ない」
一般的にライトをリアルタイム処理すると重い。でもほとんどのワールド内のものは動かないじゃん? じゃあ光の当たり方を事前に計算して、テクスチャに"焼き込んで"おくと、リアルタイムじゃないのにそれっぽい陰が作れる!というのがベイク処理(bake:焼く)。詳しくは「Unity ライト ベイク」とか「アンビエントオクルージョン」とかググって
Lightingウインドウ*3を開いて。Realtime GIをオフに、Baked GIをオンにする。これでリアルタイムライトは機能しなくなり、負荷が軽くなる
動かないオブジェクトのinspectorを開いて、右上のstaticをチェックする。ライトは全部Modeをbakedにする。これによって、オブジェクトやライトがベイクの対象になる。逆に動くオブジェクト、PickupやAnimatorで動くものはチェックしないこと。
Lightingウインドウへ戻って、Generate Lightmapを押そう。するとちょっと待たされた後、ベイクされる。Sceneウインドウのワールドがシックになってるはずだ。Unity便利ですごい
AmbientOcclusionをオンにしてもいいだろう。凹みとかの陰が追加されるが、Lightmap解像度が低いと陰が回り込んでしまって、却って汚くなるかもしれない。この辺は様子を見て選ぼう
内部的には影のテクスチャ画像を生成して持つため、データサイズが大きい。雑にベイクするとあっさり10MBオーバーのワールドになる。しょうがないにゃあ…
とりあえずできたがQuest用は汚いし、データサイズもデカくてひどい*4。
ベイク情報(Lightmap)を軽くする&&縞々で汚いのを対処する。
LightmapSettingsを詰めよう。
なんで縞々かというと、画像の圧縮ノイズだ。どうもPCとQuest/Androidではテクスチャ圧縮方式が違う(追記 ASTC形式にすればマシのようだ)ようで、今回ほしいベイクテクスチャ(Lightmap)では特性が合わず、いい見た目にならないようだ*5。ので圧縮Compressionのチェックを外す。ただし、これは未圧縮になるためデータサイズが大きくなるので、併せて以下も行う
なんでサイズが大きいかというと、Unityがめっちゃ細かい影テクスチャを吐いていることに他ならない。なだらか~に明るい/暗いのが付けば雰囲気として今回はいいので、解像度を下げよう*6。今回はLightmap resolutionを40→10とした。これでサイズは理屈の上では1/16になるはずだ
なお、影解像度の低下が目立つ場合は、目立つGameObjectのLightmapだけ解像度を上げる手がある。RendererのLightmap - scale in lightmapを大きくすると、そのRendererだけLightmapの解像度があがる、とのこと。Unity公式ドキュメント
Lightmap sizeは… 正直よくわからん。ほどほどに小さい方が細切れになってメモリを効率よく使えそうだが、収まるなら少ない枚数のテクスチャに収まった方がいい気がする*7。極端に小さかったり大きかったりしなければいいのかな?
最初に比べて解像度は1/4、Lightmapテクスチャは1/16になったが、なだらかできれいな影が付いた。データサイズも半分になり快適。ぶっちゃけ、PCでもこの解像度でいいやと思う程度には十分な品質だ*8*9
LightProbeって何?
LightProbe/LightProbeGroupというのは、Quest版VRChatでは「その空間明るさ情報」を事前計算した点、とそれをまとめたグループ。これがあると、ワールドの明るいところにいるアバターやモデルは明るく、暗いところにいるアバターやモデルは暗くなる*10。色が付いたライトがあればその色が付く。probeから離れた場所では、周辺のrobeから平均をとって明るさを計算してくれる。詳しくは【Unity】モバイル向けのライトマップTipsと、ライトマップを動的に更新するHack - テラシュールブログあたりで詳細を
内部的な話をすると、データはprobeごとに色情報の数値として保存されるらしく、データサイズは非常に小さい。ので極端に多くなければ、ぽこぽこprobeを置いてやって良いと思われる。*11
基本的には「周辺の光がつよいところ(光源の近くやEmission付きマテリアルが光ってる近く)」と「暗いところ」と「光の強さが急に変わるところ(光線が遮蔽されてる壁)」に置くといいらしい。自動化ツールもあるらしいので、それを使うのもよさそうだ(が、自分は手配置した)
Unity上ではLightProbeごとに線が引かれ、LightProbeの範囲が表示される。この空間内/近くなら、それっぽく明るさが決まるということだ
ReflectionProbeって何?(Quest不要/PC専用)
ReflectionProbeはReflection、つまり反射の表現に使われる。鏡のように磨かれた鉄球に周囲の風景が映る、みたいなのをそれっぽく表現するための技術。これがあると、ワールド内に反射するものがあるか、反射するシェーダー付きのアバターがいるときにちゃんと風景が映って見える。フルフルにこれも計算すると重いので、ワールドの一部領域ごとに事前に360°撮影したテクスチャを用意しておき、その場所に来た時反射物にペタっと張ってそれらしく表現する。
が、これはシェーダー制限によってQuestにはないはず。PC版でのみ有効。
内部的には、前述のように360°画像テクスチャを持っているのでデータサイズは大きくなりがち。といっても、らしく反射すればいいのでそんな大きな解像度は割り当てなくていいんじゃないかな。部屋などの、周辺の風景がガラッと変わる場所ごとにProbeを設置する、ことが重要と思われる。
反射オブジェクトがなければ作らなくてもいいモノだが、中には反射マテリアルを付けたアバターがあなたのワールドを訪問するかもしれない。という時はとりあえず1個置いてあると、極端に変にならないのではないか?(消極的対応)
ちなみにReflectionProbeがない場合、反射マテリアルはSkyboxなどの背景を使うようだ。Probeがないと「部屋の中にいるのに、反射マテリアルには空が写ってる」ということが起きうる
オクルージョンカリングって?
まだ自分は手を出せてない。詳しくはUnity公式説明を読んで。視界外かどうかを事前計算しておいて、GameObjectごと消すことで処理を軽くする。
広いワールドや、部屋がたくさん分かれたワールドを作るときに思い出すとよさそうだが、現行小さめのワールドが多いQuestでそういうワールドが来る機会はあるのだろうか?探索して遊ぶワールドとかにはいいかもしれない?
モデルのテクスチャサイズをプラットフォーム毎に自動的に縮小する&&テクスチャ圧縮をASTC形式にする
Unityのプラットフォームごとのオーバーライドという機能を使えば、自動で環境ごとにリサイズして出力ができる。テクスチャのinspectorを見て、PC用(Default)はこういう設定、下枠に環境ごと設定がある
ぱっと見よくわからないがコレはタブになっているので、右のAndroidアイコンを押して、Override for Androidを押すと、環境ごとに自動で設定が切り替える機能が有効になる。あとはSizeなりFormatなりCompressionQualityをいじる。
もう一つ、ASTC形式にする話はページを分けた。VRChat Questのテクスチャ形式はASTCにしよう - おめが?日記_(2) ASTCはAndroidで使える(比較的)新しいテクスチャ圧縮形式でQuestは対応している、RGB Crunched ETC/ETC2と比べてかなりキレイなので何も考えずFormatはASTC*12にしてよいと思う
最終的にどうなる
基本的には
- シェーダーをQuest用にする
だけでQuest不可なものを除いて、Questワールドは動くはず
加えて
- ライトをベイクする。Lightmapを軽く、ノイズを対処する
- テクスチャをASTC形式にする
- テクスチャサイズをQuestだけ縮小
をするだけでサイズは劇的に小さく、かつ軽く、イカした見た目になるはずだ
自作ワールドjust RedFlagは当初10MB程度あったものが、4MB以下になってる。もともとモデルでのテクスチャ利用がほとんどないマップだったとは言え、Lightmap改善だけで半分以下になった。見栄えをそこまで犠牲にせず、ロードも早くなって実によい。
VRC_xxx系コンポーネントはVideoPlayer以外制限が緩い
そう、気づいてる人はそれなりにいそうだが、VRC_xxxx系コンポーネントや許可されたUnityコンポーネントはだいたいが動く。そこにチャンスはある、と思う。
のでギミックやゲーム作る人には朗報ではないだろうか?というか今作ってる。Vケット3までには見せられる形にしたい
他雑多な話
- 当たり前だが、QuestにVRCミラーは重い*13。が、Questは現状自撮りができないのでミラーは欲しい。ので離れたら消えるミラー、ON/OFF切り替えできるローカルミラー等を配置しよう
- レンダーテクスチャを使うカメラ(例・ナルさんのStarterKit付属のSimpleCameraなど)は割とすんなり動く。が、Quest相手にテクスチャサイズはあまり大きくない方が良いだろう。自分は1024pxにしている
- Questでは距離に応じてテクスチャ解像度が切り替わるため、細かい文字を遠くから見る場面はつらい。配置するときは注意、近づいて読めるようにしよう
- 他、CrossplatformAvatarワールドや、あたらしいHubやHomeなどVRChat運営が作ったワールドを見て、何となく察する(ミラーの挙動とか解像度とか)
- 究極的にはQuest買って自分で見に行く。自分はそうした。いいぞ
↑はPC版での見栄え、背景のLightmap書き込みも悪くない質感だが、これでもQuestあわせの低解像度。カメラのフラッシュを見るとPostProcessStackの効果でぼやっとしているのがわかる。これもポチポチするだけで視界がエモくなるので、オススメだぞ
いかがでしたか?
StandardLiteシェーダーをはっつけたCubeを並べ、Lightばらまいて綺麗で軽量なベイクができるだけで、なんかそれらしいQuestワールドは作れる。作れるんですよ。ほんとほんと。ワールドはアバターと違ってボーンだのアニメーションだのは必要ないし、アバター作るより絶対楽だぞ。
あとデータサイズがでかいのはだいたいテクスチャのせいなので、テクスチャサイズを小さくしましょう。まずはASTC形式にして、それでも足りなければプラットフォームオーバーライドで自動縮小させよう。圧縮は場面に応じて使い分けるとgood
*1:パフォーマンスはDuffuseなどのシェーダーと比べると良くないようだが、それでもQuestで十分速度が出て、かつStandardシェーダーと似たような設定ができる
*2:ほんとか?多分もっと抜本的な修正が必要なぐらい重くなってそう?
*3:UnityのメニューからWindow-Lighting-LightingSettingを開く
*4:platform PCだとこの時点で綺麗にでてしまうので、スルーしている人も多いと思う。自分はした
*5:圧縮方式を切り替える手もあるかもしれない。未調査
*6:もともとUnityのデフォルト値が細かすぎるというのもある
*8:逆に考えると、Lightmapが1/16になったのにデータサイズは1/2にしかなっていない。Compressionは1/8サイズに圧縮をかけていたことがわかる
*9:どうも現行のテクスチャ圧縮でGPUが対応している圧縮は、圧縮状態でVRAMに格納され、VRAMの使用量削減になるようだ。さらに読み出しも早いそうなので、画質が若干下がる以外は圧縮にはメリットしかないようだ
*10:当然明るさを見てくれるシェーダーでないと効果はないが、VRC SDKの推奨シェーダーはこれを見ている。少なくともToonLitやStandardLiteは見ているし、Arktoonのような一般的にVRCで使われるシェーダーは見ているので安心しよう。逆に明るさを見ないシェーダーにはUnlitとかがある
*11:厳密には、多くなるとCPUパワーが食われる?ので管理できる程度に配置しよう
*12:ATSC 6x6 blocksとかASTC 8x8blocksあたりから試してみる
*13:数人で集まってオンにするとフレームが半分になるぐらい重い
OculusQuestの感想。VRChat人口増えてるぞ
OculusQuest
あんなこと言っててアレだけど、OculusQuestを結局買った。公式から。
さっくり4,5日でFedex到着
これはすごい。ソフトの継続性は疑問だけど、お手軽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とプラットフォーム
- 設定はスマホのホストアプリで設定する形。決済設定も同様
- 初期設定で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
- XBox360のKinectダンスゲーの続編
- KinectからVR化したことで足のトラッキングはなくなってしまったが、代わりにダンスクラブの雰囲気を体験できるようになった。
- 各種操作を仮想スマホにまとめてるのがなかなか面白い。マップのテレポート移動、曲の選択、各種オプションに加えて、NPCとの会話ストーリーがメッセージアプリ上で展開していく。なかなか自然なUIで感動した
- 仮想スマホを投げ捨てるとちゃんとヒビが入るたのしい
- オンラインマルチがアバターがあったりとSNSを意識した作りになっているようなのだけど、まだ試せていない。
Quest版VRChat
- これこれ、これである。VRChatが動くのか?ちゃんと動くならこれが自分によってのキラーソフトで良い、ぐらいのつもりでQuest購入したとも言える。またはQuest対応アバターを作ってしまったので、自分の目で動作検証してみたくなったともいう
- 思ったより快適で違和感なく動く。とはいってもPC版アバターやワールドは表示されないが、Quest用ワールドの範疇ではそんな困らない
- 同一ワールドで近場10人を超えると音声プチプチが厳しくなる印象だが、PCでも15人ぐらいから厳しくなるので、こんなもんだろう
- カメラ機能がない。これは早く欲しいところだが、DanceCentralの類似機能にプレビューがなかったことを考えるとスペック的に厳しいのかもしれない
- 観測問題ではあるけど、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コンの操作方法の方が公式推奨の操作法だろう
ワールド自作、やってみたらできた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版ワールドの制約は相対的には少なく自由度があるように感じる?ワールド作成者にとっては、突如需要が沸いてる状態と思える
VRChatやVRMのアバター頭身をいじる(fbx修正不要)
VRChatかわいい(挨拶)
さて、VRChatやらで改変アバターをいじくってると「身長を伸び縮みさせたらどうなるか?視点も変わってなんか楽しくなるのでは!?」と思うこともあると思う。しかしそのままモデルを拡大縮小をすると、なんだか違う。フィギュアだか妖精さんだか、になってしまわない?
普通の人間は、身長が伸びたからって頭のサイズが劇的に変化したりしないし、高身長でスマートな人は手足が長い。小さい人は、一般的に胴体に対して手足が短く、頭が大きく縦長寄りになる。大きな人は、胴体に対して手足が長く、頭が小さく頭は上下に潰れる
のでモデリング作業ゼロ、Unityエディタ上だけでさらっと手足の長さと頭のサイズを調整し、低頭身ちびっこアバターや高頭身ナイスガイ・レディなアバターを作る
これはVRChat/VRC SDK2で動作を確認したが、同じ方法でVRMでも同様の修正が出来たので、下にVRMの場合も書く
Just作業
いつものUnity+VRC SDKでアバターをいじってるところからスタート。ちなみにこのアバターは火事屋さんのU10mk2(頭)と、同じくU10ユトver(胴体)をくっつけて、テクスチャやらマテリアルやら改変した状態。
もうかわいいのですが、説明すると左から高身長化(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倍して小顔気味にしている。
とりまこれだけで等身は変わるのだが、そうすると
床から浮いたり足がめり込んでしまう。VRChatに入ってもだいたいこの高さで浮いたり刺さる。グヌヌヌ…
なぜかというと、ここは推測だがVRChatはアバターの腰hipsボーンを掴んで動かしているらしい。腰の位置が変わらないため、足が伸びれば床を抜けるし、足が縮むと空中に浮くと思われる。
これを修正する
浮き/めり込み/接地を修正する
ボーンのScaleを変更すると「その部位から先」にScaleが適用される、ルートボーンのArmatureを修正すると「ちゃんと接地した状態で、全体のScaleが変わる」。これを活用して
と、Armatureには「接地調整のScale倍率を掛け」「その直上(この場合はHips)ボーンで、逆数を掛けて、接地調整分の倍率を相殺」「改めて足ボーンに倍率を掛ける」とだいたい狙った感じになった
さらに全体のスケールを調整する場合は、Hipsボーンに倍率をかければ良い。
でだいたい近い位置になると思うが、Hipsボーンの長さ?作り?で若干(2,3cm程度?)ズレるようなので、最終的には足ボーン(UpperLeg)のScaleを0.01単位ぐらいで調整し、接地させるのが良さそうだった
あと、アバターを選択すると、足場の線が出るっぽいのでそれをガイドに調整するとやはり良さそう
仕上げの視点調整を忘れずに
VRC_AvatarDescripterのViewPositionのY数値をいじって、視点ボールを目の辺りにあわせる。この辺は(やったことあれば)アバター制作の作業とおなじ。画像のように▼を押してPipeline Managerを畳んでおくと、(なぜか)ViewPosition調整がしやすい
あとはアップロードすればOK
VRMの場合
VRMでこの等身調整をする場合、公式の作業フローでは正規化前のモデルの段階で今回の修正をする
例えばfbxをインポートとしてVRM吐いてる場合
- fbxをインポートする
- fbxをヒエラルキーに置いて、等身をいじる(今回の作業)
- VRMをExport(正規化)
- ExportしたVRMを取り込んで、マテリアルやら表情blendshapeやら揺れものやライセンス、FirstPerson Offset(視点調整)等を設定する
- VRMをExport
- 完成
という感じで出来ました
いかがでしたか?
ちょっと違った改変で、ちょっと違った視点も手に入る頭身調整。同アバターと会ったときも単なる色違いだけでなく、なんか姉妹兄弟っぽさがでて、たのしい
低身長(110cmぐらい)でVRChatを過ごしていると、ワールドが150cm~160cmぐらいを基準に作られてて、低身長はなかなか大変なのが実体験できてまた面白い。ワールドによっては低身長向け台座が用意されていて、バリアフリーなことが体験できたり、逆にないワールドではバリアを体験できたり。なんでドアのハンドルが頭の位置にあるんだよ!みたいな体験がVRで楽しめるのはいい。150cmのアバターが背高く見えて、囲まれるとなかなか圧迫感があるとかも良い
おすすめ改変tipsでした
*1:ここではいじってないが、首(Neck)を縮めるのも良さそうだ
Oculus Questを買うべきかどうか。またはQuestはどういうプラットフォームか
結論
VRをOculusDK1から追っかけ、今はVive初代+Trakcer環境の自分からの意見として…、正直読めない。個人的には様子見を推奨する。3カ月経ってからもう一度考えていいと思う
OculusQuest、いろいろ考えたけど、「ハードは良さそうだが、先が読めない」という所で人にはオススメできない、というのが個人的な感じ。悩ましい。
— おめが( ゜ヮ゜)ノ (@Omegamega) 2019年5月3日
求めていた6DoF+コントローラ付き一体型だけど、普及するにはまだ価格がコンシューマではないし、ストアや開発情報の閉鎖性。
つよつよ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)からコンシューマゲーム機へ参入を決める、と見ると、かつてのXboxや3DOを思い出す光景でもある。
現行のPSVRが400万台の出荷を達成した、とニュースであった。現行コンシューマVRで一番売れているのはPSVRであることを考えると、Questがそこへどれだけ追いつけるかが一つの目安となりそう。
それまでは、Facebook/OculusがどれだけアプリをQuestに引き込み続けられるか、ローンチ後にどこまでソフト供給を出来るかによると思える
バーチャルマーケット2が凄くて、VRChatの楽しみ方がやっとわかった
もう先々週になるがバーチャルマーケット2がすごかった。
結論
- Vマーケット2すごかった。
- それを支える日本ユーザ、数も質もやばい。VRCすごい
- とはいえいきなりVRCの野原は初心者には厳しい。知り合いアテンドが欲しい
こんなにも日本人モデラーが集まって参加して、シームレスにマルチプレイのVRが楽しめることが過去あったであろうか、という新鮮さ。それぞれの世界のクオリティ。恐ろしく広いVRワールド。なぜこんな世界があるのを放置していたんだ自分は、という呆れ。すごかった
バーチャルマーケット2
やる前は、前々からVRChatアカウントはまああったり、SDKをつつくみたいなことは試していたんですが、いまいちピンと来ず…という状況。VRC界隈っぽい人を何人かフォローしていたノリでクラウドファンディングもbackしていた、やはりいまいちピンと来ておらず。一応Vケット2自体は凄そうなので、それに合わせてアバターでも用意しておくかー?というぐらいでSDKいじったりしていたものの、そもそもVRChatの何が楽しいのか、わからないまま当日を迎えた
という感じで金曜を迎えた。てっきり、土曜オープンだと思っていたので金曜0時は早いな、とは思いつつも、オープン直後のワイワイがTLから見れたので見に行くかと、トラッカー3つ付けつつVRCを起動した。
#バーチャルマーケット2 見てきた。すごいわ~
— おめが( ゜ヮ゜)ノ (@Omegamega) 2019年3月7日
とりま自分の名前を確認したりしつつ散策 pic.twitter.com/gSocmyqrKd
ちょうどtwitterフレンドがログインしていたので一緒に散策したのだが、これが大正解。不慣れな操作カメラ操作やら、AvatorCloneやら操作をあれこれ教えてもらいつつエントランスを見て回る。
やってることは現実でもよくある至って普通のことで、要は単に展示会があってそこを知り合いと2時間ほど散策した、というだけではある。VRらしい展示といえば、視界ジャックギミックがあったり、アバター着せ替えがあったり(これは強い)、ツクモの記念撮影ブースがあるとか、展示品を触って取っても落下しないし勝手にリスポーンしてくれる、とか。お手を触れないでください、が一切不要で近づける。それはそうだ。これらギミックは確かに面白い。
面白いが個人的には、そういうギミックはプラスアルファの面白さであって、土台の面白さは別に感じた。VRで、複数人でわいわい散策して写真が撮れる。それもかなり自然に。そこに素敵なワールドが、様々な展示ブースが、試着できるkawaii/かっこいいアバターが、展示小物がマッチする。素晴らしい相乗効果だ。って、なんでこんなにモデルデータを公開してくれる人がたくさんいるんだ。すごい。
「うおー、ここからの景色すごい」「あっちのアバターちょっと着て見よう」「めっちゃかわいい」「あっちにまだブースあるみたいよ」「おーい、どこ行った?」などとボイチャしながらワールドを散策できる。VRワールド内で迷子になったりする。んで写真が取れる。自撮りが捗る。VR旅行だ。
#バーチャルマーケット 昨日エントランスと1ワールド回ったから、そんな歩かなくてええやろ、と思ってたら、「そんなワールドがあと8ある」と言われてヤバい。広すぎる。1ワールド1時間としても10時間。
— おめが( ゜ヮ゜)ノ (@Omegamega) 2019年3月8日
今日は2ワールド自撮りしながら散策したら、もうヘトヘト。回り切れるのかコレ pic.twitter.com/5JP2e4kLO6
などと理解して、エントランスに続きモクリバサールAを巡ったところで気づく。
Vケット2は土日で終わる。全400ブース?10ワールド?あと8ワールドもある。ざっと巡った感じ1ワールドに1時間ぐらい使っているじゃないか…。おいおい、正気か!?一週間ぐらいVケット開催してくれ!頼む!これは時間がない!!
すぐさま友人のVR持ち勢に声をかけて、土曜日に走り回ったわけだ。「アテンドするから、はよVマーケット2へ来い!VRCにログインしろ!」
#バーチャルマーケット 買ったアバターで走り出す。今回は異世界マルシェを散策。自撮りはかどるU10mk2かわいい
— おめが( ゜ヮ゜)ノ (@Omegamega) 2019年3月9日
汽車が城壁の上走ってたりしてすごい pic.twitter.com/Ju50Jrrnmj
#バーチャルマーケット の #バーチャルミュージアム
— おめが( ゜ヮ゜)ノ (@Omegamega) 2019年3月9日
白背景はユニークだけどちょっと酔いやすい?これは現実感が低くて方向性がとんがってるわー
演出装置すごい、完全にあの絵が作れておもしろい。 pic.twitter.com/fNlPH4FwGr
現実感が低めなバーチャルミュージアムに、現実感が高いブースがいるのも面白い。VR不動産 pic.twitter.com/oL4E4xiaPd
— おめが( ゜ヮ゜)ノ (@Omegamega) 2019年3月9日
あ、買ったアバターは こちら火事屋さんのU10mk2ちゃん。かわいい自撮りが捗る。VRC SDK試しておいてよかった… kawaiiアバターがすっと買って使える。
かなり駆け足で会場巡った感じでしたが、バーチャルマーケット2たのしかったです。すごいイベントだった pic.twitter.com/VHOewSYDH6
— おめが( ゜ヮ゜)ノ (@Omegamega) 2019年3月10日
そんな感じで土日が溶けてしまった。すごい。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いこうぜ。おすすめのワールドがあるんだ」
今日はアテンドしてもらって大満足の大疲労 pic.twitter.com/jIRWAitQBD
— おめが( ゜ヮ゜)ノ (@Omegamega) 2019年3月15日
あ、これすごい普通のセリフになった。VRなんだけど