禁断の果実Pimax 5k+

ViveCosmosが発売された昨今、どうでしょうか。Lighthouse対応は来年までお預けにやや未完成感の漂うCosmos、おま国のIndex、ViveProはもっともベターだけど面白さに掛ける安定感だしちょっと古いかな…ということで初代Vive勢としてはアップグレードパスに非常に悩ましいタイミングになってしまいましたよ。

 

そこであえてピーキーかつLighthouse対応、国内入手可能という要件を満たすPimax5k+を、my new gear…♪してしまったのでそのレビューを

f:id:o_mega:20191022165022p:plain

比較対象はVive初代(Pre-order仕様) + DX AudioStrap、VivePro(借り物)、OculusQuest(装着感など)です。

動作環境は

  • Core i7-9700K
  • 32GB
  • GeForce GTX1070(8GB) 

f:id:o_mega:20191022163238p:plain

ダイジェスト

総合性能

  • 高解像度、視野角全振りに間違いはない。革新的に広い。左右だけでなく上下にも5°ほど拡大しているが、これがかなり強く効き、空気感のある広さを感じさせる。ただし、視野が広がった分、解像度に取られるため、中心部解像度においてはViveProと同程度?気持ち細かいぐらいの差に留まる
  • ただし、パネルの色味は悪く、全体的に低コントラストで白くモヤが掛かった印象。明るい場面では比較的気にならないが、暗い場面ではやはり気になる
  • 他機能はAudioStrapなしのVive程度に留まる
  • GPU性能はやはり要求される。スタンドアロンゲーならそこまで困らないが、1070でVRChatするにはやはり画質を犠牲にするしかない。1070の場合、SteamVRの推奨SS値は30~50%程度
  • 左右のパネルが並行でないこと、視野が広すぎること由来の、アプリ側描画問題が起きることがある。これはアプリ側の問題のため、根本対応は難しい
  • Viveと比べると、ベースステーション、コントローラ、トラッカーの電源連動のようなBluetooth便利機能は使えなくなるため、単純な上位互換としては使いづらい
文句なしに良い
  • 広い視野角。メガネのフチを越えて世界が描画されるのはすごい。斜め向きながらBeatSaberができるし、VRChatでも横にいる人を感じれる
  • 液晶の格子/ドットの粒子感はかなり低い。「粒子感を見てやろう」という気を起こしたり、SteamVRの内部解像度*1が低いとドットがチラついてわかる程度
  • 軽い。初代ViveやQuestが重いだけともいうが、Pimaxの横長ボディの割には軽い
  • ケーブルが細くて軽量。ただし本体から脱着不能、長さがViveと比べると短い。とはいえ天井吊りとかしなければ問題ないレベル
まあ良い/思っていたほどではないが良い
  • 初期装備のヘッドバンドはVive付属品よりは良く、OculusQuest未満といった印象。初期パーツとしては悪くない。イヤホン運用はだるいが、ViveAudioStrapを移植する有志のモデルデータはあるので改善はできそう*2
  • 電源ボタンがある。不要かと思ったが、デバイス切り離せるので割と便利
  • SteamVRのSS値自動設定、Pitoolの広角設定で1070でも画質は犠牲になるものの、そこまで問題なく動く。画質は犠牲になるが…(後述)

f:id:o_mega:20191022165212p:plain

気になるが許せる
  • 液晶は白く、彩度は低い。コントラスト低め。暗い場面では白いモヤが掛かったような絵になるのは残念だが、色が狂っているわけではないので慣れるといえばそう
  • 視界周辺に歪みの癖がある。横方向に長いレンズのせいか、左右外側Viveの視野の外ぐらいで、特徴的な視界の歪みがあり、特に頭を振った時に気になる。が、これも1時間ぐらいで慣れる。メガネを買い替えたときのような気分
  • 顔のクッションはVive初期装備同様のスポンジ。とはいえ今ならいろんな交換パッドがあるので、交換するには困らないだろう
  • Vive*3やOculusQuest*4にある奥行き調整機能はない。リーフツアラーのレンズフレームでかなりギリギリで自分の場合は鼻の接触する。メガネでも同様、自分の場合はそれなりに入ったがやはり鼻に当たる。鼻へ掛かる圧が気になる場合は厚いクッションを選択する、専用インナーフレームを用意する*5といった手になりそう
  • バンドの都合、重心バランスはViveやQuest同様の前寄り。公式の追加アクセサリModularAudioStrap/VisionComfortの販売に期待
  • 独自のPiToolとSteamVRの連携に気を使う。この辺はWinMR寄りは簡単だが、素のSteamVRよりは難しい印象。設定値が多く、問題発生時に切り分けに悩む
  • PiToolのほんやくがあやしい所がある
対策が難しい/悪い
  • Viveと比べるとゴーグルの顔への密着度が高く、蒸れやすい
  • ベースステーション、コントローラ、トラッカーの自動オンオフ連動はできない。コントローラとトラッカーは時間切れでオフになるが、ベースステーションBT連動に頼っていた人*6はコンセント・スイッチを付けるなりの対応が必要
  • (いくつかのアプリでは)視野角180°オーバーの弊害が出る。オクルージョンカリングによるオブジェクトのチラツキが発生ししたり*7、カメラ方向に依存する実装?で左右目が違う絵になる*8。平行投影モードで対策可能だが、再起動が必要になる
  • SuperSamplingをいじると途端にGPU性能の壁が立ちはだかる。VRChatのミラーを恐れるようになる重さ
  • 広がった視界の分だけVR酔いしやすくなる
罠的なもの
  • Viveがつながってる状態だと、HMDの視界がブレることがある。USB含め外しておくべき
  • コントローラやトラッカーはPiToolからペアリングする

f:id:o_mega:20191022164829p:plain

初回インストールでPiToolがHMDを認識せず、あれこれ右往左往した以外は、割と順当に動いて拍子抜けした。Viveと共存させると、いろいろバグった挙動を見せたので、HMDは必ず1つだけ接続するのが良いようだ。

 

付属するベルトはこんな感じ。オーソドックスに左右と上のベルトを、マジックテープで締める形だが、ゴムバンドになってる部分が後頭部の二股下側のみになっているため、締付け感は少ない。悪くない感触だ。締めつけ感が少なくなった分、左右&頭頂バンドの調整はセンシティブになっている

f:id:o_mega:20191031043215p:plain

とはいえ、とりあえずDX AudioStrap(以下DAS)化した。ViveからAudioStrapを外して、3Dプリントで接合パーツを作って接合する。左右のヒンジはベルトが短くできるこれ頭頂ベルトの留め具はこれを使わせてもらった。ありがたい!誤家庭の3Dプリンタで吐いたあと塗装して色味合わせ

f:id:o_mega:20191031041053p:plain

フェイスパッド交換しつつ、DASを装着するとこう、非常にしっくりした見た目になる。が、Viveと根本的に取り付け位置が異なるせいか、大きな頭向きの寸法になってしまった

f:id:o_mega:20191031041106p:plain

装着してみると、なるほどVive感だ。少なくともベルトよりはカッチリとしたサポート感になった。イヤホンの面倒さもない。ただ、借りたViveProと比べるとやはり重心バランスや、おでこと後頭部で支える感じは乏しく、顔のホホで支えてる感じは残る。この辺の旧式感は否めない。

公式から予定されているModular Audio Strapアクセサリは写真みるかぎり、VivePro風になっているので期待したいところだ。おでこサポートのVisionComfortKitも別になっていてトータル$170掛かる、となるとうーん、重要パーツを別売にされているというかViveProと比べると不完全状態でリリースされている印象は否めない

 

 

SS値をいじって遊ぶ

SS値、SuperSampling値とは。

【VR】内部解像度 (Super Sampling) で VR 体験はどれだけ変わるのか?この記事が詳しい。ざっくり言うと、HMDへ投射する前段階として内部レンダリングをしていて、そこの解像度の大きさ/比率を設定するパラメータだ。ざっくり「100%で中心部解像度がHMDに対して1:1比程度になり、小さいほど軽量&低解像度、大きいほど高負荷&高解像度」だ。HMDごとにパネル解像度が異なることに注意

体感では、50%を下回ると低解像度のジャリジャリ感が厳しい。50%~120%あたりは値に合わせて解像度感が高まる。120%以上ではイマイチ区別がつかなくなり、200%以上は実用性がない、という感触。

何も設定してないSteamVRであれば、GPUHMDの組み合わせから勝手に決定される。一時期「ViveProを買うなら、GPUを強くすると解像度感が上がる」という噂があったが恐らくこの自動設定されるSS値が理由。手動で設定することもできる。

Vive/ProとGPUの組み合わせにおけるSS値はここが参考になる。例えば自分の以前の環境、1070+Viveなら132%のように

 

手動設定はSteamVRでは2箇所あり、アプリケーションと動画*9のそれぞれにあり、アプリケーションならアプリごとに、動画だと全体設定ができ、最終的にそれの掛け算で機能する。またアプリによっては、独自に内部解像度設定を持つもの*10もあり、恐らくSteamVRのSS値に更に掛け算する形で機能すると思われる

f:id:o_mega:20191031045154p:plain

1070+Pimax5k+の組み合わせでは44%が推奨されたものの、100%で上書きしてる図。かなりブーストしてやるとキレイにはなるがfpsが犠牲になってガタガタになる。パネルのdotbydot…ではないけど100%出せないのは悲しくない?

 

VRChatへ戻るとやはりGPU性能がつらい。BeatSaberとかGoogleEarthVRとか、他であればそんな気にならないのだけど、VRChatはやはりヤバい。SS値30%~40%ぐらいなら安定するのだけれども、それでもローカルミラーが怖くなってしまった。比較的重いJapaneland Skyの雲シェーダーでは15fpsを下回るような場面も出てきた。5kの解像度を活かせない…力がほしい…

力(SS値)が欲しいか…(そんなものはない。現実は無慈悲である)

f:id:o_mega:20191031042411p:plain

動作環境を更新した

  • Core i7-9700K
  • 32GB
  • GeForce GTX1070(8GB) → RTX2080super(8GB) 

…あれ?それほど早くなってない?いやもちろん1070よりは劇的にマシにはなったのだけど、「すっげー快適!!さすが2080superさんやで!」というほど早くないというか。SteamVRの推奨SS値は80%程度まで上がったものの、100%を達成できないのはこの機材投資に対してちょっと悲しくないですか?私、能力は平均上のつよつよなPCって言ったよね?Vive+1070よりPimax5k+2080sの方が体感で性能が出てないような…?

f:id:o_mega:20191031050304p:plain

2080superを持ってしても推奨SS値86%

 

ということでちょっとざっくり試算してみる。

HMDピクセル

  • Vive 2160x1200
  • RiftS 2560x1440 = Vive比1.42倍
  • VivePro,Quest,Index 2880x1600 =Vive比1.78倍
  • ViveCosmos 2880×1700 =Vive比1.89倍
  • Pimax5k+ 5120×1440 =Vive比2.84倍

一方、GPUのベンチスコアを見ると…、2080superは1070のわずかに1.6倍程度のスコアしかない!えっマジ!? そりゃ性能不足になるわけだ。面積2.84倍の要求に、1.6倍のパワーしか供給できてないとすると、総力的には44%減である。しかもVRAM容量は変化してない

これが2080Tiになると、シェーダーコア数が2080superの1.3倍になり、1070比で約2.0倍になる。えっ、2倍しかならないの!? つらい…、いやまあ不足していると言われるVRAMが8GBから11GBに増えるならTi化は有効なのかもしれないが…。

一応この2080super、2080Tiの先にRTX TITANがいるが、シェーダーコア数はほとんど増えず、VRAMが増えるだけであり、それでもって価格ははるか彼方へ飛んでいってしまう。まったく実用的ではない。VRChatは無料。どうして…

 

…うーん仕方ないので忘れよう。PCはたしかにつよつよになったはずなんだ。当分このままで

Pitoolの設定あれこれ

Pimaxには設定ツール、というかSteamVRと連携するシステムツールPitoolがあり、割と設定値が多い。

f:id:o_mega:20191031050627p:plain

スマートフレーム

OculusやViveがやってる「フレーム描画が間に合わなかった時に、前フレームの絵でなんとか頑張る」やつのPimax版

固定注視点レンダリング

FixedForveatedRenderingのこと。OculusQuestがやってるような、周辺視野部分だけ解像度を下げてレンダリングコストを下げる機能。解像度を下げるといっても滑らかに下がるわけではないため、解像度の段差が見えてしまう、周辺視野がジャリジャリした解像度になる違和感は多少あるものの、わりとちゃんと機能している気はする。パフォーマンス、バランス、画質優先の3段階設定。設定が即反映されるが、アプリ起動中に変更するとクラッシュ要因か。

機能としては面白く、視界が変化するのは面白いのだけど、負荷削減効果についてはいまいちピンと来なかった。SS値を下げた方が明確に性能影響が出る感触

この機能は、RTX20x0系のみ有効になるらしく、他GPUではそもそも項目がないらしい。1070の時にはなく、突然生えたように見えたので驚いた。

並行投影対応

要SteamVR再起動。Pimaxは他のHMDと違い、左右の目が並行でない(液晶パネルがPimaxボディの見た目の通り斜めに設置されている)ため、左右でガチャ目になってしまうアプリがある*11。その対策なのだが、かなり残念な画質になり立体感もなんだか変になる。ので実用的かいうと、無いよりはマシだが微妙な感じだった。

視野角

文字通り、即座適用される。Pimaxの売り広視野角を削るモードといえばそうなのだが、視界端でモノがオクルージョンでチラついて邪魔、少しでもGPUパワーをセーブしたい時に使える。広い、標準、狭いの3段階で、標準でもメガネより広い範囲をカバーするので普段使いには標準が良い感じだ。狭めた分だけGPUパワー要求も減ると思われる

f:id:o_mega:20191031050701p:plain

 クオリティ

良くわからない。恐らくSS値の倍率設定と思われる?

ざっとこんな感じ?良くわからないというか、公式に設定の説明がない?

いかがでしたか?

まとめは前述の通り、Pimax5k+は視野角に全部を注ぎ込んでおり、それ以外のHMD性能はViveCE(AudioStrapなし)前後の性能をイメージしてもらえればだいたい良い。この視野角はたしかに禁断の果実とも言うべき「広さ」を提供してくれる。この広さの味はたしかにすごい。既存のHMDが狭い双眼鏡か何か見えてくるぐらいのインパクトはある。

ただしこの拡大したパネルを十分に支えられるGPUは、特にVRChatの必要性能に関しては現実に存在しないオーパーツだ。

 

比較対象にViveProを借りて装着してみたり、また店頭デモでCosmosも触れてみたが、性能バランス面ではこちらが間違いなく良い。特に装着感、頭に載せた時の安定性や顔に重量が乗らない感触はVive+AudioStrapとは別次元の快適性になっていて、スペックに出にくい点でViveの後継機と言わせるだけの出来を感じた。普通に買うならそっちだろう*12

 

そういう総合的な快適性にはPimax5k+は到達しておらず、そういう意味ではOculusDK2の後継機というかDeveloperKit感触が残る。無骨さと、足りないGPU性能、それでも広い視野角が欲しいか、どうか

*1:SuperSampling設定、デフォルトではGPU性能に従って大小する。SteamVRの設定で手指定もできるし、Beatsaberなどではアプリ側にも設定値がある

*2:3Dプリンタ/プリントサービスに手が届けば

*3:ヘッドバンド付け根を引っ張って回すとHMD全体がせり出してメガネが入れやすくなる機能

*4:簡易版。スペーサーが付属し、必要に応じてクッションと本体の間に挟むことでメガネが入れやすくなる

*5:ユーザ数的に言って自作になりそう、難易度たけえ…

*6:わたしです( ^o^)ノ

*7:VRChatやSteamHomeでは分かりやすく起きる。気になるが視界ギリギリ端で発生するだけで致命的ではない

*8:RezInfiniteなど。こちらは致命的に遊べない

*9:Videoの誤訳っぽい。正しく訳すならそのままビデオ(オーディオの項目があるので)か、映像とすべき

*10:BeatSaberなど

*11:例えばRez Infiniteとか

*12:Cosmosのトラッキング性能はまだ残念な感触だったが…、という意味では今HMDを買うのは本当に悩ましい時期だ。とはいえ恐らく、OculusRiftS/ViveCosmos/ValveIndexと今世代が揃ってしまったし2,3年は、PCVRは当分このままの可能性は高そうと踏んでいる

RecRoom、VRChat、PublicとF+、電話、公園デビュー、現実のソーシャル

 適当な脳内メモです

  • VRChatのF+運用文化によって、多くのユーザはSocialを辿ってjoinするようなプレイスタイルに変化する
  • これは初心者に優しくないので高い脱落率は納得が行く
  • しかしF+は居心地の良さも提供しているため、一度住み着くと離れづらい
  • F+制御システムは現実でも同様な振る舞いはあり、現実でも似たような問題がある
  • VRChatはだいたい現実mostly real

VRChatをなんとなく初めるとコケる問題

 なぜなら何もシステム的なフォローがないから。TwitterFacebook、pixiv、mixiなら興味のありそうなユーザをサジェストしてくる、フレンドのフレンドを手繰っていける… だがVRChatにはそれがない*1

かくいう自分もVRChat自体の開始は去年だが、今年のVケット2までハマることがなかった

RecRoomを見てきた

RecRoomにはフローが設計されている。Public前提である。ミニゲームに突っ込まれる、遊ぶ、クリアしたら握手してフレンドになる、フレンドが増える。ポイントがもらえてアバターカスタマイズができるようになる。

これはこれで正しい(その思想に同意できれば)

VRChatにはフローがなく、しばしばpublicを彷徨って脱落する

一方でVRChatにはやることが無い。恐ろしいほどなく、初心者はとりあえずVRのpublicの街角へ放り出される

混沌としたpublicたまり場もあるが、初心者が事前情報なしに見つけるのは困難だ。慣れたプレーヤーほど会員制クラブともいうべきフレンドプラス(通称F+)なインスタンスへ流れがちになる

F+は見知った仲間で過ごせる。まったり過ごす、すやすやワールドが増える。

 

一方で初心者は治安の悪いpublicを散策して脱落してしまう*2

アクティブフレンドを十分作ると見える地平。Worldタブ or Socialタブ

Socialにアクティブなフレンドが増えると流れが変わる。

VRChatへjoinしたら、メニューを開いてWorldタブからいつものpublicたまり場を目指す、そういうプレイから、Social欄からフレンドを見てjoinするようになる段階へ変わっていく。WorldタブからSocialタブへ重視していくタブが切り替わる。

 

イベントをよく開催したり、人が集まりやすいハブ的なユーザーを見つけてjoinしたりすると、更にフレンドが増える。アクティブなフレンドが増えると、更にどのインスタンスに集まっているか、単独行動しがちなフレンド、グループ行動をするフレンドの輪が見えてくる。ますまずフレンドにjoinしやすくなるサイクルが回りだす。そうするとWorldタブからpublicインスタンスを選ぶ理由はほとんど無くなる。

 

しかしここまで行くのがメチャクチャ遠いのだ*3。VRChatのフローはおかしい。

いや、たまたまこう実装してしまって、それに人が慣れたか着いたかかはわからないが、そう回るようになったのだろうなあ

PublicとF+

VRChatのまずおかしいところはこれだ。交流させる設計なら、RecRoomのように強制publicの方が正しい。インスタンスがバラける、人が集まらない、分散するプライベートインスタンスがシステム的に整備されている不思議。人と出会えない、オンライン引きこもりを加速するソーシャルVR、VRChat

 

F+に籠もるとコミュニティは拡大しない。じわじわ構成メンバーが減少して最終的に消滅に至る。増やすには人を取り込むしかないが、F+は外部からは見えない。つまり、プライベートインスタンスへの誘導が強いVRChatは消滅が運命付けられている、…はずだ

 

しかしちょっと考える。ソーシャルって何だ?Twittermixifacebook?と考えると、非同期のテキストソーシャルと比べ、VRChatはリアルタイムなので特性が違う。

電話、しかも正座待機してないと電話が取れない「呼び出し音なし固定電話」がVRChatには近いのではないか?

ボイスチャットサービス・電話を初めたときの最初の相手は?

電話にグループボイスチャットが付いたぐらい、がVRChatのソーシャル機能と言えるように思う

じゃあ、電話と比較しよう。最初に電話を始めたときどうした?リアルの友達から電話番号を教えてもらったり、今なら親から受け取ったスマホに自宅や親の番号がすでに入っていたりしなかった?

 

電話を初めるとき、リアルのソーシャルネットワークを電話のソーシャルに持ち込んでいる。LINEとかslackとかDiscordとか。リアルの交友のある人から「これ便利だよ。連絡に使おう」と言われて初めることが多いと思う。それだ。

VRChatもこの系列なんじゃないか?VRChatを一人で初める、というのは、LINEを一人で始めたり、通話相手なしで電話を初めるようなものなんじゃないか?

付添い親なしで公園デビューできるのか?何もなしに会話の輪ができるのか?

そうすると、一人でpublicのたまり場へ馴染みに行くには、「子供が親同伴なしで公園デビューを果たす」ぐらいの難易度がありそう。適切なpublicたまり場を知らなければ、まず公園にたどり着けないだろう。たどり着けたとして、公園の輪に参加できるだろうか

 

そういう場合、話題になるネタがあるといい*4

例えばデートに映画を使う、なにかのイベントを見に行くとか、買い物に付き合ってくれとか、アスタリスクの花言葉*5も話題の提供と、それによって会話の輪を作ることに一つ目的がある、はず。

RecRoomの場合はこれをミニゲームとして実装しているが、VRChatは完全にワールドに依存している。そしてSDKミニゲームの様なインタラクションを作るには向いていなく、pickupのごっこ遊びが大多数

 

かつてMMORPGが高級チャットツールと言われたが、本当に(ボイス)チャットだけにしてしまったのがVRChatとも言える。MMORPGRPGにオンラインとチャットを付けたことで、ゲーム攻略をネタに会話をさせることができたが、VRChatはそこすら捨ててしまった

現実のソーシャル

現実でも単に会ったから、合流したから、といって会話が弾むのはかなり少数だと思う。満員電車で隣に並んだ人と和気あいあいと雑談になるケースは稀だ。家族や友だち、知り合い、仕事仲間、小さなソーシャルネットワーク内で会話をしている。これは現実のF+だ。これらが縮小して自然消滅したり解散してしまうことはある。

 

現実の勉強会や各種サークル活動、イベント等をpublicに募集した結果、拡大して制御不能になったり、コストを支払えずに分解するケースもある。

publicの治安悪化、制御困難と、F+の自然消滅リスクは現実でもある。つまりこの辺のソーシャルネットワークの制御が難しいのは、現実でも同じであり、多分人類全体の*6仕様じゃないかなあ

 

VRChatのソーシャル問題はだいたい*7現実*8というオチが見えてきたので、思考終了

 

あとまあ、VRChatは「日本語が通じる異世界旅行」「VRなりきりチャット」とかに近いんでは?とも思うので、現地の風習とのギャップで困惑する、みたいなのもありそう。

そもそも知らない人と会い続けるのは楽しいのか、とか

*1:Socialの一番下にランダムなアクティブユーザはいるが…。恐らくほとんど使われていないだろう

*2:そういう意味では、publicなのに人が居着いて治安がよいワールドは稀有でありがたいわけですよ。恐らくは、少数の有志が精力的に維持している。そういうパターンは観測した

*3:個人的にはフレンド200人ぐらいで到達した印象だが、フレンドのアクティブ率や本人のプレイ時間帯に依存するのでなんとも言えない。自分のケースでは、Questリリースのユーザ増加タイミングにVRChat QuestユーザDiscordに合流できたことも強い

*4:ネタがあると、環境のコンテキストがあると簡単なジェスチャーでも伝わるようになる。VR無言勢はその辺の表現力が高くていいですね

*5:これについてはいろいろ書いた方がいいような気もしつつ、いまいち纏まっていないんだけど、とりあえずヨツミさんありがとう。ただ、こう言えるのは一緒に協力できたフレンドがいてくれたこと、そしてクリアを達成できたことによる所も強く、万人におすすめできるコンテンツではないとは思う。でもこれは好きなコンテンツだったよ。あと、これは完全に個人的なイメージなんですけど、ヨツミさんは(beyond the reality:betaでも感じてきたけど)360°又は720°又は1080°あたり捻った豪速球を叩き込んで来るスタイルと認識してまして、今回のアスタでもその認識を再確認し深く納得すると共に、どうしてここまで捻ったストレートボールを打ち出せるのか、打ち出すパワーがあるのかと感心していますありがとう

*6:ここクソデカ主語

*7:代替ではなく「だいたい」mostly

*8:とはいえVRChat内のコミュニティ維持は現実より低コストではある気がする。VRバイスや通信代は掛かるとはいえ、場所代や現実で会うためのコストよりは安く、プレゼンス/存在感は他の通信手段より高いと感じる。ほにゃらら集会が数多く開催されているように。個人的なイメージだけど

最近の日記

VRChatしかしてない…

  • 何かしらVRChatからみの事をやっているはずだけど、Steamの時間はあんまり伸びて無くて、そろそろ300時間というところ。
  • なくとんさんからリプを貰ったりして、Animator沼が分かってきた気がする。VRC運営は当初Animatorの仕様をどこまで把握していたのだろうか?
  • CyanLaser ClimbingPrefabのpackageチラ見してみたけどやべー。やっぱりコードリーディング?が腕を上げる近道だなあと思う次第
  • StandardAssetsとuGUIも触らねば…
  • just Redflagワールド製作は一段落した。と思ってたけど、微妙に小物ネタが浮かんでしまうのが悩みどころ
  • Flightunit Test用に、視界が広い新しい飛行ユニットのモデルデータが欲しいなあと思いつつblenderしてたけどいまいちいいアイデアが無く… 旋回ギミックだけ早く付けたい
  • あ、Quest対応カメラ配布はじめました
  • フレンド人数が200人ぐらいに到達し、結構アクティブな方がOnlineで見れる様になった。最近の公式ウェブページ更新で「フレンドが集まってるインスタンスが分かる」ようになったのが本当に素晴らしい。ChromeExtensionでもできていたが挙動が不安定だったこともあり、公式で機能が取り込まれたのは神。おかげでコミュニティが可視化されて、自分のフレンド上でも1,2箇所ぐらいはたまり場的なものができてるのが見えてjoinしやすくなった。…あとはVRC内からこれが見れれば完璧だ。予定されているUI更新に期待
  • アスタリスクの花言葉が来たと思ったら、クリアできる前にVケットが来てしまい生活崩壊しております。とにかく可処分所得時間を食うネタがVRChatだけで多すぎる…。体操とSilentClubと筋肉部も行きたいけど、そもそも時間被っとるやんけ!!!!VRChatをやるだけのバーチャル身体が3体ぐらいほしい

VRChat Questでワールドを作るとき、参考にしたい実例ワールドとパーツ類

Quest対応ワールドを作りたいけど何使っていいか分からない

わからんのわかる。

詳しくは公式を見よ、ではあるんだけど、ざっくり翻訳すると

  • 透過シェーダー(Transparent/AlphaCutout)はほぼ禁止。が独自シェーダーは使える
  • VRC_SyncVideoPlayer,SyncVideoStremは禁止。置くと壊れるので、Questアップロード前にコンポーネントをオフにしろ
  • 他はだいたい使えるが負荷に注意ね

という感じ。逆に言うと、そのほかのVRCコンポーネント由来や、カメラ、Animatorなどのギミックは使える。シェーダー芸は要注意だが、判別付かない気もする。

PC版でワールド作っていて、それをQuest対応するならポリゴン数とかシェーダー依存の表現(透明や反射)ですかね。ポリ数が多いのについてはモデルを削減するしかない。テクスチャだけとかならUnityのプラットフォーム別オーバーライド機能で縮小とか使えるんだけど

 

つまり「制約は多い」とは言われるけど、(VideoPlayerを例外とすれば)多くは描画と表現であって、ギミックは制約はないと言ってもいいんじゃないかな?

使える具体例

他にもたくさんありそうだけど、Questで実際にワールド散策するしかない気がする?

実例ワールド集

この辺はQuest勢に紹介するのもよさげ。

Quest勢は見栄えのいいワールド難しいせいか、見栄えよりギミックを好む感じはあります。が、別に見栄えバリバリワールドが苦手なわけでもなく、単に作るのが難しい

実例を見てワールドを作る時の注意

ざっくり

  • 最初からQuest対応を考えた、つよつよワールド
  • 先にPC版があり、後からQuest対応をしたワールド

の2系統のワールドに加え

  • 作者がQuest持ってないようで負荷チェックできてない
  • Quest持ってるらしくそこそこ軽量/すげー軽量

なワールドがあります。こればっかりは仕方ないんですが、その辺参考にする時はどっちかな?というのを考えてみると良さそう

パフォーマンス問題

ギミック制約はない、とは書いたが、パフォーマンスの問題は残る。つまり重いかそうでもないか。

ただ、そのパフォーマンスチェックは問題で、Questユーザに来てもらうか、究極的には自分がQuestユーザになるしかない。そこは如何ともし難いです。

 

お金に余力あればQuest買ってみてよ是非!と言いたくなってしまうけど、まあ自分がガジェット趣味でQuest対応初めたら買ってしまうしかない気持ちになってしまったところもあり、強くは推しづらい…。いやQuestは良いんだけど、やっぱりPCVR持ってると用途被っちゃうし、それだけのために5万円は厳しいよね

あと自分の記事をおすすめする

過去記事です

それはそうと、いいかんじなQuest対応水面シェーダーあれば教えて下さい

 

VRChat Questのテクスチャ形式はASTCにしよう

VRChat Quest向けアバターやワールドを作ってる/いじってる人はテクスチャの圧縮形式をRGB(A) Compress ASTCにするのがおすすめ。テクスチャのしましまが減ってキレイになるぞ

設定方法

プロジェクト全体設定

特にテクスチャ毎に設定してない場合はこの設定が優先されるはず?なので、とりあえず設定しとくと良さそう

Build Settings → Android → Texture Compression

f:id:o_mega:20190724024914p:plain

ここがDon't Overwriteになってる場合は、デフォルトのETC形式で圧縮が掛かり、テクスチャが汚くなってしまう。ASTCを選ぶ

テクスチャファイル個別での設定

プラットフォーム別オーバーライドでテクスチャ毎のあれこれ設定している人はこちらも確認する。

f:id:o_mega:20190724025644p:plain

ここをASTCにする。

以上!それだけ

他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にしろ、とも言っている。公式なら仕方ない…

使おうぜ

いっぱいバリエーションあるけど何使えばいい?

f:id:o_mega:20190724025810p:plain

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接続しても内部ストレージが見れない時

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してもいい。各種有志が公開しているワールド作成キットもいいぞ。ナルさんのStarterKitにはお世話になりました。

 

シェーダーどうすんの?

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

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

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

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 ライト ベイク」とか「アンビエントオクルージョン」とかググって

 

 Lightingウインドウ*3を開いて。Realtime GIをオフに、Baked GIをオンにする。これでリアルタイムライトは機能しなくなり、負荷が軽くなる

f:id:o_mega:20190727095648p:plain

動かないオブジェクトのinspectorを開いて、右上のstaticをチェックする。ライトは全部Modeをbakedにする。これによって、オブジェクトやライトがベイクの対象になる。逆に動くオブジェクト、PickupやAnimatorで動くものはチェックしないこと。

f:id:o_mega:20190727100027p:plain

Lightingウインドウへ戻って、Generate Lightmapを押そう。するとちょっと待たされた後、ベイクされる。Sceneウインドウのワールドがシックになってるはずだ。Unity便利ですごい

AmbientOcclusionをオンにしてもいいだろう。凹みとかの陰が追加されるが、Lightmap解像度が低いと陰が回り込んでしまって、却って汚くなるかもしれない。この辺は様子を見て選ぼう

 

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

f:id:o_mega:20190622041347p:plain

とりあえずできたが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。極端に小さかったり大きかったりしなければいいのかな?

f:id:o_mega:20190622033616p:plain

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

LightProbeって何?

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

 

内部的な話をすると、データはprobeごとに色情報の数値として保存されるらしく、データサイズは非常に小さい。ので極端に多くなければ、ぽこぽこprobeを置いてやって良いと思われる。*11

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

f:id:o_mega:20190622040121p:plain

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

ReflectionProbeって何?(Quest不要/PC専用)

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

 

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

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

f:id:o_mega:20190622035951p:plain

反射オブジェクトがなければ作らなくてもいいモノだが、中には反射マテリアルを付けたアバターがあなたのワールドを訪問するかもしれない。という時はとりあえず1個置いてあると、極端に変にならないのではないか?(消極的対応)

ちなみにReflectionProbeがない場合、反射マテリアルはSkyboxなどの背景を使うようだ。Probeがないと「部屋の中にいるのに、反射マテリアルには空が写ってる」ということが起きうる

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

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

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

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

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

f:id:o_mega:20190622151737p:plain

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

f:id:o_mega:20190622151926p:plain

もう一つ、ASTC形式にする話はページを分けた。VRChat Questのテクスチャ形式はASTCにしよう - おめが?日記_(2) ASTCはAndroidで使える(比較的)新しいテクスチャ圧縮形式でQuestは対応している、RGB Crunched ETC/ETC2と比べてかなりキレイなので何も考えずFormatはASTC*12にしてよいと思う

最終的にどうなる

基本的には

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

だけでQuest不可なものを除いて、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買って自分で見に行く。自分はそうした。いいぞ

f:id:o_mega:20190622152838p:plain

↑は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のデフォルト値が細かすぎるというのもある

*7:一般的に、テクスチャ枚数が少ない方がGPUに優しい

*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:数人で集まってオンにするとフレームが半分になるぐらい重い